下载源代码并解压
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管控,至此启动成功
#############################所有配置完成!!#########################