欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

搭建一個大型網站架構的實驗環(huán)境(Squid緩存服務器篇)第1/2頁

 更新時間:2009年07月02日 14:48:00   投稿:mdxy-dxy  
Squid是一個高性能的代理緩沖服務器,也許你已經用過Windows平臺下的WinGate,MS Proxy Server等功能類似的產品。

Squid是一個應用級代理,在保證客戶端主機和服務器主機網絡連通后,需要客戶端軟件做相應的設置后才能使用,比如給 Internet Explorer設置代理服務器地址、端口等。
WEB緩存功能對于一個規(guī)模較大、訪問繁忙的網絡來說是有必要的,IBM網站上的一篇文章,詳細分析介紹了WEB緩存給上網用戶帶來的好處:
http://www-900.ibm.com/developer ... achinga/index.shtml

下面我們就介紹一下squid的有關內容。

§§ 安裝運行squid

Redhat 7.3自帶Squid的rpm包squid-2.4.STABLE6-1.7.2.i386.rpm,這里我們直接利用rpm來安裝Squid:

[root@rh73 /mnt/cdrom/RedHat/RPMS]# rpm -ivh squid-2.4.STABLE6-1.7.2.i386.rpm

Preparing... ########################################### [100%]

1:squid ########################################### [100%]

安裝后的Squid配置文件在/etc/squid/目錄下,只需要簡單的配置一下/etc/squid/squid.conf就可以讓它工作起來了。

默認安裝的Squid配置文件是一個兩千多行的文本,實事上你用不到設置那么多。用編輯器打開該配置文件,找到http_access設置部分,把
http_access deny all

一行改成

http_access allow all

然后啟動Squid:
/etc/rc.d/init.d/squid start

現(xiàn)在你的Squid代理服務器已經可以使用了。到客戶端設置上網軟件的代理選項,以Internet Explorer 6.0為例,在Internet屬性設置里設置“連接”屬性,點“局域網設置”按鈕。

在彈出的對話框中選中“為LAN使用代理服務器”,在地址欄填入代理服務器地址,這里是:192.168.100.254,端口為squid默認的3128。

確認。此時你再用Internet Explorer上網便是使用squid代理。你可以察看squid的log文件來觀察到客戶端主機通過squid的訪問情況:

[root@rh73 ~]# tail -f /var/log/squid/access.log


在這里,上面的設置只對Internet Explorer起作用。如果你按照前面的章節(jié)在Linux接入服務器上實現(xiàn)了NAT的功能,除了IE瀏覽器里訪問http、ftp服務是在用squid 代理外,其它上訪問Internet的操作,如收發(fā)Email,telnet,還是通過NAT完成訪問。當你把瀏覽器的代理設置選項清除后,你又可以恢復到NAT方式訪問Internet。

§§ 設置squid

前面的配置是不加限制的允許內部所有用戶使用該代理上Internet,顯然這不是一個很好的訪問策略。我們說過,代理方式對用戶權限的控制有著非常豐富的支持。下面就看看squid如何實現(xiàn)多樣化的權限控制的。

讓我們先了解一下squid.conf的幾個配置選項和訪問控制特性:

Squid 的定制是通過設置它的配置文件 squid.conf 來實現(xiàn)的,squid.conf 文件通常在 /etc/squid 目錄下。這個配置文件內容很多,但它的每個選項都有詳盡的說明。下面是幾個常用的配置參數(shù):

http_port

首先來更改一下 http_port,這個選項指定了 Squid 監(jiān)聽客戶請求的端口,默認值是 3128。要使用代理功能,建議這個端口值和運行 Squid 的機器的 IP 地址一起使用,可以修改成下面這樣:

http_port 192.168.100.254:3128

上述聲明表示 Squid 綁定在 IP 地址 192.168.100.254 上,端口為 3128。端口可以設置為任意值,但要確認沒有其他程序會使用同樣的端口。/etc/services文件列出了常用端口,如果你想為squid設置其它的端口,可以參考這個文件的內容,防止重復設置。

visible_hostname 192.168.100.254

運行squid的主機的名字,可以寫上該機器的IP地址。

[email]cache_mgrpangty@usa.net[/email]

管理員的郵件地址。在訪問發(fā)生錯誤時,visible_hostname和cache_mgr這兩個選項的值顯示在錯誤提示頁面內的相關位置。

cache_mem 16 MB

定義緩存內存,一般定義為物理內存大小的1/3。默認設置為8MB。

cache_dir Type Directory-Name Fs-specific-data [options]

