天天看點

Linux全攻略--Squid伺服器配置與管理

Squid是針對WEB客戶機的高性能代理緩沖伺服器,其作用是加快INTERNET的通路速度,同時為WEB伺服器提供安全機制.

一.安裝Squid軟體包.

可看到已經安裝好了.

二.Squid.conf檔案詳解和常用配置.

下面看下部分重要的設定.由于檔案内容太多.

設定端口:

#Default:

# http_port 3128  //浏覽器連接配接到本Proxy Server時所用的端口,可修改.

Cache選項設定

# maximum_object_size 4096 KB

# minimum_object_size 0 KB

# maximum_object_size_in_memory 8 KB //記憶體中最大的對象大小

# ipcache_size 1024 //IP對應cache的大小

# ipcache_low 90

# ipcache_high 95

# fqdncache_size 1024  //域名全稱CACHE的大小

# cache_replacement_policy lru  //CACHE替換政策

# memory_replacement_policy lru  記憶體替換政策

# cache_dir ufs /var/spool/squid 100 16 256  //存放路徑大小和具體配置

dns_nameservers xxxx.xxxx.xxxx.xxxx//内部指定DNS伺服器

authenticate_program xxxx具//身份認證程式

authenticate_children 32  //身份認證程式啟動的程序數目

request_body_max_size 5MB //最大請求的BODY大小

reply_body_max_size 20MB

#cache_mem 85MB  //設定PROXY SERVER可使用多少記憶體作為高速緩存,一般要設定為實體記憶體的1/3

cache_swap_low 80

cache_swap_high 97  //這兩行設定CACHE進行替換的閘值,當占用到97%的CACHE後,CACHE中的内容将被清空20%

#cache_dir ufs /var/spool/squid 100 16 256 //設定高速緩存目錄和高速緩存可以使用的硬碟空間,100表示最大可使用100MB,16表示第一層子目錄最多可以有16個,256表示每個第一層子目錄下最多可以有256子目錄

設定日志檔案存儲路徑

# cache_access_log /var/log/squid/access.log //設定高速緩存存取記錄檔案的名稱和所在目錄,它記錄了所有高速緩存的行為,如果不需要,可以設為"cache_access_log/dev/null"

# cache_log /var/log/squid/cache.log  //設定緩存存儲記錄檔案的名稱和所在目錄,它記錄了哪些資料從高速緩存移出,哪些資料被放入高速緩存

# cache_store_log /var/log/squid/store.log //設定store.log檔案存放的位置,access.log,cache.log,store.log等檔案會越來越大,使用者最好定期備份和删除,或者将它們都關閉

#reference_age 2 month  //設定高速緩存中的資料可儲存多久,這裡我們設定為7天,若是天内沒有存取過該資料,則訪資料會被删除

Cache_mgr root//設定SQUID出現問題時,系統将給ROOT發送E-MAIL

多級緩存設定

#                                                                                             proxy          icp

#hostname                                                  type                  port             port           options

#cache_peer parent.linux.net              parent                    3128           3130       [proxy-only]

#cache_peer sib1.linux.net                  sibling                   3128           3130        [proxy-only]

#cache_peer sib2.linux.net                   sibling                  3128           3130        [proxy-only]

//這裡可以進行多級緩存設定,設定PARENT和SIBING PROXY SERVER的網址,端口和功能.OPTION的PROXY-ONLY表示不儲存取回的資料,如此可節省硬碟空間,除非硬碟大小或者是與其它PROXY SERVER之間的網絡不夠快,否則不建議這樣做.

設定可以查詢的主機或域

# cache_peer_domain cache-host domain [domain ...]

# cache_peer_domain cache-host !domain

#  cache_peer_domain parent.foo.net .edu

#cache_host_domain 202.198.32.3 !.tw !hinet.net//設定SQUID可以查詢的PROXY SERVER所在的主機或域,如果是禁止查詢,則在前面加上"!"

