高效配置Linux代理伺服器Squid介紹

一見藍天發表於2014-04-10

作為一種免費的網路作業系統,Linux越來越受到廣大網路愛好者的歡迎,目前Internet上執行的主機有相當一部分採用的就是Linux,而且中國已經把Linux作為政府上網的指定網路作業系統。種種跡象表明,Linux正在逐漸走向成熟。

為了解決Internet發展迅速和IP地址資源緊張的矛盾,代理伺服器的使用越來越廣泛。Squid是一種在Linux系統下使用的比較優秀的代理伺服器軟體。

代理服務

代理服務是指由一臺擁有標準IP地址的機器代替若干沒有標準IP地址的機器和Internet上的其它主機打交道,提供代理服務的這臺機器稱為代理伺服器。擁有內部地址的機器想連線到Internet上時,先把這個請求發給擁有標準IP地址的代理伺服器,由代理伺服器把這個請求通過它的標準IP地址發到請求的目的地址。然後目標地址的伺服器把返回的結果發回給代理伺服器,代理伺服器再原封不動的把資料發給內部主機。若干擁有內部地址的機器就組成了內部網,代理伺服器的作用就是溝通內部網和Internet,解決內部網訪問Internet的問題。這種代理事不可逆的,Internet上的主機不能訪問任何一臺擁有內部地址的機器,這樣又可以保障內部資料的安全性。

代理軟體的一個優點是它能夠檢驗除了資料包之外的許多東西。Squid對資料包的有效載荷進行檢驗,也就是穿越防火牆的資料包中TCP(或者UDP)部分所佔地份量。根據資料包報頭(資料包中的IP部分)和資料包有效載荷(TCP部分)的資訊,代理防火牆能夠決定資料包將發往何處,資料包請求什麼,以及根據資料包所必須提供的這些資訊決定採取什麼樣的行動。

對於Web使用者來說,Squid是一個高效能的代理快取伺服器,可以加快內部網瀏覽Internet的速度,提高客戶機的訪問命中率。Squid不僅支援HTTP協議,還支援FTP、gopher、SSL和WAIS等協議。和一般的代理快取軟體不同,Squid用一個單獨的、非模組化的、I/O驅動的程式來處理所有的客戶端請求。

Squid將資料元快取在記憶體中,同時也快取DNS查尋的結果,除此之外,它還支援非模組化的DNS查詢,對失敗的請求進行消極快取。Squid支援SSL,支援訪問控制。由於使用了ICP,Squid能夠實現重疊的代理陣列,從而最大限度的節約頻寬。

Squid由一個主要的服務程式Squid,一個DNS查詢程式dnsserver,幾個重寫請求和執行認證的程式,以及幾個管理工具組成。當Squid啟動以後,它可以派生出指定數目的dnsserver程式,而每一個dnsserver程式都可以執行單獨的DNS查詢,這樣一來就大大減少了伺服器等待DNS查詢的時間。

Squid的另一個優越性在於它使用訪問控制清單(ACL)和訪問許可權清單(ARL)。訪問控制清單和訪問許可權清單通過阻止特定的網路連線來減少潛在的Internet非法連線,可以使用這些清單來確保內部網的主機無法訪問有威脅的或不適宜的站點。

編譯安裝Squid

squid軟體包有兩種:一種是RedHat所使用的rpm包,另一種是原始碼包。

rpm包的安裝:

1.進入/mnt/cdrom/RedHat/RPMS。

2.執行rpm -ivh squid-2.2.STABLE4-8.I386.rpm。

原始碼包的安裝:

1.從http://www.squid-cache.org下載squid-2.2.STABLE4-src.tar.gz。

2.將該檔案拷貝到/usr/local目錄。

3.解開該檔案tar xvzf squid-2.2.STABLE4-src.tar.gz,在/usr/local目錄下生成一個新的目錄squid-2.2.STABLE4,為了方便使用mv squid-2.2.STABLE4 squid將目錄更名為squid。

4.進入squid目錄。

5.執行./configure,可以用./configure -prefix=/directory/you/want指定安裝目錄。系統預設安裝目錄為/usr/local/squid。