定義硬盤緩存空間以存儲訪問過的頁面或其它資源的拷貝。Type是指存儲類型,一般設置為ufs。Directort-Name代表緩存的位置,默認的設置是cache_dir ufs /var/spool/squid 100 16 256。其中100代表緩存空間最大為100M;16和256代表緩存目錄下的一級和二級目錄數(shù)。

訪問控制
控制用戶的訪問權限等功能是使用squid的訪問控制特性來實現(xiàn)的。Squid 訪問控制有兩個要素:ACL和訪問列表。訪問列表可以允許或拒絕某些用戶對特定服務的訪問。

為了使用控制功能,必須先設置 ACL。ACL 聲明的格式如下:

acl acl_element_name type_of_acl_element values_to_acl


下面列出一些重要的 ACL類型(type_of_acl_element)

l src : 源地址(即客戶機IP地址)

l dst : 目標地址(即服務器IP地址)

l srcdomain : 源名稱 (即客戶機名稱)

l dstdomain : 目標名稱 (即服務器名稱)

l time : 一天中的時刻和一周內的一天

l url_regex : URL 規(guī)則表達式匹配

l urlpath_regex: URL-path 規(guī)則表達式匹配,略去協(xié)議和主機名

l proxy_auth : 通過外部程序進行用戶驗證

l maxconn : 單一 IP 的最大連接數(shù)


注:
1. acl_element_name 可以是任一個在 ACL 中定義的名稱。

2. 任何兩個 ACL 元素不能用相同的名字。

3. 每個 ACL 由列表值組成。當進行匹配檢測的時候,多個值由邏輯或運算連接;換言之,即任一 ACL的值被匹配,則這個 ACL即被匹配。
4. 并不是所有的 ACL都能使用訪問列表中的全部類型。

5. 不同的 ACL寫在不同行中,Squid 將把它們組合在一個列表中。

我們可以使用許多不同的訪問列表。我們常用的是http_access: 允許 HTTP 訪問,這個是主要的訪問控制列表。

訪問列表的規(guī)則由一些類似 'allow' 或 'deny' 的關鍵字構成,用以允許或拒絕向特定或一組 ACL 元素提供服務。


注:

1. 這些規(guī)則按照它們的排列順序進行匹配檢測,一旦檢測到匹配的規(guī)則,匹配檢測就立即結束。

2. 一個訪問列表可以又多條規(guī)則組成。

3. 如果沒有任何規(guī)則與訪問請求匹配,默認動作將與列表中最后一條規(guī)則對應。

4. 一個訪問條目中的所有元素將用邏輯與運算連接:

http_access Action 聲明1 AND 聲明2 AND 聲明 OR.

http_access Action 聲明3

多個 http_access 聲明間用或運算連接,但每個訪問條目的元素間用與運算連接。

5. 請記住列表中的規(guī)則總是遵循由上而下的順序。

我們具體來看看如何運用acl和http_access。首先把squid.conf的配置改回原狀,即修改http_access allow all為http_access deny all。下面給出幾種常用訪問控制:


根據(jù)IP鑒權

只有地址為192.168.100.10和192.168.100.100的終端可以使用代理

在squid.conf的ACCESS CONTROL配置部分添加

acl authorizedip src 192.168.100.10

acl authorizedip src 192.168.100.100

然后到http_access部分

在http_access deny all這一行前面添加

http_access allow authorizedip

如果需要設置的IP地址非常多,又不連續(xù),是不是要寫上一大堆的acl xxx xxx x.x.x.x?有一個簡單的方法,把這些IP地址寫在一個文件里,比如/etc/squid/authorizedip.txt,每行一個。然后在squid.conf里這樣寫

acl authorizedip src "/etc/squid/authorizedip.txt"

根據(jù)時間控制

關于時間段的設置,可以參見squid.conf中的說明,具體是S - Sunday, M - Monday, T - Tuesday, W - Wednesday, H - Thursday, F - Friday A - Saturday,如果七天都允許,也可以不寫。時間格式是H1:M1-H2:M2,要求是前面的要小于后面的。

# 定義一個訪問時間段:每周星期一到星期五的上午八點到下午五點,允許alloweduser用戶在這個時間段內上網

acl accept_time time MTWHF8:00-17:00

http_access allow alloweduser accept_time

http_access deny alloweduser

訪問特定URL地址

雖然我們不希望所有的人都使用代理自由的訪問Internet,但有幾個網站是可以讓內部終端都能訪問的。在squid.conf里添加訪問控制:

acl alloweddomain dstdomain .linuxforum.net .linuxaid.com.cn

