使用Squid做代理服務器的方法
更新時間:2007年02月28日 00:00:00 作者:
說到代理服務器,我們最先想到的可能是一些專門的代理服務器網(wǎng)站,某些情況下,通過它們能加快訪問互聯(lián)網(wǎng)的速度。其實,在需要訪問外部的局域網(wǎng)中,我們自己就能設(shè)置代理,把訪問次數(shù)較多的網(wǎng)頁保存在緩存中,從而“提高”網(wǎng)絡速度。更重要的是,我們能通過代理服務器,達到控制訪問權(quán)限的目的。在 Windows中,有很多這樣的軟件,如:WinGate、SyGate等,不過,本文要討論的,是能給你充分自由的Linux下的Squid。
Linux下的代理服務器軟件也不是只有Squid,不過在大部分Linux版本中都帶有它。
走進“代理”
首先,我們來了解一下代理服務器的工作原理。代理服務器其實就是基于TCP/IP的一種軟件,它在TCP的某個端口上進行監(jiān)聽,例如:4444,其他客戶機(就是想通過代理上網(wǎng)的那些Windows系統(tǒng))配置好應用軟件,如:IE。其中需要填上代理服務器的端口,即前例中的4444,這樣代理服務器才知道你要訪問的地址。如果你是合法用戶的話,它就取得你想要的網(wǎng)頁,然后再通過4444這個端口傳遞給你,上網(wǎng)時你不會感覺到代理服務器的存在。
而代理服務器的真正意義在于:一、由于它是先將網(wǎng)頁下載到本地使用,因此訪問頻率越高的站點速度就會越快;二、如果你沒有訪問某個站點的權(quán)限而它有,你就能通過它訪問到該站點;三、它可以控制你的訪問。
當今,通過窄帶聯(lián)入Internet的恐怕仍然占大多數(shù),代理服務器的提速作用也就十分明顯了。
熟悉Linux的朋友可能知道,在Linux下有Ipchains可以做路由器,一樣可以控制訪問權(quán)限,但Ipchains的缺點是不支持DNS解析,如果你想通過它控制客戶機的訪問,就必須一一指定目的地的IP,如果有誰把Ipchains用在訪問Internet上,那他一定是瘋了,因為 Internet上的IP地址不但多得像天上的星星,而且和星星一樣隨時都在變化。Squid就不同,它可以指定哪些域后綴不能訪問,如:.tw、. net等,這樣就把域名對IP的映射交給ISP去做了。
配置舉例
在這個例子中,我們使用的是一臺普通品牌機做代理服務器,內(nèi)裝兩塊網(wǎng)卡,第一塊eth0接的是本單位的局域網(wǎng),第二塊eth1接的是一臺簡單的Internet共享器,操作系統(tǒng)是RedHat Linux 6.1,Ipchains和Squid都是系統(tǒng)自帶的。
像大多數(shù)Linux軟件一樣,Squid是通過配置文件工作的,它的默認配置文件是/etc/squid/squid.conf,原始文件長達數(shù)十頁,給出了詳細的配置說明,其中真正用得上的,可能只是很小的一部分??纯聪旅孢@個配置文件,其實很多選項都是一目了然的:
http_port 4444
#代理服務器監(jiān)聽的端口
cache_dir /var/cache/squid 100 16 32
#緩存目錄 大小(兆) 第一級子目錄個數(shù) 第二級子目錄個數(shù)
cache_access_log /var/log/squid/access.log
cache_log /var/log/squid/cache.log
acl all src 0.0.0.0/0.0.0.0
acl head src 192.168.0.2/255.255.255. 255 192.168.0.3/255.255.255.255
acl normal src 192.168.0.21-192.168. 0.99/255.255.255.255
acl denysite dstdomain tw net
acl denyip dst 61.136.135.04/255.255. 255.255
acl dnsport port 53
http_access allow head
http_access deny denysite
http_access deny denyip
http_access allow normal
http_access deny dnsport
實例分析
上面的內(nèi)容,就是一個基本Squid所需要的全部配置,是不是很簡單?!
從上面我們可以看到,代理服務器使用4444這個端口進行監(jiān)聽,緩存目錄為100MB,IP地址為192.168.0.2和192.168.0.3的用戶可訪問所有站點,而IP地址為192.168.0.21~99的用戶不能訪問后綴為tw和net的站點,也不能訪問IP地址為 61.136.135.04的站點(如果dst 61.136.135.04/255.255.255.255變成dst 61.136.135.04/255.255.255.0,指的是61.136.135.0這個網(wǎng)絡)。
很明顯,Squid使用acl 來定義用戶組,并使用http_access來控制用戶組的權(quán)限。acl后面可以是src(源地址)、dst(目標地址)、proto(協(xié)議)、port (端口)、 srcdomain(源域)、dstdomain(目標域)等,Squid的控制功能十分強大,你甚至可以用acl aclname time指定用戶組生效的時間,不過要注意,用http_access設(shè)置不同用戶組的權(quán)限時,Squid是按從上到下的順序執(zhí)行的,如果你想關(guān)閉一個組訪問某些站點的權(quán)限,就必須把deny的相應句子放在這個組的前面。
另外,Squid文檔中特別指出,如果沒有相應的access設(shè)置,那么默認的權(quán)限與最后一行相反,在上例中,一個IP為192.168.0.5的客戶未被定義卻能訪問外部網(wǎng)絡,因此,在最后一行設(shè)置http_access deny all是很有必要的。
設(shè)置完成后,就可以直接運行Squid來啟動它,如果配置文件有誤,Squid會給出相應的提示。然后再使用Ipchains設(shè)置包的轉(zhuǎn)發(fā)規(guī)則,如只允許客戶機使用POP3(110)、SMTP(25)、DNS(53)這幾個端口收發(fā)信件,瀏覽網(wǎng)頁只能使用代理,這樣網(wǎng)絡就安全得多了。
Linux下的代理服務器軟件也不是只有Squid,不過在大部分Linux版本中都帶有它。
走進“代理”
首先,我們來了解一下代理服務器的工作原理。代理服務器其實就是基于TCP/IP的一種軟件,它在TCP的某個端口上進行監(jiān)聽,例如:4444,其他客戶機(就是想通過代理上網(wǎng)的那些Windows系統(tǒng))配置好應用軟件,如:IE。其中需要填上代理服務器的端口,即前例中的4444,這樣代理服務器才知道你要訪問的地址。如果你是合法用戶的話,它就取得你想要的網(wǎng)頁,然后再通過4444這個端口傳遞給你,上網(wǎng)時你不會感覺到代理服務器的存在。
而代理服務器的真正意義在于:一、由于它是先將網(wǎng)頁下載到本地使用,因此訪問頻率越高的站點速度就會越快;二、如果你沒有訪問某個站點的權(quán)限而它有,你就能通過它訪問到該站點;三、它可以控制你的訪問。
當今,通過窄帶聯(lián)入Internet的恐怕仍然占大多數(shù),代理服務器的提速作用也就十分明顯了。
熟悉Linux的朋友可能知道,在Linux下有Ipchains可以做路由器,一樣可以控制訪問權(quán)限,但Ipchains的缺點是不支持DNS解析,如果你想通過它控制客戶機的訪問,就必須一一指定目的地的IP,如果有誰把Ipchains用在訪問Internet上,那他一定是瘋了,因為 Internet上的IP地址不但多得像天上的星星,而且和星星一樣隨時都在變化。Squid就不同,它可以指定哪些域后綴不能訪問,如:.tw、. net等,這樣就把域名對IP的映射交給ISP去做了。
配置舉例
在這個例子中,我們使用的是一臺普通品牌機做代理服務器,內(nèi)裝兩塊網(wǎng)卡,第一塊eth0接的是本單位的局域網(wǎng),第二塊eth1接的是一臺簡單的Internet共享器,操作系統(tǒng)是RedHat Linux 6.1,Ipchains和Squid都是系統(tǒng)自帶的。
像大多數(shù)Linux軟件一樣,Squid是通過配置文件工作的,它的默認配置文件是/etc/squid/squid.conf,原始文件長達數(shù)十頁,給出了詳細的配置說明,其中真正用得上的,可能只是很小的一部分??纯聪旅孢@個配置文件,其實很多選項都是一目了然的:
http_port 4444
#代理服務器監(jiān)聽的端口
cache_dir /var/cache/squid 100 16 32
#緩存目錄 大小(兆) 第一級子目錄個數(shù) 第二級子目錄個數(shù)
cache_access_log /var/log/squid/access.log
cache_log /var/log/squid/cache.log
acl all src 0.0.0.0/0.0.0.0
acl head src 192.168.0.2/255.255.255. 255 192.168.0.3/255.255.255.255
acl normal src 192.168.0.21-192.168. 0.99/255.255.255.255
acl denysite dstdomain tw net
acl denyip dst 61.136.135.04/255.255. 255.255
acl dnsport port 53
http_access allow head
http_access deny denysite
http_access deny denyip
http_access allow normal
http_access deny dnsport
實例分析
上面的內(nèi)容,就是一個基本Squid所需要的全部配置,是不是很簡單?!
從上面我們可以看到,代理服務器使用4444這個端口進行監(jiān)聽,緩存目錄為100MB,IP地址為192.168.0.2和192.168.0.3的用戶可訪問所有站點,而IP地址為192.168.0.21~99的用戶不能訪問后綴為tw和net的站點,也不能訪問IP地址為 61.136.135.04的站點(如果dst 61.136.135.04/255.255.255.255變成dst 61.136.135.04/255.255.255.0,指的是61.136.135.0這個網(wǎng)絡)。
很明顯,Squid使用acl 來定義用戶組,并使用http_access來控制用戶組的權(quán)限。acl后面可以是src(源地址)、dst(目標地址)、proto(協(xié)議)、port (端口)、 srcdomain(源域)、dstdomain(目標域)等,Squid的控制功能十分強大,你甚至可以用acl aclname time指定用戶組生效的時間,不過要注意,用http_access設(shè)置不同用戶組的權(quán)限時,Squid是按從上到下的順序執(zhí)行的,如果你想關(guān)閉一個組訪問某些站點的權(quán)限,就必須把deny的相應句子放在這個組的前面。
另外,Squid文檔中特別指出,如果沒有相應的access設(shè)置,那么默認的權(quán)限與最后一行相反,在上例中,一個IP為192.168.0.5的客戶未被定義卻能訪問外部網(wǎng)絡,因此,在最后一行設(shè)置http_access deny all是很有必要的。
設(shè)置完成后,就可以直接運行Squid來啟動它,如果配置文件有誤,Squid會給出相應的提示。然后再使用Ipchains設(shè)置包的轉(zhuǎn)發(fā)規(guī)則,如只允許客戶機使用POP3(110)、SMTP(25)、DNS(53)這幾個端口收發(fā)信件,瀏覽網(wǎng)頁只能使用代理,這樣網(wǎng)絡就安全得多了。
您可能感興趣的文章:
- linux下通過Squid反向代理搭建CDN緩存服務器的配置方法
- 搭建一個大型網(wǎng)站架構(gòu)的實驗環(huán)境(Squid緩存服務器篇)
- squid3緩存服務器編譯安裝和高命中率配置示例
- CentOS下使用Squid架設(shè)CDN服務器的方法
- 在varnish、squid、apache、nginx中選出一個更好的緩存服務器
- Linux下Squid代理服務器的架設(shè)與維護經(jīng)驗分享
- 簡單架設(shè)SSH+Squid代理服務器的自由上網(wǎng)通道的方法
- 在Windows下利用Squid開設(shè)代理服務器
- Linux下Squid配置詳解 Squid代理服務器配置
- 使用squid搭建http和https的代理服務器設(shè)置指南
相關(guān)文章
RedHat環(huán)境下socks5代理的配置指南教程
RedHat環(huán)境下socks5代理的配置指南教程...2007-02-02Microsoft代理服務系統(tǒng)的分析與實現(xiàn)方法
Microsoft代理服務系統(tǒng)的分析與實現(xiàn)方法...2007-02-02