天天看點

SQUID透明代理伺服器

通過配置透明代理伺服器,實作以下目标:

  1. 實作本地區域網路中的所有主機均可以通過代理伺服器通路Web伺服器
  2. 用戶端使用代理通路Web服務時,浏覽器無需提前配置代理伺服器
  3. 代理伺服器除了承擔代理外,還需要實作網關路由的功能
  4. 用戶端測試是否可以使用代理伺服器通路外網的Web伺服器

2.2 方案

使用3台RHEL6虛拟機,其中一台作為Squid代理伺服器/網關伺服器,該伺服器用來連接配接兩個網段,是以需要配置兩塊網卡,位址分别為192.168.4.5和172.16.16.1。一台作為用戶端測試主機,IP位址為192.168.4.100。一台作為外網Web伺服器,IP位址為172.16.16.172,拓撲如圖-5所示。

SQUID透明代理伺服器

圖-5

Squid代理伺服器需安裝的軟體包:squid

Web伺服器需安裝的軟體包:httpd

2.3 步驟

實作此案例需要按照如下步驟進行。

步驟一:建構web伺服器

1)使用yum安裝web軟體包

  1. [root@svr5 ~]# yum  -y  install  httpd
  2. .. ..
  3. [root@svr5 ~]# rpm  -q  httpd
  4. httpd-2.2.15-29.el6_4.x86_64

2)啟用httpd服務,并設為開機自動運作

  1. [root@svr5 ~]# service  httpd  restart  ;  chkconfig  httpd  on
  2. Stopping httpd:                                        [FAILED]
  3. Starting httpd:                                        [OK]

httpd服務預設通過TCP 80端口監聽用戶端請求:

  1. [root@svr5 ~]# netstat  -anptu  |  grep httpd
  2. tcp        0        0        :::80        :::*        LISTEN        2813/httpd

3)為Web通路建立測試檔案

在網站根目錄/var/www/html下建立一個名為index.html的首頁檔案:

  1. [root@svr5 ~]# cat /var/www/html/index.html
  2. <html>
  3. <title>Welcome</title>
  4. <body>
  5. <h1>hello</h1>
  6. <h2>hello</h2>
  7. </body>
  8. </html>

步驟二:部署Squid代理及網關伺服器

1)使用yum安裝squid軟體包:

  1. [root@svr5 ~]# yum  -y  install  squid
  2. [root@svr5 ~]# rpm  -q  squid
  3. squid-3.1.10-19.el6_4.x86_64

2)修改/etc/squid/squid.conf配置檔案:

  1. [root@svr5 ~]# vim /etc/squid/squid.conf
  2. http_port 3128 transparent                        //設定透明代理
  3. visible_hostname squid.svr5.com                //設定主機名
  4. cache_mem 128 MB                                //記憶體緩存
  5. cache_dir ufs /var/spool/squid 200 16 128        //硬碟緩存
  6. http_access allow localnet                        //允許本機所在網絡中的所有主機使用代理伺服器

3)配置網關路由功能:

  1. [root@svr5 ~]# vim /etc/sysctl.conf
  2. net.ipv4.ip_forward = 1                        //開啟路由轉發功能
  3. [root@svr5 ~]# sysctl -p
  4. [root@svr5 ~]# iptables -t nat -A PREROUTING -i eth1 -s 192.168.4.0/24 -p tcp --dport 80 -j REDIRECT --to-ports 3128                    //開啟NAT端口轉發
  5. [root@svr5 ~]# iptables -t nat -A PREROUTING -i eth1 -s 192.168.4.0/24 -p tcp --dport 443 -j REDIRECT --to-ports 3128                    //開啟NAT端口轉發
  6. [root@svr5 ~]# service iptables save            //保持防火牆規則

4)啟動squid服務,并設定為開機啟動:

  1. [root@svr5 ~]# service  squid restart; chkconfing squid on
  2. Stopping squid:                                            [FAILED]
  3. init_cache_dir /var/spool/squid...
  4. Starting squid: .                                          [  OK  ]

5)squid服務預設通過TCP 3128端口監聽用戶端請求:

  1. [root@svr5 ~]# netstat  -anptu  |  grep 3128
  2. tcp        0        0        :::3128        :::*        LISTEN        3213/(squid)

步驟三:用戶端測試

1)将用戶端的網關位址設定為192.168.4.5

  1. [root@svr5 ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0
  2. DEVICE="eth0"
  3. BOOTPROTO="static"
  4. IPADDR=192.168.4.100                                    //設定IP
  5. GATEWAY=192.168.4.5                                    //設定網關
  6. ONBOOT="yes"
  7. TYPE="Ethernet"

2)用戶端開啟浏覽器通路Web伺服器

  1. [root@svr5 ~]# firefox 172.16.16.172

3)分别登陸代理伺服器及Web伺服器,檢視日志檔案檢查效果

  1. [root@svr5 ~]# tailf /var/log/squid/access.log            //squid代理伺服器日志
  2. 1429596067.371     21 192.168.4.100 TCP_MISS/200 478 GET http://172.16.16.172/ - DIRECT/172.16.16.172 text/html

繼續閱讀