#acl aclname   acltype string/file

# acl aclname time     [day-abbrevs]  [h1:m1-h2:m2]

#     day-abbrevs:

#  S - Sunday

#  M - Monday

#  T - Tuesday

#  W - Wednesday

#  H - Thursday

#  F - Friday

#  A - Saturday

#     h1:m1 must be less than h2:m2

這段語句指明要通路的時間,字母代表周日到周六

設定禁止通路某些站點.

#acl all src 0.0.0.0/0.0.0.0

#acl manager proto cache_object

#acl localhost src 127.0.0.1/255.255.255.255

#acl to_localhost dst 127.0.0.0/8

#acl SSL_ports port 443 563

#acl Safe_ports port 80  # http

#acl Safe_ports port 21  # ftp

#acl Safe_ports port 443 563 # https, snews

#acl Safe_ports port 70  # gopher

#acl Safe_ports port 210  # wa

acl flag src 192.168.5.0  //加上這一行,定義所有來自192.168.5.*通路PROXY SERVER的連接配接稱為FLAG

設定可以連接配接的端口

#http_access allow manager localhost

#http_access deny manager

#http_access deny !Saft_ports

#http_access deny CONNECT !SSL_ports

http_access allow flag

http_access deny all

//這一部分設定通路控制,也就是設定哪些情況下可以連接配接,哪些情況下不可以連接配接.

其它項目設定

icp_access allow* //允許CACHE_PEER使用ICP協定通路

proxy_auth_realm BJPU proxy-caching web server期間 //驗證框提示的BANNER

cache_effective_user*

cache_effective_group*//執行CACHE程式的使用者UID和GID

visible_hostname cnproxy.bjpu.edu.cn.cache//伺服器的機器名

memory_pools on//記憶體池設定為打開

memory_pools_limit 50 MB//記憶體池大小

三,Squid Server 配置執行個體.

在前面加上IP位址,Squid 就不會監聽外部的網絡接口

2.建立轉換目錄.

squid伺服器的初始化

當我們第一次使用squid伺服器之前需要先使用squid -z指令對squid伺服器進行初始化

# ls /var/spool/squid

# squid -z

注意:如果初始化成功的話,會顯示:2008/06/20 15:07:51| Creating Swap Directories

如果顯示的是這樣的資訊的話:FATAL: Could not determine fully qualified

hostname.  Please set 'visible_hostname'

Squid Cache (Version 2.5.STABLE6): Terminated abnormally.

CPU Usage: 0.064 seconds = 0.008 user + 0.056 sys

Maximum Resident Size: 0 KB

Page faults with physical i/o: 0

Aborted

我們需要在主配置檔案中添加一行:

# vi /etc/squid/squid.conf

visible_hostname squid      //其中squid為你目前主機的名稱

儲存退出後,再次執行squid -z就可以了。

00  01  02  03  04  05  06  07  08  09  0A  0B  0C  0D  0E  0F

啟動squid服務

# service squid start

Starting squid: .                                          [  OK  ]

在/var/spool/squid目錄中可看到00-0F等16個子目錄,在這些目錄中又各有00-0F等256個子目錄.SQUID SERVER的高速緩存檔案就存放在這些目錄中.

3.配置用戶端通過代理伺服器上網.

1)在IE浏覽器中設定.

點區域網路設定.

2)在mozilla浏覽器中設定.

在"首選項"選擇.

四.配置透明代理伺服器

建構透明代理伺服器需要對squid代理服務和iptables防火牆分别進行設定,配合使用才能實作透明代理的功能。

在squid伺服器中預設是不支援提供透明代理服務的相關功能的,是以我們需要在配置檔案中進行如下配置:

//在配置檔案的尾部添加上下列行

http_port 192.168.1.254:8080

httpd_accel_host virtual//這行語句一定要加上

httpd_accel_port 80

httpd_accel_with_proxy on

httpd_accel_uses_host_header on

cache_effective_user nobody

