W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
正向代理服務(wù)一般是針對企業(yè)內(nèi)部的所有員工設(shè)置的,鑒于每位員工所掌握的計算機知識不盡相同,如果您所在的公司不是IT行業(yè)的公司,想教會大家如何使用代理服務(wù)也不是一件容易的事情。再者,無論是什么行業(yè)的公司,公司領(lǐng)導(dǎo)都希望能采取某些措施限制員工在公司內(nèi)的上網(wǎng)行為,這時就需要用到透明的正向代理模式了。
“透明”二字指的是讓用戶在沒有感知的情況下使用代理服務(wù),這樣的好處是一方面不需要用戶手動配置代理服務(wù)器的信息,進(jìn)而降低了代理服務(wù)的使用門檻;另一方面也可以更隱秘地監(jiān)督員工的上網(wǎng)行為。
在透明代理模式中,用戶無須在瀏覽器或其他軟件中配置代理服務(wù)器地址、端口號等信息,而是由DHCP服務(wù)器將網(wǎng)絡(luò)配置信息分配給客戶端主機。這樣只要用戶打開瀏覽器便會自動使用代理服務(wù)了。如果大家此時并沒有配置DHCP服務(wù)器,可以像如圖16-12所示來手動配置客戶端主機的網(wǎng)卡參數(shù)。
圖16-12 配置Windows客戶端的網(wǎng)絡(luò)信息
為了避免實驗之間互相影響,更好地體驗透明代理技術(shù)的效果,我們需要把客戶端瀏覽器的代理信息刪除(即圖16-6的操作),然后再刷新頁面,就會看到訪問任何網(wǎng)站都失敗了,如圖16-13所示。
圖16-13 停止使用代理服務(wù)后無法成功訪問網(wǎng)站
有些時候會因為Windows系統(tǒng)的緩存原因?qū)е乱廊荒芸吹骄W(wǎng)頁內(nèi)容,這時可以換個網(wǎng)站嘗試一下訪問效果。
既然要讓用戶在無需過多配置系統(tǒng)的情況下就能使用代理服務(wù),作為運維人員就必須提前將網(wǎng)絡(luò)配置信息與數(shù)據(jù)轉(zhuǎn)發(fā)功能配置好。前面已經(jīng)配置好的網(wǎng)絡(luò)參數(shù),接下來要使用8.3.2節(jié)介紹的SNAT技術(shù)完成數(shù)據(jù)的轉(zhuǎn)發(fā),讓客戶端主機將數(shù)據(jù)交給Squid代理服務(wù)器,再由后者轉(zhuǎn)發(fā)到外網(wǎng)中。簡單來說,就是讓Squid服務(wù)器作為一個中間人,實現(xiàn)內(nèi)網(wǎng)客戶端主機與外部網(wǎng)絡(luò)之間的數(shù)據(jù)傳輸。
由于當(dāng)前還沒有部署SNAT功能,因此當(dāng)前內(nèi)網(wǎng)中的客戶端主機是不能訪問外網(wǎng)的:
C:\Users\linuxprobe>ping www.linuxprobe.com
Ping 請求找不到主機 www.linuxprobe.com。請檢查該名稱,然后重試。
第8章已經(jīng)介紹了iptables與firewalld防火墻理論知識以及策略規(guī)則的配置方法,大家可以任選其中一款完成接下來的實驗。劉遄老師覺得firewalld防火墻實在太簡單了,因此決定使用純命令行的iptables防火墻管理工具來演示部署方法。
要想讓內(nèi)網(wǎng)中的客戶端主機能夠訪問外網(wǎng),客戶端主機首先要能獲取到DNS地址解析服務(wù)的數(shù)據(jù),這樣才能在互聯(lián)網(wǎng)中找到對應(yīng)網(wǎng)站的IP地址。下面通過iptables命令實現(xiàn)DNS地址解析服務(wù)53端口的數(shù)據(jù)轉(zhuǎn)發(fā)功能,并且允許Squid服務(wù)器轉(zhuǎn)發(fā)IPv4數(shù)據(jù)包。sysctl -p命令的作用是讓轉(zhuǎn)發(fā)參數(shù)立即生效:
[root@linuxprobe ~]# iptables -F
[root@linuxprobe ~]# iptables -t nat -A POSTROUTING -p udp --dport 53 -o eno33554968 -j MASQUERADE
[root@linuxprobe ~]# echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
[root@linuxprobe ~]# sysctl -p
net.ipv4.ip_forward = 1
現(xiàn)在回到客戶端主機,再次ping某個外網(wǎng)地址。此時可以發(fā)現(xiàn),雖然不能連通網(wǎng)站,但是此時已經(jīng)能夠獲取到外網(wǎng)DNS服務(wù)的域名解析數(shù)據(jù)。這個步驟非常重要,為接下來的SNAT技術(shù)打下了扎實的基礎(chǔ)。
C:\Users\linuxprobe>ping www.linuxprobe.com
正在 Ping www.linuxprobe.com [116.31.127.233] 具有 32 字節(jié)的數(shù)據(jù):
請求超時。
請求超時。
請求超時。
請求超時。
116.31.127.233 的 Ping 統(tǒng)計信息:
數(shù)據(jù)包: 已發(fā)送 = 4,已接收 = 0,丟失 = 4 (100% 丟失),
與配置DNS和SNAT技術(shù)轉(zhuǎn)發(fā)相比,Squid服務(wù)程序透明代理模式的配置過程就十分簡單了,只需要在主配置文件中服務(wù)器端口號后面追加上transparent單詞(意思為“透明的”),然后把第62行的井號(#)注釋符刪除,設(shè)置緩存的保存路徑就可以了。保存主配置文件并退出后再使用squid -k parse命令檢查主配置文件是否有錯誤,以及使用squid -z命令對Squid服務(wù)程序的透明代理技術(shù)進(jìn)行初始化。
[root@linuxprobe ~]# vim /etc/squid/squid.conf
………………省略部分輸出信息………………
58 # Squid normally listens to port 3128
59 http_port 3128 transparent
60
61 # Uncomment and adjust the following to add a disk cache directory.
62 cache_dir ufs /var/spool/squid 100 16 256
63
………………省略部分輸出信息………………
[root@linuxprobe ~]# squid -k parse
2017/04/13 06:40:44| Startup: Initializing Authentication Schemes ...
2017/04/13 06:40:44| Startup: Initialized Authentication Scheme 'basic'
2017/04/13 06:40:44| Startup: Initialized Authentication Scheme 'digest'
2017/04/13 06:40:44| Startup: Initialized Authentication Scheme 'negotiate'
2017/04/13 06:40:44| Startup: Initialized Authentication Scheme 'ntlm'
2017/04/13 06:40:44| Startup: Initialized Authentication.
………………省略部分輸出信息………………
[root@linuxprobe ~]# squid -z
2017/04/13 06:41:26 kid1| Creating missing swap directories
2017/04/13 06:41:26 kid1| /var/spool/squid exists
2017/04/13 06:41:26 kid1| Making directories in /var/spool/squid/00
2017/04/13 06:41:26 kid1| Making directories in /var/spool/squid/01
2017/04/13 06:41:26 kid1| Making directories in /var/spool/squid/02
2017/04/13 06:41:26 kid1| Making directories in /var/spool/squid/03
2017/04/13 06:41:26 kid1| Making directories in /var/spool/squid/04
2017/04/13 06:41:26 kid1| Making directories in /var/spool/squid/05
2017/04/13 06:41:26 kid1| Making directories in /var/spool/squid/06
2017/04/13 06:41:26 kid1| Making directories in /var/spool/squid/07
2017/04/13 06:41:26 kid1| Making directories in /var/spool/squid/08
2017/04/13 06:41:26 kid1| Making directories in /var/spool/squid/09
2017/04/13 06:41:26 kid1| Making directories in /var/spool/squid/0A
2017/04/13 06:41:26 kid1| Making directories in /var/spool/squid/0B
2017/04/13 06:41:26 kid1| Making directories in /var/spool/squid/0C
2017/04/13 06:41:26 kid1| Making directories in /var/spool/squid/0D
2017/04/13 06:41:26 kid1| Making directories in /var/spool/squid/0E
2017/04/13 06:41:26 kid1| Making directories in /var/spool/squid/0F
[root@linuxprobe ~]# systemctl restart squid
在配置妥當(dāng)并重啟Squid服務(wù)程序且系統(tǒng)沒有提示報錯信息后,接下來就可以完成SNAT數(shù)據(jù)轉(zhuǎn)發(fā)功能了。它的原理其實很簡單,就是使用iptables防火墻管理命令把所有客戶端主機對網(wǎng)站80端口的請求轉(zhuǎn)發(fā)至Squid服務(wù)器本地的3128端口上。SNAT數(shù)據(jù)轉(zhuǎn)發(fā)功能的具體配置參數(shù)如下。
[root@linuxprobe ~]# iptables -t nat -A PREROUTING -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3128
[root@linuxprobe ~]# iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -o eno33554968 -j SNAT --to 您的橋接網(wǎng)卡IP地址
[root@linuxprobe ~]# service iptables save
iptables: Saving firewall rules to /etc/sysconfig/iptables:[ OK ]
這時客戶端主機再刷新一下瀏覽器,就又能訪問網(wǎng)絡(luò)了,如圖16-14所示。
圖16-14 客戶端主機借助于透明代理技術(shù)成功訪問網(wǎng)絡(luò)
現(xiàn)在肯定有讀者在想,如果開啟了SNAT功能,數(shù)據(jù)不就直接被轉(zhuǎn)發(fā)到外網(wǎng)了么?內(nèi)網(wǎng)中的客戶端主機是否還依然使用Squid服務(wù)程序提供的代理服務(wù)呢?其實,只要仔細(xì)看一下iptables防火墻命令就會發(fā)現(xiàn),劉遄老師剛才并不是單純地開啟了SNAT功能,而是通過把客戶端主機訪問外網(wǎng)80端口的請求轉(zhuǎn)發(fā)到Squid服務(wù)器的3128端口號上,從而還是強制客戶端主機必須通過Squid服務(wù)程序來上網(wǎng)。為了驗證這個說法,我們編輯Squid服務(wù)程序的配置文件,單獨禁止本書的配套站點(https://www.linuxprobe.com/),然后再次刷新客戶端主機的瀏覽器,發(fā)現(xiàn)網(wǎng)頁又被禁止顯示了,如圖16-15所示。
圖16-15 客戶端主機再次無法訪問網(wǎng)絡(luò)
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: