Linux系列-Red Hat5平臺下構建Squid代理服務

企業員工要上網除了NAT技術就是走代理,NAT我已經說了好多了,前面在CISCO路由、windows服務器、ISA ServerLinux主機上都已經實現了,今兒來說說代理。
一說起代理大家肯定都會想到CCProxyCCProxy雖然用起來雖然很簡單,但性能還是不太穩定,更重要的是那玩意兒還得花錢買。本次與大家探討Squid的應用。我將會說三個部分。前兩個部分:基本代理和透明代理可能還比較常見。最後我會說到反向代理。欲知反向代理爲何物?請看下文圖文並貌分解。
RHEL5是默認安裝這個軟件的,就算是最小化安裝也會安裝的。所以咱們也不用裝了但配置文件中的幾個參數這裏還是說一下。配置文件squid.conf位於/etc/squid/中,共有4500多行。一聽4500行大家先別喊暈,有用的其實不多,幾乎全是一些說明性的文字,下面列舉幾個常用的:
1>Http_port 3128    //用來指定代理服務監聽的地址和端口,可以同時指定IP
2>Cache_mem 64 MB  //用來設置緩存功能的內存空間大小
3> Maximum_object_size 4096 KB //設置允許保存到高速緩存的最大對象(文件)大小。
4> Reply_body_max_size 10240000 allow all //設置允許用戶下載的最大文件大小
5> Cache_dir ufs /var/spool/squid 100 16 256 //設置緩存數據時使用的目錄參數
6>Access_log /var/log/squid/acess.log squid //設置日誌的位置

明白了上面說的幾個常用的參數之後,做起來就輕鬆多,不過還有一些訪問控制列表之類的東西,這次可能說不完。先來看看關鍵的三個應用吧!下面是這次的拓撲圖:

 

可以看到外網有web服務器,咱們首先要用squid基本及透明代理技術讓內網中的用戶快速訪問外網。另外,還要把內網中的web服務器通過squid反向代理技術,代理給外網的用戶們,也讓他們來訪問咱們內部的網站。這就是本次的目標,圖可能不太清楚,我還是把上面的信息羅列到下面:
1>     SquidServer有兩塊網卡,分別是連接外網的網卡Eth0(WAN) IP61.134.1.4/8(注意:真實環境下要配置網關)和連接內網的網卡Eth1(LAN) IP192.168.1.1/24.
2>     內網交換機上連接了三臺web服務器分別是Server1 IP:192.168.1.2/24 DG:192.168.1.1Server2 IP:192.168.1.3/24 DG:192.168.1.1Server3 IP:192.168.1.4/24 DG:192.168.1.1。三臺服務器將會使用同一個FQDNwww.zpp.com
3>.外網有一臺主機名爲www.web.comweb服務器IP爲:61.134.1.10/24
下面就來看看具體的配置:
第一部分:配置傳統緩存代理實現快速上網。

1.       配置Squid代理服務器端

[root@server ~]# vi /etc/squid/squid.conf

http_port 3128   //設置代理端口

visible_hostname proxy.zpp.com  //指定squid服務器的主機名

reply_body_max_size 10240000 allow all //禁止下載超過10M的文件

http_access allow all //設置允許使用代理.注意應該放在“http_access deny all行之前”

2.       初始化並啓動代理服務

 

除了用services命令調用系統服務腳本啓動代理服務,還可以用下面幾個參數來初始化及啓動squid服務,這樣更簡單,如圖:

 

3.       修改客戶端瀏覽器設置,指定所使用代理服務器的IP地址、端口

 

4.       測試一下,OK!可以成功訪問外網,注意我這裏開了一臺Linux主機模擬internet上的主機www.web.com

 

5.       需要注意的是咱們如果使用代理的方式上網的話,客戶機是不需要填寫網關的,也就是說它沒必要和外網有任何關係,從下圖可以看到在客戶機上是ping不通外網的,是通過代理服務器在上網,只要滿足兩點就可以實現代理上網。第一,代理服務器本身要能上網;第二,內網客戶機要能夠與代理服務器聯繫。

 

6.       現在再看看日誌,可以看到系統對這些事件都是有記錄的。說到日誌的查看給大家介紹一個命令tail –f,這個命令可以看到實時的日誌變化。大家可以試試看。

 

