通過配置透明代理伺服器,實作以下目标:
- 實作本地區域網路中的所有主機均可以通過代理伺服器通路Web伺服器
- 用戶端使用代理通路Web服務時,浏覽器無需提前配置代理伺服器
- 代理伺服器除了承擔代理外,還需要實作網關路由的功能
- 用戶端測試是否可以使用代理伺服器通路外網的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所示。
圖-5
Squid代理伺服器需安裝的軟體包:squid
Web伺服器需安裝的軟體包:httpd
2.3 步驟
實作此案例需要按照如下步驟進行。
步驟一:建構web伺服器
1)使用yum安裝web軟體包
- [root@svr5 ~]# yum -y install httpd
- .. ..
- [root@svr5 ~]# rpm -q httpd
- httpd-2.2.15-29.el6_4.x86_64
2)啟用httpd服務,并設為開機自動運作
- [root@svr5 ~]# service httpd restart ; chkconfig httpd on
- Stopping httpd: [FAILED]
- Starting httpd: [OK]
httpd服務預設通過TCP 80端口監聽用戶端請求:
- [root@svr5 ~]# netstat -anptu | grep httpd
- tcp 0 0 :::80 :::* LISTEN 2813/httpd
3)為Web通路建立測試檔案
在網站根目錄/var/www/html下建立一個名為index.html的首頁檔案:
- [root@svr5 ~]# cat /var/www/html/index.html
- <html>
- <title>Welcome</title>
- <body>
- <h1>hello</h1>
- <h2>hello</h2>
- </body>
- </html>
步驟二:部署Squid代理及網關伺服器
1)使用yum安裝squid軟體包:
- [root@svr5 ~]# yum -y install squid
- [root@svr5 ~]# rpm -q squid
- squid-3.1.10-19.el6_4.x86_64
2)修改/etc/squid/squid.conf配置檔案:
- [root@svr5 ~]# vim /etc/squid/squid.conf
- http_port 3128 transparent //設定透明代理
- visible_hostname squid.svr5.com //設定主機名
- cache_mem 128 MB //記憶體緩存
- cache_dir ufs /var/spool/squid 200 16 128 //硬碟緩存
- http_access allow localnet //允許本機所在網絡中的所有主機使用代理伺服器
3)配置網關路由功能:
- [root@svr5 ~]# vim /etc/sysctl.conf
- net.ipv4.ip_forward = 1 //開啟路由轉發功能
- [root@svr5 ~]# sysctl -p
- [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端口轉發
- [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端口轉發
- [root@svr5 ~]# service iptables save //保持防火牆規則
4)啟動squid服務,并設定為開機啟動:
- [root@svr5 ~]# service squid restart; chkconfing squid on
- Stopping squid: [FAILED]
- init_cache_dir /var/spool/squid...
- Starting squid: . [ OK ]
5)squid服務預設通過TCP 3128端口監聽用戶端請求:
- [root@svr5 ~]# netstat -anptu | grep 3128
- tcp 0 0 :::3128 :::* LISTEN 3213/(squid)
步驟三:用戶端測試
1)将用戶端的網關位址設定為192.168.4.5
- [root@svr5 ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0
- DEVICE="eth0"
- BOOTPROTO="static"
- IPADDR=192.168.4.100 //設定IP
- GATEWAY=192.168.4.5 //設定網關
- ONBOOT="yes"
- TYPE="Ethernet"
2)用戶端開啟浏覽器通路Web伺服器
- [root@svr5 ~]# firefox 172.16.16.172
3)分别登陸代理伺服器及Web伺服器,檢視日志檔案檢查效果
- [root@svr5 ~]# tailf /var/log/squid/access.log //squid代理伺服器日志
- 1429596067.371 21 192.168.4.100 TCP_MISS/200 478 GET http://172.16.16.172/ - DIRECT/172.16.16.172 text/html