Squid代理配置

Squid代理linux

目標:web

瞭解squid的工做原理,熟練掌握squid的配置,實現其普通代理,透明代理,方向透明代理,http_access控制正則表達式

內容:apache

A.Squid簡介:vim

Squid代理是目前使用很是廣泛的一種將局域網和interner鏈接到一塊兒的方式,這樣作的理由和好處入下:瀏覽器

1, 能夠預存緩存,減輕服務器的訪問壓力,同是也能夠提升client的訪問速度。例如咱們平時用的126,163,都是基於squid代理緩存

2, 在必定程度上很大的解決了IP緊張的問題。安全

3, 它能夠對web訪問的方式基於應用層內容進行過濾控制,同時由於它介於服務器和client之間,在必定程度上提升了服務器的安全性。服務器

缺點:網絡

Squid支持的服務種類較少:HTTP. FTP.

Squid根據代理的方式分爲普通代理,透明代理,方向透明代理。

1 標準的代理緩衝服務器

一個標準的代理緩衝服務器主要用來存儲用戶訪問過的網頁信息,當client向squid服務器請求時,squid服務器在向web請求數據,將數據傳給client的同時會緩存一份在本身緩存器中,在必定時間內有一樣的請求時,squid就不用再向webserver請求數據,而是直接將緩存中的數據恢復給庫戶端,這樣既提升了client的訪問速度,又大大減輕了服務器的訪問壓力。可是其最大的缺點是client須要在本身的web瀏覽器中配置squid代理服務器的地址和端口號,這很大程度上增長了client的難度和網絡管理員的管理難度。所以出項了下面的透明代理

2 透明代理緩衝服務器

透明代理緩衝服務和標準代理服務器的功能徹底相同。可是,代理操做對客戶端的瀏覽器是透明的(即無需指明代理服務器的IP和端口)。咱們須要在linux squid代理服務器上作最一些相應的改動,並作iptables的端口轉發便可。這對與企業的網管主機共享接入到Internet很實用。

3 反向代理緩衝服務器

反向代理是和前兩種代理徹底不一樣的一種代理服務。使用它能夠下降本地WEB服務器的負載。反向代理服務器承擔了對原始WEB服 務器的靜態頁面的請求,防止本地服務器過載。它位於本地WEB服務器和Internet之間,處理全部對WEB服務器的請求, 組織了WEB服務器和Internet的直 接通訊。若是互聯網用戶請求的頁面在代理服務器上有緩衝的話,代理服務器直接將緩衝內容發送給用戶。若是沒有緩衝則先向WEB服務器發出請求,取回數據,本地緩存後再發送給用戶。這種方式經過下降了向WEB服務器的請求數從而下降了WEB服務器的負載

B.Squid的基本配置

v squid軟件包

ü 軟件包名:squid-2.6.STABLE6

ü 服務名:squid

ü 主程序:/usr/sbin/squid

ü 配置目錄:/etc/squid/

ü 主配置文件:/etc/squid/squid.conf

ü 默認監聽端口:TCP 3128

ü 默認訪問日誌文件:/var/log/squid/access.log

v 經常使用配置項

ü http_port 3128

ü cache_mem 64 MB (爲本身物理內存的1/3便可)

ü maximum_object_size 4096 KB

ü reply_body_max_size 10240000 allow all

ü access_log /var/log/squid/access.log squid

ü visible_hostname proxy.test.com

