一.Squid簡介: linux
Squid代理是目前使用很是廣泛的一種將局域網和interner鏈接到一塊兒的方式,其優勢是: web
1, 能夠預存緩存,減輕服務器的訪問壓力,同是也能夠提升client的訪問速度。例如咱們平時用的126,163,都是基於squid代理 正則表達式
2, 在必定程度上很大的解決了IP緊張的問題。 vim
3, 它能夠對web訪問的方式基於應用層內容進行過濾控制,同時由於它介於服務器和client之間,在必定程度上提升了服務器的安全性。 瀏覽器
缺點: 緩存
Squid支持的服務種類較少:HTTP. FTP. 安全
二.Squid根據代理的方式分爲普通代理,透明代理,反向透明代理。 服務器
1. 標準的代理緩衝服務器 網絡
一個標準的代理緩衝服務器主要用來存儲用戶訪問過的網頁信息,當client向squid服務器請求時,squid服務器在向web請求數據,將數據傳給client的同時會緩存一份在本身緩存器中,在必定時間內有一樣的請求時,squid就不用再向webserver請求數據,而是直接將緩存中的數據恢復給庫戶端,這樣既提升了client的訪問速度,又大大減輕了服務器的訪問壓力。可是其最大的缺點是client須要在本身的web瀏覽器中配置squid代理服務器的地址和端口號,這很大程度上增長了client的難度和網絡管理員的管理難度。所以出項了下面的透明代理 dom
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 (httpd,ftp)
Squid:eth0 192.168.0.20
eth1
內網:
注意:
Squid默認是deny all的。咱們須要事先在squid.conf配置文件中在http_access deny all 的前面加入http_access allow all。啓動squid代理服務。在
下面咱們來正是開始咱們的實驗:
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
實驗效果驗證(不須要在瀏覽器中指定代理服務器的地址、端口) 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
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$
要求:
容許
容許
在配置文件中作以下修改:
acl srcnetwork src
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