6.執行make all。

7.執行make install。

8.安裝結束後,Squid的可執行檔案在安裝目錄的bin子目錄下,配置檔案在etc子目錄下。

配置squid

配置檔案squid.conf

Squid有一個主要的配置檔案squid.conf,位於/etc/squid目錄下,使用者僅僅需要修改該配置檔案即可。

squid.conf配置檔案分為13個部分,分別是:

1.NETWORK OPTIONS(有關的網路選項)

2.OPTIONS WHICH AFFECT THE NEIGHBOR SELECTION ALGORITHM(作用於鄰居選擇演算法的有關選項)

3.OPTIONS WHICH AFFECT THE CACHE SIZE(定義cache大小選項)

4.LOGFILE PATHNAMES AND CACHE DIRECTORIES(定義日誌檔案的路徑及cache的目錄)

5.OPTIONS FOR EXTERNAL SUPPORT PROGRAMS(外部支援程式選項)

6.OPTIONS FOE TUNING THE CACHE(調整cache選項)

7.TIMEOUTS(超時)

8.ACCESS CONTROLS(訪問控制)

9.ADMINISTRATIVE PARAMETERS(管理引數)

10.OPTIONS FOR THE CACHE REGISTRATION SERVICE(cache註冊服務選項)

11.HTTPD-ACCELERATOE OPTIONS(HTTPD加速選項)

12.MISCELLANEOUS(雜項)

13.DELAY POOL PARAMETERS(延時池選項)

雖然squid的配置檔案很龐大,但是使用者可以根據自己的實際情況修改相應的選項,並不需要配置所有的選項。下面介紹幾個常用的選項。

1.http_port

定義squid監聽HTTP客戶連線請求的埠。預設是3128,如果使用HTTPD加速模式則為80。可以指定多個埠,但是所有指定的埠都必須在一條命令列上。

2.cache_mem

指定squid可以使用的記憶體理想值,建議設為記憶體的1/3.

3.cache_dir Directory-Name Mbytes Level1 Level2

指定squid用來儲存物件的交換空間的大小及其目錄結構。可以用下面的公式來估算系統所需要的子目錄數目。

已知量:

DS = 可用交換空間總量(單位KB)/ 交換空間數目

OS = 平均每個物件的大小= 20k

NO = 平均每個二級子目錄所儲存的物件數目 = 256

未知量:

L1 = 一級子目錄的數量

L2 = 二級子目錄的數量

計算公式:

L1 x L2 = DS / OS / NO

注意這是個不定方程,可以有多個解。

4.maximum_object_size

大於該值得物件將不被儲存。如果要提高訪問速度,就降低該值;如果想最大限度的節約頻寬,降低成本,就增加該值。

5.dns_nameservers

定義Squid進行域名解析時使用的域名伺服器。

6.acl

定義訪問控制列表。定義語法為:

acl aclname acltype string …

acl aclname acltype “file” …

7.http_access

根據某個訪問控制列表允許或禁止某一類使用者訪問。

執行Squid

配置並儲存好squid.conf後,就可以啟動、停止和重新啟動Squid:

/etc/rc.d/init.d/squid start

/etc/rc.d/init.d/squid stop

/etc/rc.d/init.d/squid restart

可以通過ps命令檢視Squid服務是否已經正常啟動:

ps -A |grep squid

如果出現以下資訊:

6573 ? 00:00:00 squid

6574 ? 00:00:00 squid

則表明Squid服務已經正常啟動。

客戶端的配置

將某臺終端設定成內部地址,並將該終端的DNS伺服器設定為代理伺服器的DNS服務,在內部地址和標準地址之間作一個路由。在瀏覽器裡設定代理伺服器地址為Squid代理伺服器的地址,就可以通過代理伺服器上網了。

一個例項

假設有這樣的應用環境,網路中有一臺撥號伺服器為使用者提供撥號接入服務,且執行有Squid實現的代理伺服器,其IP地址為192.168.2.32。撥號使用者得到一個內部IP,地址範圍為192.168.2.1-192.168.2.30。

1.配置squid.conf

http_port 80