ü cache_dir ufs (unix file system) /var/spool/squid (爲緩存目錄分配的磁盤空間) 100 (爲緩存目錄分配的磁盤空間(MB) 16 (緩存空間的一級子目錄個數)256 (緩存空間的二級子目錄個數)

經常使用命令

Squid –z 初始化緩存

Squid -k parser 分析配置文件語法錯誤

Squid -d 調試啓動 -D 啓動squid服務。

咱們來作個簡單實驗來實現一個簡單的透明代理:

實驗環境:

外網:192.168.0.254 (httpd,ftp)

Squid:eth0 192.168.0.20

eth1 10.0.2.150

內網:10.0.2.20

注意:

Squid默認是deny all的。咱們須要事先在squid.conf配置文件中在http_access deny all 的前面加入http_access allow all。啓動squid代理服務。在10.0.2.20的IE中加入squid的端口號以及IP地址。顯示出 RedHat enterprise test page爲正常

下面咱們來正是開始咱們的實驗:

1. 實現透明代理

透明代理的實現步驟:

修改squid.conf配置文件,並從新加載該配置

http_port 192.168.0.20:8080 transparent

[root@congtou squid]# service squid reload

添加iptables規則

[root@congtou squid]# iptables -t nat -A PREROUTING -i eth1 -s 10.0.2.150 -p tcp --dport 80 -j REDIRECT --to-ports 8080

客戶機瀏覽器

不須要在瀏覽器中指定代理服務器的地址、端口 http;//192.168.0.254

2. 實現反向透明代理

http_port 218.29.30.31:80 vhost

cache_peer 192.168.10.7 parent 80 0 originserver weight=5 max-conn=30

cache_peer 192.168.10.8 parent 80 0 originserver weight=5 max-conn=30

注意:

這裏須要注意的是反向透明代理是不能和透明代理一塊的實現的。

咱們須要取消掉剛纔透明代理的配置,再開始作反向透明代理。

反向透明代理的實現步驟

[root@mail postfix]# vim /etc/squid/squid.conf 在配置文件中添加以下語句:

http_port 10.0.2.100:80 vhost

cache_peer 192.168.0.254 parent 80 0 originserver weight=5 max-conn=30

cache_peer Web服務器地址 服務器類型 http端口 icp端口 [可選項]

(由於咱們這裏只有一個web服務服務器,這裏的意思是想讓你們瞭解下這個語句的用法) 權重爲5,最大的連接數爲30

測試

在10.0.2.150地址欄輸入 http;//10.0.2.100 出現測試頁爲正常

查看日誌記錄

[root@congtou named]# tail -1 /var/log/squid/access.log

1267973512.539 40 10.0.2.150(source) TCP_MISS/200 2795 GET http://10.0.2.100(destination)/icons/apache_pb2.gif - FIRST_UP_PARENT/192.168.0.254 (server)image/gif

下面咱們來作一些訪問規則的配置測試

v 訪問控制規則的匹配順序

ü 沒有設置任何規則時

—— 將拒絕全部客戶端的訪問請求

ü 有規則但找不到相匹配的項時

n 將採用與最後一條規則相反的權限,即若是最後一條規則是allow,那麼就拒絕客戶端的請求,不然容許該請求

n 當兩個命令羅列到一塊是取其交集

選項:

ü src

ü dst

ü port

ü srcdomain 來源域限制

ü dstdomain 轉發域限制

ü time 時間限制

ü maxconn 最大鏈接數限制

ü url_regex 正則表達式限制

ü urlpath_regex 正則表達路徑限制

ü arp mac限制

ü proto 協議限制

規則示例:

ü acl LAN1 src 192.168.10.0/24

ü acl PC1 src 192.168.10.12/32

ü acl Blk_Domain dstdomain .qq.com

ü acl Work_Hours time MTWHF 08:30-17:30

ü acl Max20_Conn maxconn 20

ü acl Blk_URL url_regex -i ^rtsp:// ^mms://

ü acl Blk_Words urlpath_regex -i sex adult

ü acl RealFile urlpath_regex -i \.rmvb$ \.rm$

要求:

容許10.0.2.0網段的主機在天天的800-1800登陸192.168.0.254ftp服務,可是不能下載pdf格式的文件。

容許10.0.2.0網段的主機在2200 -2359 0000-800 訪問服務器的httpd服務

在配置文件中作以下修改:

acl srcnetwork src 10.0.2.0/24 來源限制

acl desnetwork dst 192.168.0.0/24

acl ftptime time 8:00-18:00

acl httptime time 22:00-23:59

acl httptime time 00:00-8:00

acl ftp proto FTP

acl http proto HTTP

acl class url_regex ^.*\.pdf$

http_access allow srcnetwork desnetwork ftptime ftp !class

http_access allow srcnetwork desnetwork httptime http ==========》經測試成功,以上均成功

其餘的命令你們能夠本身測試試試。

Over

相關文章
相關標籤/搜索