Squid代理服務器配置/二級代理

Squid全名Squid Cache(官網:http://www.squid-cache.org/),一個高性能的代理緩存服務器。主要支持FTP、HTTPS和HTTP協議。Squid用途廣泛,可以作爲緩存服務器,可以過濾流量幫助網絡安全,也可以作爲代理服務器鏈中的一環,向上級代理轉發數據或直接連接互聯網。

下面我們來搭建一個代理服務器,同時完成一個多層代理的配置:

一、安裝Squid3 ,在centos中,安裝squid是非常簡單的:

  1. 執行下在的命令:

    yum install -y squid

  2. 配置文件目錄:/etc/squid/squid.conf
  3. 啓動服務
    systemctl start squid.service(systemctl restart squid.service)

     

  4. 配置系統防火牆規則,增加squid端口(squid默認的端口爲:3128)

    firewall-cmd --zone=public --add-port=3128/tcp --permanent
    firewall-cmd --reload
     

二、驗證服務器

  1. 打開Squid實時日誌(日誌目錄:/var/log/squid/access.log)

    tail -f /var/log/squid/access.log


     
  2. window系統使用:配置IE瀏覽器代理好後,訪問外網網站,可看到日誌文件有內容輸出且頁面正常打開,說明配置成功。
     

四、高級應用(多層代理)

在上面,我們完成了一個單代理服務器的簡單配置和使用,接下來有個需求,阿里雲上某臺無外網服務器訪問【*.baidu.com】這類請求時,需要通過公司的代理服務器訪問目標服務器上的相關服務(如下圖),對於其它請求則不用通過公司的代理服務器,那我們需要怎麼配置?

1、首先在2臺服務器上安裝Squid;

2、在【代理服務-1】上完進行下配置

  • 修改配置文件

    vim /etc/squid/squid.conf #在http_access deny !Safe_ports 前新增下面的內容

     

    #定義基於【目標域名】的策略
    acl cnlist dstdomain .baidu.com

    #配置一個父代理服務器的信息
    cache_peer 父代理服務器IP parent 3128 0 no-query no-digest

    #指定只有符合策略的請求才走父代理服務器
    cache_peer_access 父代理服務器IP allow cnlist #對*.baidu.com的請求走上面配置的父代理

    never_direct allow cnlist #對*.baidu.com的請求不發送給源服務器,轉向父代理

    #指定總是要發給源服務器請求ACL策略
    always_direct allow !cnlist # 對非*.baidu.com的請求不走父代理

  • 重啓Squid服務
    systemctl restart squid.service
     
  •  在無外網服務器上訪問www.baidu.com,查看是否正常訪問,是則說明配置生效
     

四、其它配置說明

1、 配置可訪問代理服務器的IP

      acl localnet src  請求電腦的IP

 

2、acl規則配置說明

   格式:acl name type parm...    #多個參數之間爲OR的關係

     squid有25種type,常用的類型及功能作用列舉如下:

 

名稱

作用

示例

備註

src/dst

指定控制源或目標的IP地址列表

acl localnet src 192.168.1.0/24

acl localnet src 172.16.10.0-172.16.19.0/24     

地址控制勿用主機名,解析比較慢,主機對應IP變化後會失效,要使用srcdom等;

srcdomain
dstdomain
指定源或目的的域名列表

acl servers dstdomain  .baidu.com

.作爲通配符,它匹配此域的任何主機域,包括域名自身。無.則爲精確匹配。

srcdom_regex 
dstdom_regex
url_regex
urlpath_regex
ident_regex     
proxy_auth_regex
req_mime_type         
指定按照指定的字段
進行正則表達式的匹配

acl servers dstdom_regex -i baidu 

支持一些參數,如-i 大小寫不敏感;

ident/proxy_auth

支持身份過濾

acl auser ident proxy

 
port 支持端口的過濾

acl SafePort port  80 8080 8000

端口比較適合用範圍來表示,通常

myip/myport

指定squid服務器的地址與端口 acl aport myport 80
acl pport myport 3128

myip用於在系統有多個接口時指定自己的IP

myport用於squid在多個端口上監聽時指示不同PORT

method

支持HTTP請求方法的過濾

acl Uploads method PUT POST

 

proto

支持不同協議的過濾

HTTP/HTTS/FTP等

acl ftpcl proto ftp  
maxconn

指定每個IP的最大連接數

acl MaxCon maxconn 10

 

arp

檢測客戶端的MAC地址

acl mybox arp 00:10:20:30:40:50

 

 

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