linux 代理服務squid 用法


常用命令

1. 在開啟squid之前,你應該驗證其配置文件是否正確。運行如下命令即可:

# squid -k parse   #假如你看不到輸出,配置文件有效,你能繼續后面的步驟。然而,如果配置文件包含錯誤,squid會告訴你

2. 初始化cache目錄.即建立緩存目錄的存儲格式

# squid -z   #只需在第一次啟動squid服務之前執行(在初次運行squid之前,或者無論何時你增加了新的cache_dir,你必須初始化cache目錄。)

# squid -zX    #cache目錄初始化可能花費一些時間,依賴於cache目錄的大小和數量,以及磁盤驅動器的速度。假如你想觀察這個過程,請使用-X選項

3. 啟動squid服務

# service squid start   #最安全做法

# /usr/sbin/squid -s  #后台啟動,有可能不生效

4. 停止squid

# squid -k shutdown   #最安全的停止squid的方法是使用squid -k shutdown命令

5. 不中斷服務,重配置運行中的squid進程

# squid -k reconfigure   #運行中的重新引導配置squid最好的方法。squid.conf文件做了改動。為了讓新設置生效,你可以關閉和重啟squid。或者在squid運行時,重配置它。

6. 滾動日志文件處理

除非你在squid.conf里禁止,squid會寫大量的日志文件。你必須周期性的滾動日志文件,以阻止它們變得太大。squid將大量的重要信息寫入日志,假如寫不進去了,squid會發生錯誤並退出。為了合理控制磁盤空間消耗,在cron里使用如下命令:

squid -k rotate

例如,如下任務接口在每天的早上4點滾動日志:

0 4 * * * /usr/local/squid/sbin/squid -k rotate

該命令做兩件事。首先,它關閉當前打開的日志文件。然后,通過在文件名后加數字擴展名,它重命名cache.log,store.log,和 access.log。例如,cache.log變成cache.log.0,cache.log.0變成cache.log.1,如此繼續,滾動到 logfile_rotate選項指定的值。

7.添加啟動項

# echo 'systemctl start squid.service' >> /etc/rc.local

8.默認正向代理(3128)支持https,無需設置加密文件 ,反向代理時需要(一般不用squid做反向代理)

squid配置文件解析(/etd/squid/squid.conf)

#
acl all src 0.0.0.0/0.0.0.0          #允許所有IP訪問
acl manager proto http              #manager url協議為http
acl localhost src 127.0.0.1/255.255.255.255  #允午本機IP
acl to_localhost dst 127.0.0.1                 #允午目的地址為本機IP
acl CONNECT method CONNECT        #請求方法以CONNECT
#http_access allow all                #允許所有人使用該代理.
#http_reply_access allow all                #允許所有客戶端使用該代理

acl Safe_ports port 80          # 允許安全更新的端口為80
acl Safe_ports port 443        #允許安全更新的端口為443

acl localnet src 10.195.249.225     #
acl localnet src 10.195.236.141     #

http_access allow localnet           #
http_access deny !Safe_ports           #


acl OverConnLimit maxconn 16        #限制每個IP最大允許16個連接,防止攻擊
http_access deny OverConnLimit

icp_access deny all                        #禁止從鄰居服務器緩沖內發送和接收ICP請求.
miss_access allow all                #允許直接更新請求
ident_lookup_access deny all                                #禁止lookup檢查DNS
http_port 8080 transparent                                #指定Squid監聽瀏覽器客戶請求的端口號。

hierarchy_stoplist cgi-bin ?                #用來強制某些特定的對象不被緩存,主要是處於安全的目的。
acl QUERY urlpath_regex cgi-bin \?
cache deny QUERY

cache_mem 1 GB        #這是一個優化選項,增加該內存值有利於緩存。應該注意的是:
                     #一般來說如果系統有內存,設置該值為(n/)3M。現在是3G 所以這里1G
fqdncache_size 1024        #FQDN 高速緩存大小
maximum_object_size_in_memory 2 MB        #允許最大的文件載入內存

memory_replacement_policy heap LFUDA  #動態使用最小的,移出內存cache
cache_replacement_policy heap LFUDA         #動態使用最小的,移出硬盤cache

cache_dir ufs /home/cache 5000 32 512  #高速緩存目錄 ufs 類型 使用的緩沖值最大允午1000MB空間,
#32個一級目錄,512個二級目錄

max_open_disk_fds 0                                 #允許最大打開文件數量,0 無限制
minimum_object_size 1 KB                         #允午最小文件請求體大小
maximum_object_size 20 MB                 #允午最大文件請求體大小

cache_swap_low 90                            #最小允許使用swap 90%
cache_swap_high 95                            #最多允許使用swap 95%

ipcache_size 2048                                # IP 地址高速緩存大小 2M
ipcache_low 90                                #最小允許ipcache使用swap 90%
ipcache_high 95                                  #最大允許ipcache使用swap 90%


access_log /var/log/squid/access.log squid        #定義日志存放記錄
cache_log /var/log/squid/cache.log squid
cache_store_log none                        #禁止store日志

emulate_httpd_log on        #將使Squid仿照Web服務器的格式創建訪問記錄。如果希望使用
                                #Web訪問記錄分析程序,就需要設置這個參數。

refresh_pattern . 0 20% 4320 override-expire override-lastmod reload-into-ims ignore-reload   #更新cache規則

