linux下DNS輪詢與squid反向 Proxy結合

來源:互聯網
上載者:User

一、安裝反向 Proxy伺服器
1.下載反向 Proxy伺服器軟體採用squid,:

http://www.squid-cache.org/Versions/v2/2.2/squid-2.2.STABLE5-src.tar.gz

下載後存放在/usr/local/squid/src目錄裡,檔案名稱是
squid-2.2.STABLE5-src.tar.gz ;

2.解壓Proxy 伺服器軟體包:

進入/usr/local/squid/src目錄,鍵入如下命令:

gzip -dc squid-2.2.STABLE5-src.tar.gz | tar -xvf -

這個命令將Proxy 伺服器軟體包解開,建立一個目錄叫作squid-2.2.STABLE5,並且把所有的檔案放在這個目錄裡面。

3. 編譯來源程式

首先回合組態指令碼,以便產生適合您的機器的編譯指令碼。命令格式是:

./configure

這種方式產生的編譯指令碼編譯後預設安裝路徑是/usr/local/squid。

如果想改變安裝路徑,需要用以下格式:

./configure -prefix=/some/other/directory

這種方法編譯後安裝到/some/other/directory裡面。

產生編譯指令碼後,可以正式開始編譯了。命令為:

make

4、 安裝SquidProxy 伺服器

編譯通過後,用以下命令安裝:

make install

安裝完成後,會在您指定的安裝路徑裡產生一個squid目錄,squid目錄下有三個目錄:etc、bin、logs。其中etc裡面是設定檔,bin裡面是執行檔案,logs裡面是記錄檔。

二、調試反向 Proxy伺服器
安裝結束後就是調試伺服器,使其按照您的要求工作。Squid的設定檔只有一個,在etc目錄裡,名字是squid.conf,所有的配置選項都在這個檔案裡面。而且每個設定項目都有注釋說明。我們只介紹與反向 Proxy有關的幾個項目。

首先,在squid檔案裡面找到下列配置項:

cache_mem

這裡可以添上您準備給squid作為快取使用的記憶體大小。注意,如果您的機器有N兆記憶體,那麼,推薦您在這裡添的數字是N/3。

cache_dir /usr/local/squid/cache 100 16 256

這裡的第一個數字100是您準備給squid作為cache使用的硬碟空間大小,單位是兆。如果您想劃100M空間當作cache,那麼這裡就寫100。

acl, http_access, icp_access

填寫"allowedip"和"allowedip1"ACL存取控制清單。這裡應該填寫你對外公開的伺服器的IP,比如此例的兩個WEB伺服器對應的外部地址為202.99.157.10 和 202.99.157.18,

acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl all src 0.0.0.0/0.0.0.0
acl allowedip src 202.99.157.10/255.255.255.255
acl allowedip1 src 202.99.157.18/255.255.255.255
http_access deny manager all
http_access allow allowedip
http_access allow allowedip1
http_access deny all
icp_access allow allowedip
icp_access allow allowedip1
icp_access deny all
cache_mgr webmaster@test.com.cn

這裡填寫cache管理員的Email地址,系統出錯會自動提醒cache管理員。

******以上部分均為squid的通用設定以下為關於反向 Proxy部分的設定******

httpd_accel_host test.com.cn
httpd_accel_host test1.com.cn

此處設定反向 Proxy的主機名稱

httpd_accel_port 80

此處設定反向 Proxy的WEB服務連接埠號碼

#httpd_accel_with_proxy off

此處設定開反向 Proxy的同時,是否開普通代理服務

修改完設定檔,在正式運行squidProxy 伺服器之前,先進行初始化。命令如下:

% /usr/local/squid/bin/squid -z
% /usr/local/squid/bin/squid

檢查cache.log檔案確保所有部分運行正常。如果有出錯資訊或系統不能正常啟動,一般情況是由於目錄和檔案的存取許可權導致的,請仔細檢查各目錄和檔案的使用權限設定。 其中特別需要注意的是初始化之前應該將squid目錄設定成可寫,然後將建立的cache目錄和logs目錄設定成可寫。如果一切正常,那麼就可以投入使用了。系統預設的服務連接埠是3128。

