下載源代碼並解壓
Squid Cache: Version 3.0.STABLE26
cd /usr/src
wget -c http://www.squid-cache.org/Versi ... 3.0.STABLE26.tar.gz
tar -zxvf squid-3.0.STABLE26.tar.gz
3.安裝Squid Proxy Server
cd /usr/src/
./configure --prefix=/usr/local/squid/ --sysconfdir=/etc/squid/ --bindir=/usr/bin/ --sbindir=/usr/sbin/ --enable-gnuregex --enable-async-io=240 --enable-icmp --enable-snmp --enable-err-languages="Simplify_Chinese" --enable-underscore --enable-linux-netfilter --enable-arp-acl --enable-default-err-language="Simplify_Chinese" --enable-linux-tproxy --enable-delay-pools --with-maxfd=65535
make && make install
4.設置squid.conf
cd
先備份 cp /etc/squid/squid.conf /etc/squid/squid.conf.bak
vi /etc/squid/squid.conf
http_port IP:端口設置squid監聽的IP地址和端口
http_port 192.168.1.120:3128
cache_mem 64MB
指定使用多少物理內存作爲高速緩存.如果這臺服務器僅用於共享上網,沒有其他服務,
則可加大物理內存的1/2,但如果還有其他服務則cache_mem的大小不應超過物理內存
的1/3,否則會影響服務器的總體性能.
cache_dir ufs /var/spool/squid 4096 16 256
指定硬盤緩衝區的大小,其中ufs指的是緩衝的存儲類型,一般爲ufs,/var/spool/squid指硬盤緩衝存放的目錄,4096代表緩存空間最大爲4096M,16代表squid可以在硬盤緩衝存放的目錄下建立的第一級子目錄的數目,缺省值爲16.
最後的256是可以建立第二級子目錄的數目,缺省值256.
maximum_object_size 最大/最小單文件大小
maximum_object_size_in_memory
內存中最大/最小單文件大小
error_directory 錯誤文檔目錄
dns_nameservers IP 爲了使Squid能解析域名,必須告訴squid有效DNS服務器..
cache_access_log 定義了訪問記錄日誌文件的路徑,該日誌記錄了用戶訪問Internet的詳細信息,
通過日誌文件可以查看每臺客戶機上網的記錄...所以大家不要幹壞事的...
cache_log 設置記錄緩存的相關信息日誌文件的路徑...
cache_store_log 定義了記錄網頁在緩存中調用情況日誌文件的路徑...
visible_hostname 定義了運行squid的主機名稱,當訪問發生錯誤時,該選項的值會顯示在錯誤提示網頁
中.建議輸入主機的IP地址.
cache_mgr定義設置squid管理員的d E-mail地址,當訪問發生錯誤時,該選項會顯示在頁面上.
reply_body_max_size緩存目錄大小
cache_effective_user squid 設定使用緩存的有效用戶.(系統默認)
cache_effective_group squid 設定使用緩存的有效用戶組(系統默認)
acl訪問控制:
列表類型:
src IP 源IP地址(客戶機的IP地址).
dst IP 目標地址(服務的器IP地址).
scrdomain 源名稱 (客戶機所屬的域).
dstdomain 目標名稱(服務器所屬的域).
url_regex URL規則的表達式
urlpath_regex: URL-path 略去協議和主機名的URL規則表達式匹配.
proxy_auth 通過外部程序進行用戶認證.
maxconn 單一IP最大連接數.
time 語法:[星期][時間段]
Monday-M;Tuesday-T ... Sunday-S
例子:
# 禁止地址或者網段(修改掩碼可以設置網段,修改dst或src實現目的或源)
acl dropip src 192.168.5.110/32
http_access deny dropip
# 禁止源地址 /etc/squid/clist 列表
acl clist src "/etc/squid/clist"
http_access deny clist
# 禁止用戶訪問新浪域名
acl dropurl dstdomain www.sina.com.cn
http_access deny dropurl
# 禁止訪問域名包含sina.com的網站(-i 忽略大小寫)
acl dropurl1 url_regex -i sina.com
http_access deny dropurl1
# 限制IP地址爲192.168.5.200客戶機併發最大連接數爲5
acl clientip src 192.168.5.200
acl conn5 maxconn 5
http_access deny clientip1 conn5
# 禁止192.168.5.0這個網段在週一至週五的9:00至15:00上網
acl clientnet src 192.168.5.0/24
acl worktime tiem MTWHF 9:00-15:00
http_access deny clientnet worktime
# 禁止下載MP3 exe rar爲後輟名的文件
acl download urlpath_regex -i \.MP3$ \.exe$ \.rar$
http_access deny download
博主所用的生產環境下的squid.conf
cache_mem 2048 MB
dns_nameservers DNS1-name DNS2-name
visible_hostname proxy ##主機名
maximum_object_size 2048 KB
maximum_object_size_in_memory 256 KB
cache_mgr [email protected] ##管理員
logfile_rotate 10
cache_swap_high 90
cache_swap_low 88
acl manager proto cache_object
acl localhost src 10.2.16.1/32 10.2.17.1/32 10.2.18.1/32 10.2.19.1/32 公網ip/32
acl localnet src 10.2.16.0/24
acl localnet src 10.2.17.0/24
acl localnet src 10.2.18.0/24
acl localnet src 10.2.19.0/24
acl worktime time MTWHF 9:30-11:30 13:30-17:30
acl gouwu dstdomain -i "/etc/squid/gouwu.txt" #所禁止的域名列表,豎排排列,一個域名一行的格式
http_access deny gouwu worktime
http_access allow manager localhost
http_access allow localnet
acl SSL_ports port 443
acl Safe_ports port 80# http
acl Safe_ports port 21# ftp
acl Safe_ports port 443# https
acl Safe_ports port 70# gopher
acl Safe_ports port 210# wais
acl Safe_ports port 1025-65535# unregistered ports
acl Safe_ports port 280# http-mgmt
acl Safe_ports port 488# gss-http
acl Safe_ports port 591# filemaker
acl Safe_ports port 777# multiling http
http_access deny !Safe_ports
acl CONNECT method CONNECT
http_access deny CONNECT !SSL_ports
http_access deny all
http_port 10.2.16.1:3128 transparent#設置網關及透明代理
http_port 10.2.17.1:3128 transparent
http_port 10.2.18.1:3128 transparent
http_port 10.2.19.1:3128 transparent
hierarchy_stoplist cgi-bin ?
access_log /usr/local/squid/var/logs/access.log
cache_log /usr/local/squid/var/logs/cache.log
cache_store_log /usr/local/squid/var/logs/store.log
cache_dir ufs /var/squid/cache/ 2048 16 256
coredump_dir /usr/local/squid/var/cache
refresh_pattern ^ftp:144020%10080
refresh_pattern ^gopher:14400%1440
refresh_pattern -i (/cgi-bin/|\?)00%0
refresh_pattern .020%4320
配置完成後
創建子目錄
squid -z
賦權
chown -R nobody.nobody /usr/local/squid/var
檢查語法
squid -k parse 不提示任何信息則爲成功
squid -DNdl
2014/03/29 15:34:16| Starting Squid Cache version 3.0.STABLE26 for x86_64-unknown-linux-gnu...
最後停留在一行不動,則表示可以啓動
用Ctrl+c終止
現在可以啓動Squid了
squid -s
二.設置iptables腳本
INSIDENET=10.2.16.0/24,10.2.17.0/24,10.2.18.0/24,10.2.19.0/24
OUTSIDENET=公網ip/255.255.255.240
INSIDE=10.2.16.1,10.2.17.1,10.2.18.1,10.2.19.1
OUTSIDE=公網Ip
INCARD=eth1
OUTCARD=eth0
iptables -t nat -F;
iptables -t filter -F;
echo 1 > /proc/sys/net/ipv4/ip_forward;
iptables -t filter -P INPUT DROP;
iptables -t filter -P OUTPUT ACCEPT;
iptables -t filter -P FORWARD DROP;
iptables -t filter -A FORWARD -s $INSIDENET -j ACCEPT;
iptables -t filter -A FORWARD -s $INSIDENET -d $OUTSIDENET -p all -j ACCEPT;
iptables -t filter -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT;
iptables -t nat -A PREROUTING -m state --state ESTABLISHED,RELATED -j ACCEPT;
iptables -t filter -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT;
iptables -t filter -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT;
#開放控制策略
iptables -t nat -A PREROUTING -m mac --mac-source D0:67:E5:1D:6D:B7 -p tcp --dport 80 -j ACCEPT;
iptables -t filter -A INPUT -p tcp --dport 22 -j ACCEPT;
iptables -t filter -A INPUT -s $INSIDENET -p tcp -m multiport --dport 3128 -j ACCEPT;
iptables -t filter -A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/s --limit-burst 10 -j ACCEPT;
iptables -t filter -A INPUT -p tcp -m tcp --tcp-flags SYN,RST,ACK SYN -m limit --limit 20/sec --limit-burst 200 -j ACCEPT;
iptables -t filter -A INPUT -i lo -j ACCEPT;
iptables -t filter -A OUTPUT -o lo -j ACCEPT;
#配置SNAT轉發給SQUID
iptables -t nat -A POSTROUTING -s $INSIDENET -o eth0 -j SNAT --to-source $OUTSIDE;
iptables -t nat -A PREROUTING -s $INSIDENET -p tcp --dport 80 -j REDIRECT --to-ports 3128;
執行Iptalbes之後,所有80端口都歸squid管控,至此啓動成功
#############################所有配置完成!!#########################