OKSquid的基本代理就是這麼簡單,需要注意的的Squid服務器不但要和外網通信,它還需有DNS的支持。也就是說它自己要配網關還要配DNS。我這是本機上搭了個DNS。所以能夠給自己解析,如圖:

 

第二部分:配置透明代理

先說說爲啥要使用透明代理。大家剛剛也看到了在內網客戶機上雖然咱們沒配網關但更麻煩的一點是要在客戶端瀏覽器中添加代理服務器地址及代理端口。雖然windows的組策略能夠很好的解決這個問題。但它需要域環境來支持。現在咱們使用透明代理的話就不用在客戶端瀏覽器中添加代理服務器地址及代理端口了,只需要有網關即可。網關好配吧,有DHCP幫咱們。爲什麼有網關就可以不設代理了呢?因爲有網關之後咱們就可以結合上次說的iptables規則將數據包進行重定向了。所以給各位網工同志們減輕了工作負擔。何樂而不爲?
在剛剛的基本代理之上配置透明代理那就更簡單了,只有幾步而已來看看吧!
1.       配置Squid支持透明代理

[root@server ~]# vi /etc/squid/squid.conf

http_port 192.168.1.1:3128 transparent  //基本上也就是添加了一個transparent(透明)

2.       重新加載Squid服務配置

[root@server ~]# service squid reload
3.       設置iptables規則,將訪問HTTP的數據重定向給代理服務器

上次咱們在iptables中也說過這種用法的啊,REDIRECT(重定向)的意思,可以在防火牆主機內部轉發數據包。下面咱們是把內部網絡對於協議爲TCP端口爲80web服務)的請求重定向給3128squid默認的代理端口)。

 

4.       確認客戶機的IP地址網關等設置。

這次可是要配置網關的啊,如圖:

 

5.       瀏覽器這裏不需要設置代理服務器,如果設置了建議改過來,不然有可能上不了網

 

6.       OK!現在可以成功訪問外網,如圖,說明咱們的透明代理設置成功。

 

    上面兩個技術可以很好的解決企業內部需要訪問Internet的問題。禮尚往來!下面我們通過squid反向代理技術讓外網的用戶也來訪問咱們。
第三部分:配置反向代理

    反向代理部署起來還是比較靈活的,爲什麼這麼說呢?因爲後臺真正提供Web服務的站點可以位於Internet,也可以位於局域網內部,並且提供web服務的主機可以有若干個。夠靈活的吧!下面來看看具體的步驟。
1.       修改squid.conf配置文件添加反向代理支持以及指定Web服務器的主機位置

[root@server ~]# vi /etc/squid/squid.conf

http_port 61.134.1.4:80 vhost             //這個參數的用於支持主機映射

cache_peer 192.168.1.2 parent 80 0 originserver    //指定第1臺真實服務器的位置

cache_peer 192.168.1.3 parent 80 0 originserver    //指定第2臺真實服務器的位置

大家可能對於後面兩行命令有疑問,看完下圖就明白了哈!

 

2.       重新啓動squid服務

注意:如果在80端口已經運行了httpd服務,就要先關閉。不然可能會導致無法啓動,因爲端口會被佔用。

 

3.       現在來測試一下吧!

現在咱們到IP61.134.1.100/8的外網客戶端來訪問一下內網的www.zpp.com.從下圖可以看到可以成功訪問內部網站www.zpp.com.
注意我這裏是自己搭了兩個web來模擬內網中的兩臺web服務器,並且內容是一致的。

 

客戶機的IP請大家看一下,是61.134.1.100/8.並且通過DNS域名解析www.zpp.com得到的IPsquid服務器的外網地址61.134.1.4。從這一點也說明了squid不僅有提供內網用戶上網的功能,還有發佈服務器的功能。相對於服務器發佈技術它倒是顯得更靈活。

 

4.       再來看看日誌信息。如圖,咱們的一舉一動都被日誌大哥看在眼力啊

 

OK!通過上面的三個技術,我想大家對squid又有了新的認識,特別是看完反向代理之後。更是覺得squid將大有可爲。的確!希望這個不花錢的玩藝兒能讓更多的人知道並使用。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章