http_access allow all

access_dir ufs /usr/local/squid/cache 100 16 256

重新啟動服務

# service squid restart

Stopping squid: .                                          [  OK  ]

 讓系統啟動時自動運作squid,

編輯/etc/rc.d/local檔案,在檔案末尾加上:

su nobody -c "usr/local/squid/bin/squid"

然後設定iptables

執行如下指令"

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

iptables -t nat -A PREROUTING -i eth1 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 8080

iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j SNAT --to a.b.c.d

iptables -A FORWARD -m state --state ESTABLISHED,RELATED -J ACCEPT

其中EHT1 是内部網卡,ETH0是外部網卡,内網IP位址為192.168.1.0/23.ETH0對應的IP位址為218.198.67.10,ETH1對應的IP位址是192.168.1.254.

設定網關和DNS後就可在用戶端直接上網了.

五.Squid Server的安全通路設定:

1)限制内網某些IP使用代理伺服器.

要使用位址範圍192.168.5.0到192.168.5.255來為區域網路的系統定義oak acl條目,可使用下面的方法:

acl oak src 192.168.5.0/255.255.255.0

一旦定義位址範圍以後,就可以使用SQUID SERVER選項中ACL定義對系統進行控制.例如,為了允許區域網路系統中的OAK組通過代理通路WEB,可以用帶ALLOW動作的http_access指令把oak指定為ACL定義.如下

http_access allow oak

下面的例子是隻允許區域網路的oak組通過代理通路WEB站點,而拒絕其它主機的通路,這裡設定了兩個ACL條目:一個用于本地系統,允許區域網路的OAK通路,另一個用于拒絕其它主機的通路.如下:

acl all src 0.0.0.0/0.0.0.0

2)限制内網某些MAC位址使用代理伺服器.

例如下面:

acl advance arp 00:01:02:1f:2c:3e 00:01:02:3c:1a:8b...

3)限制内網使用者通路某些網站

下面的例子是拒絕任何使用代理的使用者通路主機nix.linux.com.如是所在的區域網路計算機通過代理通路該主機,則可以使用這樣的指令限制通路.

acl nic dst nic.linux.com

http_access deny nic

acl center dstdomain .linux.com

http_access deny center

下面的例子是限制通路.linux.com 和.unin.com

acl xxk dstdomain .linux.com .unix.com

http_access deny xxk

如果要限制的網站很多,可以使用檔案的方式:如

acl sexip dst "/etc/squid/acl/sexip"

acl sexweb dstdomain "/etc/squid/acl/sexweb"

http_access deny sexip

http_access deny sexweb

然後把要控制的站點的IP位址和域名存放在相應的檔案中,例如gedit編輯/etc/squid/acl/sexweb檔案,把下面的一些站點添加進去:

.xxxhu.com

.sexhu.com

...

4)限制内網使用者通路某些格式的檔案.如下:

acd xfile urlpath_regex \.mp3$ \.avi$ \.exe$

http_access deny xfile

當然,我們也可以指定有些特定使用者可以通路這些檔案類型,方法如下:

acl myhost src 192.168.1.18 192.168.5.10

acl xfile urlpath_regex \.mp3$ \.avi$ \.exe$

http_access allow myhost xfile

5)限制内網使用者使用代理伺服器的時間

axcl myhost src 192.168.1.18 192.168.5.10

acl all src 192.168.1.0/24 192.168.5.0/24

acl worktime time MTWHF 8:00-12:00 14:00-18:00

acl alltime time SMTWHFA 0:00-24:00

http_access allow myhost alltime

http_access allow all worktime

http_access deny worktime

6)控制内網使用者使用代理伺服器的并發連接配接數.

acl conncount maxconn 3

http_access deny conncount normal

http_access allow normal

結束...

     本文轉自yangming1052 51CTO部落格,原文連結:http://blog.51cto.com/ming228/119415,如需轉載請自行聯系原作者

繼續閱讀