http_access allow alloweddomain

同樣的,如果參數(shù)很多的情況,也可以把這些允許的地址名寫到一個文本里:

acl alloweddomain dstdomain "/etc/squid/alloweddomain.txt"

alloweddomain.txt里是允許訪問站點的列表,每行一個。

根據(jù)關鍵字過濾網址

有些網站(色/情/網站,廣告網站)很令人討厭,通過設置acl可以很容易屏蔽掉這些站點:

acl denyurl url_regex sex boylink xxx city69 asiaadult sehu

http_access deny denyurl

這個設置將過濾帶有sex boylink xxx city69 asiaadult sehu這些關鍵字的URL地址。

和前面一樣,也可以把這些關鍵字寫到一個文本里

acl denyedurl url_regex "/etc/squid/sex.txt"

http_access deny denyurl

基于用戶的認證

Squid本身并不支持用戶驗證,它是通過外部程序提供用戶驗證功能,用戶通過squid訪問前需要輸入有效的用戶名和密碼??梢杂?proxy_auth ACL 和 authenticate_program 來實現(xiàn)這個功能,在允許訪問前強制進行用戶名和密碼的核查。下面列出一些 Squid 能用到的驗證程序:

NCSA : 使用 NCSA 風格的用戶名和密碼檔

LDAP : 使用 Linux Lightweight 目錄訪問協(xié)議(Linux Lightweight Directory Access Protocol)

SMB : 使用 SMB 協(xié)議的服務,如 SAMBA 或 Windows NT

MSNT : 使用 Windows NT 的域驗證

PAM : 使用 Linux 的可裝載驗證模塊

getpwam : 使用 Linux 密碼檔

使用驗證功能必須用authenticate_program 選項指定使什么驗證程序,并且請確認選定的驗證程序已安裝并能很好的工作。默認的,這些驗證程序放在/usr/lib/squid/目錄下。

以NCSA認證為例,修改 squid.conf 文件選定驗證程序:

authenticate_program /usr/lib/squid/ncsa_auth /etc/squid/passwd

acl alloweduser proxy_auth pangty

http_access allow alloweduser

其中/etc/squid/passwd是用戶和密碼列表,這個文件可以用apache軟件包帶的htpasswd來產生,它的內容可能是這樣的:

pangty:wCQhCeZOOF3vk

pangty是用戶名,“:”號后面的是該用戶的密碼。

注意:修改了squid.conf配置后,需要重新啟動squid或者告訴squid重新裝入配置文件才能起作用。這樣執(zhí)行:

重起squid:

[root@rh73 ~]# /etc/rc.d/init.d/squid restart


不重起,只裝入新的配置文件:

[root@rh73 ~]# /etc/rc.d/init.d/squid reload

以上是squid的常用的配置選項,這對于一般的應用來說已經足夠了,如果你需要更多的特性支持,請閱讀下面的內容。

§§ 需要更多的功能

顯示中文錯誤提示信息

默認的,squid在發(fā)生錯誤時顯示的是英文提示信息,squid的提示信息已經被翻譯成很多語言,可以很方便的讓他顯示中文信息:

[root@rh73 ~]# cd /etc/squid/

[root@rh73 ~]# rm -f errors

[root@rh73 /etc/squid]# ln -s /usr/lib/squid/errors/Simplify_Chinese/ errors

/usr/lib/squid/errors下面有squid的各種語言版本的提示信息,按目錄存放在不同的子目錄下面。

支持基于MAC的控制以及訪問帶有下劃線的URL

由于計算機的IP地址是隨時可以更改的,所以即便你設置了ACL限制只有某些IP的計算機可以訪問Internet,其它人仍然可以在該計算機關機的情況下,修改成這些允許上網的IP地址后訪問Internet。另外,前面我們是使用DHCP來管理內部網絡上的計算機的IP地址,每臺計算機每次獲得的IP地址可能是不一樣的,所以,單純的通過IP地址來控制上網權限并不適合所有的場合,而MAC地址相對是穩(wěn)定的,一般網卡的MAC地址不能夠更改,所以基于MAC地址的用戶控制非常適合解決這兩種情況帶來的問題。

另外,我們訪問Internet時,有時候會遇到這樣的網站地址:http://www.hello_world.com,在網站的URL地址里面有下劃線,這時Red Hat Linux自帶的squid軟件包可能會報告無法訪問該網站。

這些功能需要重新編譯squid源代碼增加相應的編譯選項來實現(xiàn)。下面我們就來看一下如何使用rpm重新編譯軟件包源代碼獲得必要的功能。