cache_mem 32 MB

cache_swap_low 90

cache_swap_high 95

maximum_object_size 4096 KB

cache_dir /var/spool/squid 100 16 256

cache_access_log /var/log/squid/access.log

cache_log /var/log/squid/cache.log

cache_store_log /var/log/squid/store.log

cache_dns_program /usr/lib/squid/dnsserver

dns_nameservers 192.168.2.32

unlinkd_program /usr/lib/squid/unlinkd

acl all src 0.0.0.0/0.0.0.0

acl allow_ip src 192.168.2.1/255.255.255.0

acl manager proto cache_object

acl localhost src 192.168.2.32/255.255.255.255

acl SSL_ports port 443 563

acl Safe_ports port 80 21 443 563 70 210 1025-65535

acl CONNECT method CONNECT

http_access allow manager localhost

http_access deny manager

http_access deny !Safe_ports

http_access deny CONNECT !SSL_ports

http_access allow localhost

http_access allow allow_ip

cache_effective_user squid

cache_effective_group squid

下面兩個選項是用來定義squid加速模式的。用virtual來指定為虛擬主機模式。80埠為要加速的請求埠。採用這種模式時,Squid就取消了快取及ICP功能,假如需要這些功能,必須設定httpd_accel_with_proxy選項。

httpd_accel_host virtual

httpd_accel_port 80

下面兩個選項在透明代理模式下是必須設定成on的。在該模式下,Squid既是web請求的加速器,又是快取代理伺服器。

httpd_accel_with_proxy on

httpd_accel_uses_host_header on

設定透明代理時,必須開啟包轉發功能,還要結合ipchains:

echo 1 > /proc/sys/net/ipv4/ip_forward

/sbin/ipchains -A input -j ACCEPT -i lo

/sbin/ipchains -A forward -s 192.168.2.1/24 -d 0/0 -j MASQ

2.使用者認證設定

預設時,Squid本身不帶任何認證程式,但是可以通過外部認證程式來實現使用者認證。一般有以下的認證程式:LDAP認證、SMB認證、基於mysql的認證、基於sock5的密碼認證和基於Radius的認證。下面介紹常用的ncsa實現的認證,ncsa是Squid原始碼包自帶的認證程式之一,實現步驟如下:

* 進入/usr/local/squid/auth_modules/NCSA目錄,執行:

make

make install

* 編譯成功後,會生成ncsa_auth的可執行檔案,拷貝生成的可執行檔案到/usr/bin目錄下。

* 修改squid.conf檔案的相關選項。

acl auth_user proxy_auth REQUIRED

http_access allow auth_user

authenticate_program /usr/local/squid/bin/ncsa_auth

/usr/local/squid/etc/passwd

* 利用Apache攜帶的工具軟體htpasswd在/usr/locad/squid/etc下生成密碼檔案,並新增相應的使用者資訊。該密碼檔案每行包含一個使用者的資訊,即使用者名稱和密碼。例如,用htpasswd生成密碼檔案passwd並新增使用者me:

htpasswd -c /usr/local/squid/etc/passwd me

* 重新啟動Squid,密碼認證生效。

3.客戶端的設定

在客戶端瀏覽器的選項中將代理伺服器的IP地址設為192.168.2.32,http埠為80。若要設定透明代理,則客戶端不需要在瀏覽器中指定代理伺服器,而將閘道器設為192.168.2.32,並且客戶端要配置好DNS。

現在,內部網的主機就可以通過代理訪問Internet了。

結束語

Squid與Linux下其它的代理軟體如Apache、Socks、TIS FWTK和delegate相比,下載安裝簡單,配置簡單靈活,支援快取和多種協議。用ipchains+Squid的解決方案,就可以獲得通過快取高效能的同時能夠無縫的訪問Internet。最後說明一點,squid不僅可用在Linux系統上,還可以用在AIX、Digital Unix、FreeBSD、HP-UX、Irix、NetBSD、Nextstep、SCO和Solaris等系統上。


閱讀(369) | 評論(0) | 轉發(0) |

給主人留下些什麼吧!~~


評論熱議


相關文章