posts - 89, comments - 241, trackbacks - 0, articles - 1
             :: 首頁 ::  :: 聯系 :: 聚合  :: 管理

          Linux下Squid代理服務器的配置(轉)

          Posted on 2009-12-18 08:24 saobaolu 閱讀(1146) 評論(0)  編輯  收藏 所屬分類: Linux操作系統

          Linux下Squid代理服務器的配置(轉)

          啟動squid時如果不在squid.conf中設置主機名將無法啟動,必須要設置visible_hostname這個參數值,本文中,設置的主機名是服務器的真實機器名powersite,在squid.conf中找到該項并修改:
          visible_hostname linuxserver

          你想讓所有員工僅在上班時可上網,而且不允許192.168.1.23這臺主機上網,可以加入這樣的配置:
          # 將以下ACL添加到squid.conf的ACL配置部分
          acl home_network src 192.168.1.0/24
          acl business_hours time M T W H F 9:00-17:00
          acl RestrictedHost src 192.168.1.23
          # 將這些內容添加到squid.conf的http_access配置部分
          http_access deny RestrictedHost
          http_access allow home_network business_hours

          你只想在早晨這段時間允許員工訪問Internet:
          # 將以下ACL添加到squid.conf的ACL配置部分
          acl mornings time 08:00-12:00
          # 將這些內容添加到squid.conf的http_access配置部分
          http_access allow mornings

          Squid支持從外部讀取包含有web站點或域名的文件進行ACL限制。在下面的例子中創建了兩個文件,/etc/squid/allowed-sites.squid和/etc/squid/restricted-sites.squid,很明顯,一個是允許訪問的站點文件,另一個是限制訪問站點文件。
          # vi /etc/squid/allowed-sites.squid
          www.163.com
          www.yahoo.cn

          # vi /etc/squid/restricted-sites.squid
          www.sex.com
          sex.com
          然后配置在工作時間允許或限制訪問的目標站點,以下的ACL配置和前面的略微不同:
          #
          # 將以下ACL添加到squid.conf的ACL配置部分
          #
          acl home_network src 192.168.1.0/24
          acl business_hours time M T W H F 9:00-17:00
          acl GoodSites dstdomain "/etc/squid/allowed-sites.squid"
          acl BadSites dstdomain "/etc/squid/restricted-sites.squid"

          #
          # 將這些內容添加到squid.conf的http_access配置部分
          #
          http_access deny BadSites
          http_access allow home_network business_hours GoodSites

          根據IP地址限制Web訪問
          這個ACL訪問控制列表可以限制整個一個網段,功能還是很強的。
          #
          # 將以下ACL添加到squid.conf的ACL配置部分
          #
          acl home_network src 192.168.1.0/255.255.255.0
          然后添加http_access允許這個ACL:
          #
          # 將這些內容添加到squid.conf的http_access配置部分
          #
          http_access allow home_network

          設置Squid為透明代理
          如果客戶端連接網絡,就需要在瀏覽器設置Squid代理服務器,這是件比較麻煩的工作,而且代理服務器的地址或端口更換,每臺服務器都必須重新設置才能生效,想解決這個問題,可以使用透明代理的方法。透明代理就是使用iptables防火墻將squid的3128端口的請求全部轉發到HTTP的80端口,從而實現透明代理。
          2.6內核版本之上:新版本的squid只需要修改成如下的內容即可。默認是“http_port 3128”,要將其改為“http_port 3128 transparent”的形式:
          另外還要配置iptables防火墻
          在下面兩個例子中,作為防火墻的服務器有兩塊網卡,連接Internet的eth0和連接內網的eth1,同時防火墻也是內網的網關。
          如果Squid服務器和防火墻在一臺服務器上,那么所有的HTTP80端口的請求將轉發到Squid服務的配置端口3128上。
          iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128
          iptables -A INPUT -j ACCEPT -m state --state NEW,ESTABLISHED,RELATED -i eth1 -p tcp --dport 3128
          iptables -A OUTPUT -j ACCEPT -m state --state NEW,ESTABLISHED,RELATED -o eth0 -p tcp --dport 80
          iptables -A INPUT -j ACCEPT -m state --state ESTABLISHED,RELATED -i eth0 -p tcp --sport 80
          iptables -A OUTPUT -j ACCEPT -m state --state ESTABLISHED,RELATED -o eth1 -p tcp --sport 80
          如果Squid服務器和防火墻在不同的服務器上,iptables的規則將有所不同:
          iptables -t nat -A PREROUTING -i eth1 -s ! 192.168.1.100 -p tcp --dport 80 -j DNAT --to 192.168.1.100:3128
          iptables -t nat -A POSTROUTING -o eth1 -s 192.168.1.0/24 -d 192.168.1.100 -j SNAT --to 192.168.1.1
          iptables -A FORWARD -s 192.168.1.0/24 -d 192.168.1.100 -i eth1 -o eth1 -m state
          --state NEW,ESTABLISHED,RELATED -p tcp --dport 3128 -j ACCEPT
          iptables -A FORWARD -d 192.168.1.0/24 -s 192.168.1.100 -i eth1 -o eth1 -m state --state ESTABLISHED,RELATED -p tcp --sport 3128 -j ACCEPT

          Squid的密碼驗證
          1) 創建密碼文件。密碼和用戶名存放在/etc/squid/squid_passwd文件中,并需要將這個文件的權限設置為其它用戶只讀。
          # touch /etc/squid/squid_passwd
          # chmod o+r /etc/squid/squid_passwd
          (2)使用htpasswd添加用戶,并設置密碼。添加用戶不需要對squid進行重啟操作,我創建的用戶名是www
          # htpasswd /etc/squid/squid_passwd www
          New password:
          Re-type password for user www
          #
          (3)找到ncsa_auth命令的具體位置,后面的配置需要用到絕對路徑
          # which ncsa_auth
          /usr/sbin/ncsa_auth
          (4) 然后我們就要在squid.conf文件中定義驗證程序了,創建名為ncsa_users的ACL并加入關鍵字REQUIRED來強制讓Squid使用NCSA驗證方法。
          #
          # 在squid.conf的auth_param部分添加下列內容
          #
          auth_param basic program /usr/sbin/ncsa_auth /etc/squid/squid_passwd

          #
          # 將以下ACL添加到squid.conf的ACL配置部分
          #
          acl ncsa_users proxy_auth REQUIRED

          #
          # 將這些內容添加到squid.conf的http_access配置部分
          #
          http_access allow ncsa_users



          沒有所謂的命運,只有不同的選擇!
          主站蜘蛛池模板: 沁阳市| 聂拉木县| 武平县| 张北县| 车险| 临武县| 翁牛特旗| 桐梓县| 类乌齐县| 邯郸县| 平江县| 云安县| 浦北县| 连州市| 双桥区| 惠东县| 铜梁县| 青铜峡市| 贺兰县| 伊宁市| 仙桃市| 罗田县| 蛟河市| 昔阳县| 镇宁| 南召县| 报价| 楚雄市| 洞口县| 西青区| 万宁市| 石楼县| 电白县| 黄大仙区| 广饶县| 新丰县| 余庆县| 崇礼县| 西城区| 平泉县| 凉山|