當文章寫到這里的時候,Red Hat Linux網站發(fā)布了squid的升級軟件包,我們可以從網上獲得它的最新源代碼rpm包:

ftp://updates.redhat.com/7.2/en/ ... ABLE6-6.7.3.src.rpm

在開始編譯前,有一些軟件包是需要首先安裝,這可能包括rpm-build、sgml-tools,前者在Red Hat Linux的光盤上可以找到,后者可以從這里下載:

ftp://ftp.freesoft.cei.gov.cn/.m ... s-1.0.9-12.i386.rpm

安裝squid的源代碼包

[root@rh73 ~]# rpm -ivh squid-2.4.STABLE6-6.7.3.src.rpm

安裝后的源代碼包在/usr/src/redhat/SOURCES目錄下,我們關心的是另外一個文件/usr/src/redhat/SPECS/squid.spec,這里面有squid的相關編譯選項,修改該文件%configure部分如下:

%configure \

--exec_prefix=/usr --bindir=/usr/sbin --libexecdir=/usr/lib/squid \

--localstatedir=/var --sysconfdir=/etc/squid \

--enable-poll --enable-snmp --enable-removal-policies="heap,lru" \

--enable-storeio="aufs,coss,diskd,ufs" \

--enable-delay-pools --enable-linux-netfilter \

--with-pthreads \

--enable-underscores \

--enable-arp-acl \

--enable-err-language=Simplify_Chinese \

--enable-auth-modules="LDAP,NCSA,PAM,SMB,MSNT" # --enable-icmp

--enable-underscores是增加對下劃線網址的支持,--enable-arp-acl是增加支持MAC地址方式的鑒權。


開始編譯產生新的RPM包:

[root@rh73 ~]# rpm -ba squid.spe

這條命令將根據(jù)squid.spec的配置重新編譯生成新的rpm包。編譯過程視機器性能的好壞而定,大概需要幾分鐘到幾十分鐘不等,如果沒有什么錯誤,最后產生的新的rpm包在/usr/src/redhat/RPMS/i386/目錄下:squid- 2.4.STABLE6-6.7.3.i386.rpm

安裝新的rpm包:

[root@rh73 ~]# rpm -Uvh /usr/src/redhat/RPMS/i386/squid-2.4.STABLE6-6.7.3.i386.rpm

注意,這里使用了-U參數(shù),是因為我們前面已經安裝過squid的一個較舊的版本,-U參數(shù)指出這個操作是對原有版本軟件包的升級?,F(xiàn)在你的squid就可以支持MAC地址鑒權和帶下劃線的URL地址了。 8)

配置squid.conf來支持MAC地址鑒權,在squid.conf里加入這樣的內容:

acl allowedmac arp00:10:DC:8F:5B:FF

http_access allow allowedmac

上面只是常用的幾種ACL設置的示例,關于ACL可以訪問squid主頁上FAQ文檔的Access Controls部分獲得更多的信息:

http://www.squid-cache.org/Doc/FAQ/FAQ-10.html

§§ 配置透明代理

透明代理是NAT和代理的完美結合,之所以稱為透明,是因為在這種工作方式下你感覺不到代理的存在,和單純使用NAT一樣,對上網的客戶端沒有任何特殊的設置。Squid可以通過配置支持透明代理。


很多文章講到共享上網就會講有關透明代理(iptables + squid或ipchains + squid)的內容,我個人認為對于規(guī)模不大的網絡,又沒有內容過濾等功能的要求,使用squid是沒有必要的,單純的使用NAT方式就足夠了,并且這樣對運行NAT的服務器的要求就更加低,比如使用一臺486 + 4M內存的機器,如果使用那些經過特殊定制的Linux系統(tǒng),甚至連硬盤都不需要,只要一張軟盤就可以了。

如果是源代碼方式編譯安裝的squid,請在編譯選項里指明--enable-linux-netfilter選項。Red Hat Linux自帶的squid支持透明代理,我們可以直接修改/etc/squid/squid.conf文件,設置必要的參數(shù):

httpd_accel_host virtual

httpd_accel_port 80

httpd_accel_with_proxy on

httpd_accel_uses_host_header on

運行/etc/rc.d/init.d/squid reload使設置生效,然后修改fw.sh腳本,在最后添加這樣一行:

iptables -A PREROUTING -t nat -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128

這將把所有局域網用戶通過Linux接入服務器訪問www服務的訪問請求重定向到工作在3128端口的squid處理。運行fw.sh腳本,使設置生效。就這么簡單!

你可能還記得fw.sh里面的關于NAT的規(guī)則:

iptables -A POSTROUTING -t nat -s 192.168.100.0/24 -o eth0 -j SNAT --to-source 61.156.35.114

由于PREROUTING規(guī)則總在POSTROUTING規(guī)則之前應用,所以不用擔心squid被NAT規(guī)則屏蔽掉。

注意:使用透明代理時,無法同時使用squid基于用戶帳號的驗證功能!


想了解更多關于透明代理的資料,請訪問TLDP(The Linux Documentation Project)上關于透明代理的HOWTO文檔:

http://www.tldp.org/HOWTO/mini/TransparentProxy.html

§§ 一個squid.conf的配置實例

現(xiàn)在給出一個支持透明代理并使用MAC地址控制用戶上網權限的squid配置文件,該配置還支持特定網站(如色/情/網站)的過濾功能:

#定義服務器地址和端口

http_port 192.168.100.254:3128

#定義服務器名字

visible_hostname 192.168.100.254

#定義管理員郵件地址

cache_mgr [email]pangty@usa.net[/email]

#定義緩存內存空間和緩存目錄

cache_mem 16 MB

cache_dir ufs /var/spool/squid 100 16 256

#支持透明代理

httpd_accel_host virtual

httpd_accel_port 80

httpd_accel_with_proxy on

httpd_accel_uses_host_header on

#定義acl

#sexurl.txt列出要過濾色/情/網站地址的關鍵字,每個關鍵字占一行,如xchina

#maclist.txt列出允許上網的主機的MAC地址,每個地址占一行,如00:50:56:C0:00:08

acl all src 0.0.0.0/0.0.0.0

acl sexurl url_regex "/etc/squid/sexurl.txt"

acl allowedmac arp "/etc/squid/maclist.txt"

#定義訪問策略

http_access deny sexurl

http_access allow allowedmac

http_access deny all

相關文章

  • Ubuntu20.04防火墻設置簡易教程(小白)

    Ubuntu20.04防火墻設置簡易教程(小白)

    這篇文章主要介紹了Ubuntu20.04防火墻設置簡易教程(小白),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-07-07
  • 一道題理解Linux中sort命令的多個參數(shù)

    一道題理解Linux中sort命令的多個參數(shù)

    今天小編就為大家分享一篇關于一道題理解Linux中sort命令的多個參數(shù),小編覺得內容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-03-03
  • 如何使用Linux文本操作命令ed進行提權nov5詳解

    如何使用Linux文本操作命令ed進行提權nov5詳解

    這篇文章主要給大家介紹了關于如何使用Linux文本操作命令ed進行提權nov5的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用Linux系統(tǒng)具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-08-08
  • linux下安裝ffmpeg的詳細教程

    linux下安裝ffmpeg的詳細教程

    這篇文章主要介紹了linux下安裝ffmpeg的詳細教程,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-07-07
  • Linux環(huán)境下GRE的部署方式

    Linux環(huán)境下GRE的部署方式

    這篇文章主要介紹了Linux環(huán)境下GRE的部署方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • centos7云主機系統(tǒng)下掛載磁盤的方法

    centos7云主機系統(tǒng)下掛載磁盤的方法

    本篇文章主要介紹了centos7云主機系統(tǒng)下掛載磁盤的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-02-02
  • Centos7修改主機名hostname的三種方法

    Centos7修改主機名hostname的三種方法

    今天小編就為大家分享一篇關于Centos7修改主機名hostname的三種方法,小編覺得內容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-01-01
  • Linux初學(CnetOS7 Linux)之切換命令模式和圖形模式的方法

    Linux初學(CnetOS7 Linux)之切換命令模式和圖形模式的方法

    本篇文章主要介紹了Linux初學(CnetOS Linux7)之切換命令模式和圖形模式的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-03-03
  • Linux之進程的虛擬地址空間,邏輯地址和物理地址,進程管理命令

    Linux之進程的虛擬地址空間,邏輯地址和物理地址,進程管理命令

    這篇文章主要介紹了Linux之進程的虛擬地址空間,邏輯地址和物理地址,進程管理命令,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • CentOS環(huán)境下安裝PHPUnit的方法分析

    CentOS環(huán)境下安裝PHPUnit的方法分析

    這篇文章主要介紹了CentOS環(huán)境下安裝PHPUnit的方法,結合實例形式分析了CentOS環(huán)境下安裝PHPUnit的步驟、相關問題與解決方法,需要的朋友可以參考下
    2018-05-05

最新評論