Squid介紹及實驗實現透明和反向代理

一.Squid簡介:

Squid代理是目前使用非常普遍的一種將局域網和interner連接到一起的方式,其優點是:

1, 可以預存緩存,減輕服務器的訪問壓力,同是也可以提高client的訪問速度。例如我們平時用的126163,都是基於squid代理

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

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

缺點:

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

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

1. 標準的代理緩衝服務器

一個標準的代理緩衝服務器主要用來存儲用戶訪問過的網頁信息,當clientsquid服務器請求時,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服務器的負載

三.Squid的基本配置

1.軟件包名:squid-2.6.STABLE6

 服務名:squid

 主程序:/usr/sbin/squid

 配置目錄:/etc/squid/

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

 默認監聽端口:TCP 3128

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

2.常用配置項

 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 (緩存空間的二級子目錄個數)

3.常用命令

Squid z 初始化緩存

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

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

四.實驗實現squid

實驗環境:

外網:192.168.0.254 httpdftp

Squideth0 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.20IE中加入squid的端口號以及IP地址。顯示出 RedHat enterprise test page爲正常

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

1. 實現透明代理

透明代理的實現步驟:

安裝squid:yum install squid -y

修改squid.conf配置文件,vim /etc/squid/squid.conf

http_port 192.168.0.20:8080 transparent

啓動服務:# service squid start

添加iptables規則:

# 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

注意:

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

我們需要取消掉剛纔透明代理的配置,再開始做反向透明代理。

反向透明代理的實現步驟

# 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

測試

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

查看日誌記錄

# tail -1 /var/log/squid/access.log


五. 訪問控制規則的匹配順序

1.①沒有設置任何規則時: 將拒絕所有客戶端的訪問請求

②有規則但找不到相匹配的項時:將採用與最後一條規則相反的權限,即如果最後一條規則是allow,那麼就拒絕客戶端的請求,否則允許該請求

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

2.一些常用選項:

src  源地址

dst 目標地址

port 端口

srcdomain 來源域限制

dstdomain 轉發域限制

time 時間限制

maxconn 最大連接數限制

url_regex 正則表達式限制

urlpath_regex 正則表達路徑限制

arp mac限制

proto 協議限制

3.規則示例:

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

 保存退出,進行實驗效果的驗證

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章