反向 Proxy伺服器軟體安裝完畢後,將該伺服器在80連接埠的http服務設定成不啟用。

三、調整DNS伺服器設定
假設DNS伺服器(以下稱標準DNS伺服器)將test.com.cn解析為202.99.157.10,將test1.com.cn解析為202.99.157.18,那麼我們在配置反向 Proxy伺服器這台機器的DNS服務時(我們以下稱為內部DNS伺服器),可以針對內部地址的WEB做如下變換:

主機名稱 標準DNS解析為 內部
DNS解析為

http://www.test.com.cn/ 202.99.157.10 192.168.1.10
http://www.test1.com.cn/ 202.99.157.18 192.168.1.18

然後把202.99.157.10和202.99.157.18這兩個IP綁定到反向 Proxy伺服器上,這樣,外界對http://www.test.com.cn/和http://www.test1.com.cn/ 的訪問就會由標準DNS解析到反向 Proxy伺服器上,預設WEB伺服器的服務連接埠是80,但是由於反向 Proxy伺服器的80連接埠的http服務已經終止,此時的訪問會沒有結果。為了能使該訪問請求能夠成功完成,需要在反向 Proxy伺服器和真實的http://www.test.com.cn/ 和http://www.test1.com.cn/ 的WEB伺服器之間建立聯絡。要和有內部地址的真實WEB伺服器建立聯絡,首先反向 Proxy伺服器上需要再綁定一個內部IP,比如192.168.1.2,其餘部分由transproxy這個透明代理軟體來完成。Transproxy服務軟體通過設定,啟用連接埠81和squid建立聯絡,把內部DNS對http://www.test.com.cn/和http://www.test1.com.cn/的解析地址傳給squid伺服器,然後通過squid.conf裡面關於伺服器連接埠的設定,將服務連接埠設定為80,這樣,squid就訪問內部真實WEB伺服器192.168.1.10和192.168.1.18的80連接埠,把需要訪問的WEB內容取回來,放在squid的cache裡供外界訪問。透明代理軟體transproxy設定完成後,需要通過設定ipchains規則,將外界發往反向 Proxy伺服器的80連接埠的http請求轉寄到transproxy 的81連接埠,這樣就建立了外界通過反向 Proxy間接和真實WEB伺服器之間的聯絡。

四、安裝透明代理軟體
http://transproxy.sourceforge.net/ 透明代理軟體 協助文檔
透明Proxy 伺服器安裝分如下幾步:下載、解壓、編譯、安裝、配置幾步。首先需要到http://www.transproxy.nlc.net.au/transproxy-1.3.tgz   或者http://sourceforge.net/project/showfiles.php?group_id=18383下載transproxy軟體包,也放在/usr/local/src目錄裡,然後用gzip解壓該軟體包。具體命令是:

gzip -dc transproxy-1.3.tgz |tar -xvf -

解壓後在/usr/local/src目錄下面產生tproxy目錄,裡面是transproxy的來源程式。(可能解壓後沒有configure,直接make編譯即可)進入該目錄,用make命令編譯該軟體,用make install命令安裝transproxy。Transproxy的編譯和安裝都很簡單,下面就需要配置transproxy。根據系統負荷的輕重不同,transproxy可以配置為兩種運行方式:負荷輕時,用inetd方式,負荷重時,用standalone server方式。具體配置方法如下:

1. inetd方式:

在/etc/services檔案中添加下面一行:

tproxy 81/tcp #transproxy

在/etc/inetd.conf檔案中添加下面一行:

tproxy stream tcp nowait nobody /usr/sbin/tcpd tproxy 202.99.157.10 3128

tproxy stream tcp nowait nobody /usr/sbin/tcpd tproxy 202.99.157.18 3128

2. standalone server方式:

