1. 程式人生 > >用Ubuntu架設透明的Squid代理伺服器

用Ubuntu架設透明的Squid代理伺服器

Squid是全功能的HTTP/1.0代理伺服器,也近乎完整的相容HTTP/1.1。Squid提供豐富的訪問控制、認證和日誌環境用以網站代理伺服器和內容服務應用。

本文簡單介紹瞭如何架設一臺透明Squid代理伺服器。Squid可用於HTTP,HTTPS,FTP等網站的快取代理伺服器。它能通過快取和重用那些經常被訪問的網頁l來降低頻寬,改善反應速度。Squid有很強的訪問控制,是一個出色的伺服器加速器。

安裝Squid
安裝squid和squid-common
sudo aptitude install squid squid-common

編輯squid配置檔案
sudo vi /etc/squid/squid.conf

設定允許的網站
acl internal_network src 192.168.1.0/24
http_access allow internal_network

上面的192.168.1.0/24是指你的IP範圍。

設定正確的許可權

sudo chown -R proxy:proxy /var/log/squid/
sudo chown proxy:proxy /etc/squid/squid.conf

需要重啟生效
sudo /etc/init.d/squid restart

現在開啟網頁瀏覽器,設定代理伺服器為新的squid伺服器,埠為3218

認證

如果要給squid代理伺服器新增認證功能,你需要安裝apache2 utilities
sudo aptitude install squid squid-common apache2-utils


新增第一個使用者,你需要指定-c

sudo htpasswd -c /etc/squid.passwd first_user

以後再新增使用者

sudo htpasswd /etc/squid.passwd another_user

編輯squid配置檔案

sudo vi /etc/squid/squid.conf

設定認證引數和acl

auth_param basic program /usr/lib/squid/ncsa_auth /etc/squid.passwd
auth_param basic children 5
auth_param basic realm NFYE Squid proxy-caching web server
auth_param basic credentialsttl 3 hours
auth_param basic casesensitive off
acl users proxy_auth REQUIRED
acl sectionx proxy_auth REQUIRED
http_access allow users

至此,你的squid.conf檔案內容應該類似下面

acl all src 0.0.0.0/0.0.0.0
acl internal_network src 192.168.1.0/24
acl users proxy_auth REQUIRED
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl to_localhost dst 127.0.0.0/8
acl SSL_ports port 443 563 # https, snews
acl SSL_ports port 873 # rsync
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 563 # https, snews
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 1025-65535 # unregistered ports
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http
acl Safe_ports port 631 # cups
acl Safe_ports port 873 # rsync
acl Safe_ports port 901 # SWAT
acl sectionx proxy_auth REQUIRED
acl purge method PURGE
acl CONNECT method CONNECT
http_access allow manager localhost
http_access allow users
http_access allow internal_network
http_access deny manager
http_access allow purge localhost
http_access deny purge
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localhost
http_access deny all
http_reply_access allow all
icp_access allow all

重定向所有HTTP通訊
如果你需要在你所有應用程式裡使用代理伺服器又不想手動設定,你需要新增如下規則

iptables -t nat -A PREROUTING -i eth1 -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.0.1:3128
iptables -t nat -A PREROUTING -i eth0 -p tcp -m tcp –dport 80 -j REDIRECT --to-ports 3128

在這裡,eth1和eth0分別對應LAN介面和WAN介面,192.168.0.1是LAN裝置的IP。

如果你要監控代理伺服器的效能,你可以使用一些日誌分析工具,比如sarg,calamaris等等。