用Squid實現代理上網及計費
來源:互聯網
上載者:User
redhat9預設安裝的squid2.5,如果事先沒有安裝的話可以用下載tar來安裝
1.設定squid
vi /etc/squid/squid.conf
http_port 3128---------------這是squid偵聽的連接埠,預設
cache_mem 16 MB-----------按照squid的官方網站上說16M最佳,我也沒試過
cache_swap_low 75
cache_swap_high 85-------這個功能就比較好了,意思是你的cache目錄如果容量達到總容量的85%時,就會刪除舊檔案降低容量到75%
maximum_object_size 4096 KB-----這個是儲存檔案cache的最大容量,可以自己設定
maximum_object_size_in_memory 8 KB-----這個是記憶體上儲存檔案cache的最大容量,一般預設好了
ipcache_size 1024
ipcache_low 90
ipcache_high 95
fqdncache_size 1024------這些是關於ip地址和網域名稱緩衝的,預設
cache_dir ufs /var/spool/squid 1000 16 256------在/var/spool/squid下建立緩衝目錄,預設大小是1G,並且在這下面建立16個子目錄,在每個子目錄下又建立256個子目錄
cache_access_log /var/log/squid/access.log
cache_log /var/log/squid/cache.log--------這些都是記錄檔的路徑
pid_filename /var/run/squid.pid
client_netmask 255.255.255.0
auth_param basic children 5
auth_param basic realm Squid proxy-caching web server
auth_param basic credentialsttl 2 hours------上面關於認證的3行請注釋掉吧,因為我們用了透明代理,這些關於認證的也不起作用了
acl our_networks src 192.168.1.0/24
http_access allow our_networks
http_access allow localhost
http_access deny all------------這幾行配合起來就是對代理客戶機實現控制,只允許192.168.1.0這個網段使用代理
cache_mgr your_email
cache_effective_user squid
cache_effective_group squid------這是關於squid的使用者和組,我是用預設的,所以存在squid這個使用者和組,如果是用tar安裝的,可以設成 nobody.nobody,不過不要忘了把剛才那個cache目錄的許可權也設定成nobody.nobody
httpd_accel_host yourhost.yourdomain
httpd_accel_port 80----------如果你沒有網域名稱的話,可以設定virtual,連接埠是0
httpd_accel_with_proxy on
httpd_accel_uses_host_header on-------這幾行是實現透明代理的關鍵
儲存後,啟動squid:/etc/iniit.d/squid start
2.設定iptables規則
/sbin/iptables -t nat -A PREROUTING -i eth1 -p tcp -s 192.168.1.0/24 --dport 80 -j REDIRECT --to-ports 3128
/sbin/iptables -t nat -A POSTROUTING -o eth0 -s 192.168.1.0/24 -j MASQUERADE
---------我的外網卡是eth0,內網卡是eth1,注意這兩行的次序不能搞錯了,否則你的squid將不起作用
現在你的內網客戶機就可以通過代理訪問www了,而其他服務都通過nat
3.安裝配置pwebstats來分析squid記錄檔,給出分析報告
下載pwebstats-1.3.8.tar
在 配置pwebstats前先要下載fly,然後編譯一下產生一個二進位檔案,拷到/usr/local/bin中,我這裡已經有一個編譯好了的,如果誰要 可以給我發信,我發給你,這是我的郵箱:lichin@eyou.com,不過不要忘了gzip -d fly.gz ,chmod 755 fly ,mv fly /usr/local/bin一下
下面執行:
cd /usr/local
tar -xvf /tmp/pwebstats-1.3.8.tar
mv pwebstats-1.3.8 pwebstats
cd pwebstats
vi pwebstats
將#!/usr/local/bin/perl
改為#!/usr/bin/perl---------------因為我的perl執行檔案在這個路徑下
儲存,退出
mkdir /var/www/html/pwebstats
vi conf/squid-proxy.conf
Server_header:My_Proxy_Server-----這是分析報告網頁的標題
logfile:/var/log/squid/access.log-------你的squid記錄檔路徑
outdir:/var/www/html/pwebstats-----報告輸出目錄,明白我們前面為什麼在html下建立這個目錄了吧
interval:daily----------輸出的是日分析報告
fly_prog:/usr/local/bin/fly----------fly這個檔案的路徑
儲存退出,rotate一下日誌/usr/sbin/squid -k rotate
/usr/local/pwebstats/pwebstats -c /
> /usr/local/pwebstats/conf/squid-proxy.conf
好了,現在你打入http://yourdomain/pwebstats就可以看到分析報告了
你也可以做成一個scripts,然後在crontab中設定每日統計一下
vi /root/squid.logrotate
#!/bin/bash
/usr/sbin/squid -k rotate
sync; sleep 5s
/usr/local/pwebstats/pwebstats /
> -c /usr/local/pwebstats/conf/squid-proxy.conf
儲存退出
chmod 744 /root/squid.logrotate
vi /etc/crontab
59 23 * * * root /root/squid.logrotate
儲存退出,然後重啟一下crond:/etc/init.d/crond reload
好,大功告成,現在已經能夠使內網通過squid訪問www,其他服務由nat來做,而且可以定時產生日誌分析報告,告訴你的代理的流量狀況
上述如果是用tar安裝squid的話,一些命令可能有所不同,比如
squid start<---------------->/your/path/squid RunCache
squid stop<---------------->/your/path/squid -k shutdown
squid reload<---------------->/your/path/squid -k reconfigure
具體的一些命令可以自己參考一下squid裡的說明檔案
不知道有沒有好的squid最佳化方案,想跟大家討論一下,極限提速代理速度