在/etc/rc.d/rc.local檔案中加入下面一行:

/usr/local/sbin/tproxy -s 81 -r nobody 202.99.157.10 3128

/usr/local/sbin/tproxy -s 81 -r nobody 202.99.157.18 3128

設定完畢後重新啟動反向 Proxy伺服器,所有新設定的功能即可實現。

五、設定轉寄規則

ipchains -A input -p tcp -d 202.99.157.10/255.255.255.255 80 -j REDIRECT 81
ipchains -A input -p tcp -d 202.99.157.18/255.255.255.255 80 -j REDIRECT 81

這裡將送往202.99.157.10和202.99.157.18的80連接埠的所有http請求轉寄給由transproxy管理的連接埠81。

到此為止,透明反向 Proxy配置完成了。

讓我們類比一下一位網際網路使用者訪問http://www.test.com.cn/這台擁有內部IP(192.168.1.10)的WEB伺服器的過程。首先,該使用者的請求由標準DNS伺服器解析為202.99.157.10,則使用者的機器向202.99.157.10的80連接埠發出請求,要求瀏覽http://www.test.com.cn/這台WEB伺服器的頁面,而202.99.157.10這台機器正是我們的反向 Proxy伺服器,按照反向 Proxy伺服器的ipchains規則發往該伺服器80連接埠的請求被轉寄到81連接埠,而81連接埠由transproxy 控制,transproxy把請求發給squid,讓squid去取http://www.test.com.cn/這個頁面。而反向 Proxy伺服器上的內部DNS伺服器把http://www.test.com.cn/解析為192.168.1.10,預設的反向 Proxy連接埠是80,這樣,squid就到192.168.1.10的連接埠80上請求WEB服務。而192.168.1.10正是我們的http://www.test.com.cn/的真實WEB伺服器,它的80連接埠開放著http服務。這樣,squid從192.168.1.10伺服器上取回頁面傳回給202.99.157.10 然後再傳回給網際網路上的對http://www.test.com.cn/有訪問請求的使用者,並把該頁面放在squid的cache中。這樣就完成了一次網際網路使用者到擁有內部IP的WEB伺服器的訪問過程。以後再有網際網路使用者再訪問http://www.test.com.cn/這個頁面時,squid就直接從cache裡提取緩衝的頁面,這樣可以提高WEB伺服器的訪問效率。

網際網路使用者對http://www.test1.com.cn/的訪問也和對http://www.test.com.cn/的訪問一樣,原理是相同的,只不過訪問的真實伺服器不同而已。

從上面的訪問例子我們可以看出,網際網路上的使用者在訪問http://www.test.com.cn/這個WEB 伺服器時,根本不和真正提供http://www.test.com.cn/頁面的伺服器打交道,只和反向 Proxy伺服器打交道,這樣,在破壞互連網主機的駭客行為日益猖獗的情況下,只要正確設定反向 Proxy伺服器,確保反向 Proxy伺服器不被攻破,就會很大程度上杜絕網際網路上的駭客對內部伺服器的攻擊。萬一Proxy 伺服器被攻破,也不會對您的WEB伺服器造成什麼損害,您只要恢複反向 Proxy伺服器就行了。因此,本方法對您的WEB伺服器起到一定程度的保護作用。而且在WEB瀏覽量較多的情況下,由於squid的反向 Proxy有加速功能,可以加快頁面的瀏覽速度。

六、其他

反向 Proxy應用過程中,要注意存取控制功能,應該只允許訪問你開放的內部伺服器,而不允許訪問其他伺服器,否則,你的反向 Proxy伺服器就會成為互連網上一台公開的不用驗證的Proxy 伺服器,那就危險啦。另外,如果您有多台WEB伺服器,可以選一台效能較好的作為反向 Proxy伺服器,內部的若干WEB伺服器可以用PC或低檔伺服器代替,因為外部的訪問壓力主要集中在反向 Proxy伺服器上。

另外此方案如果和linux下面的防火牆方案結合使用會更加完美。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.