acl buggy_server url_regex ^http://.... http://          #只允許http的請求
broken_posts allow buggy_server

acl apache rep_header Server ^Apache                 #允許apache的編碼
broken_vary_encoding allow apache

request_entities off                                        #禁止非http的標分准請求,防止攻擊
header_access header allow all                        #允許所有的http報頭
relaxed_header_parser on                                #不嚴格分析http報頭.
client_lifetime 120 minute                                #最大客戶連接時間 120分鍾

cache_mgr sky@test.com                        #指定當緩沖出現問題時向緩沖管理者發送告警信息的地址信息。

cache_effective_user squid                        #這里以用戶squid的身份Squid服務器
cache_effective_group squid

icp_port 0                       #指定Squid從鄰居服務器緩沖內發送和接收ICP請求的端口號。
                     #這里設置為0是因為這里配置Squid為內部Web服務器的加速器,
                     #所以不需要使用鄰居服務器的緩沖。0是禁用

# cache_peer 設置允許更新緩存的主機,因是本機所以127.0.0.1
cache_peer 127.0.0.1 parent 80 0 no-query default multicast-responder no-netdb-exchange
cache_peer_domain 127.0.0.1                                 
hostname_aliases 127.0.0.1

error_directory /usr/share/squid/errors/Simplify_Chinese        #定義錯誤路徑

always_direct allow all                # cache丟失或不存在是允許所有請求直接轉發到原始服務器
ignore_unknown_nameservers on        #開反DNS查詢,當域名地址不相同時候,禁止訪問
coredump_dir  /var/log/squid                 #定義dump的目錄

max_filedesc 2048                #最大打開的文件描述

half_closed_clients off        #使Squid在當read不再返回數據時立即關閉客戶端的連接。
                                #有時read不再返回數據是由於某些客戶關閉TCP的發送數據
                                #而仍然保持接收數據。而Squid分辨不出TCP半關閉和完全關閉。

buffered_logs on #若打開選項“buffered_logs”可以稍稍提高加速某些對日志文件的寫入,該選項主要是實現優化特性。#    
squid.conf配置文件說明

Squid命中率分析

/usr/local/squid/bin/squidclient -p 80 mgr:info /usr/local/squid/bin/squidclient -p 80 mgr:5min

可以看到詳細的性能情況,其中PORT是你的proxy的端口,5min可以是60min

取得squid運行狀態信息:

    squidclient -p 80 mgr:info

取得squid內存使用情況:

    squidclient -p 80 mgr:mem

取得squid已經緩存的列表:

squidclient -p 80 mgr:bjects. use it carefully,it may crash

取得squid的磁盤使用情況:

squidclient -p 80 mgr:diskd

強制更新某個url:

squidclient -p 80 -m PURGE http://www.xxx.com/xxx.php

更多的請查看:squidclient-h 或者 squidclient -p 80 mgr:
查命中率:

    squidclient -h IP(具體偵聽IP) -p 80(具體偵聽端口) mgr:info

正向代理訪問控制案例

實現如下要求:
1,允許周一到周五12:00-14:00和17:30-21:00和雙休能上網,別的時間不能上網
2,禁止下載.exe .rar .mp3 .avi .rmvb .mp4后綴的文件
3,禁止訪問qq.com,mop.com,sina.com,163.com,youku.com
4,禁止訪問網址中包含某些關鍵字的網站:比如 sex news movie sport game stock
5, vip沒有任何限制
--把上面五點情況做成兩種需求:
1,上課時間不能上任何網站,休息時間可以上網,但受限, vip沒有任何限制
理論分析:
http_access    允許  vip
http_access   拒絕  限制
http_access    允許  休息時間
http_access deny all

實驗需求一:
# vim /etc/squid/squid.conf
acl lunchtime time MTWHF 12:00-14:00
acl dinnertime time MTWHF 17:30-21:00
acl weekend time SA 00:00-24:00
acl badfile urlpath_regex -i \.mp3$ \.rmvb$ \.exe$ \.zip$ \.mp4$ \.avi$ \.rar$
acl badweb dstdom_regex "/etc/squid/denywebsite"
acl badword url_regex -i sex news movie sport game stock
acl vip arp 00:0C:29:79:0C:1A
http_access allow vip
http_access deny badfile
http_access deny badweb
http_access deny badword
http_access allow lunchtime
http_access allow dinnertime
http_access allow weekend
http_access deny all
# vim /etc/squid/denywebsite
qq
sina
mop
163
youkud
# systemctl restart squid
2,上課時間可以上網,但受限,休息時間可以無限制上網, vip沒有任何限制
理論分析:
http_access   允許  vip
http_access   允許  休息時間
http_access 拒絕  限制
http_access allow all
實驗需求二:
# vim /etc/squid/squid.conf
acl lunchtime time MTWHF 12:00-14:00
acl dinnertime time MTWHF 17:30-21:00
acl weekend time SA 00:00-24:00
acl badfile urlpath_regex -i \.mp3$ \.rmvb$ \.exe$ \.zip$ \.mp4$ \.avi$ \.rar$
acl badweb dstdom_regex "/etc/squid/denywebsite"
acl badword url_regex -i sex news movie sport game stock
acl vip arp 00:0C:29:79:0C:1A
http_access allow vip
http_access allow lunchtime
http_access allow dinnertime
http_access allow weekend
http_access deny badfile
http_access deny badweb
http_access deny badword
http_access allow all

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM