www.cloud86.cn
分类: 系统运维
2007-05-07 09:22:51
Squid+iptables+marg配置总结
从可以从squid主站下载:
#./configure --prefix=/usr/local/rickycai/squid
--enable-gnuregex
--enable-async-io=80 --enable-icmp --enable-kill-parent-hack
--enable-snmp --disable-ident-lookups --enable-cahce-digests
--enable-arp-acl --enable-err-language="Simplify_Chinese"
--enable-default-err-languages="Simplify_Chinese" --enable-poll
--enable-linux-netfilter --enable-underscore
注:
--enable-gnuregex 加入模式匹配
--enable-async-io=80 该选项导致编译过程链接到你系统中的P 线程库。aufs 存储模块是squid 中唯一需要使用线程的部分
如果有上述选项等同于:--with-aufs-threads=N_THREADS
--with-pthreads
--enable-storeio=ufs,aufs
--with-pthreads
--enable-icmp :加入icmp支持
--enable-kill-parent-hack :关掉suqid的时候,连同父进程一起关掉
--enable-snmp 此选项可以让MRTG使用SNMP协议对服务器的流量状态进行监测,因此必须选择此项,使Squid支持SNMP接口
--disable-ident-lookups :防止系统使用RFC931规定的身份识别方法。
--enable-cahce-digests :加快请求时,检索缓存内容的速度
--enable-arp-acl :可以在规则设置中直接通过客户端的MAC地址进行管理,防止客户使用IP欺骗。
--enable-poll :应启用Poll()函数而不是select()函数,通常而言poll(轮询)比select要好
--enable-linux-netfilter :可以支持透明代理
--enable-underscore :允许解析的URL中出现下划先,因为默认squid会认为带下划线的URL地址是非法的,并拒绝访问该地址。
[root@mail squid-2.6.STABLE9]# cd /usr/local/rickycai/squid/etc
[root@mail etc]# vi squid.conf
//注意:这个版本透明代理是如下
http_port 10.10.100.25:3128 transparent #代理端口
icp_port 3130 #此端口为Squid从邻居缓存服务器发送和接收ICP查询,禁止该选项为0
#禁止缓存
hierarchy_stoplist cgi-bin ?
hierarchy_stoplist -i ^https:\\ ?
acl QUERY urlpath_regex -i cgi-bin \? \.asp \.php \.jsp \.cgi
acl denyssl urlpath_regex -i ^https:\\
no_cache deny QUERY
#no_cache 访问列表来指示squid,它不必存储某些响应(在磁盘或内存里)。
#该列表典型的与dst,dstdomain,url_regex ACL 结合使用
no_cache deny denyssl
#上面几个就是说遇到URL中有包含cgi-bin和以https:\\开头的都不要缓存,
#还有asp、cgi、php等动态脚本也不要缓存,
#因为这些脚本通常都是动态更新的,这样数据不同步。
#还有https://开通的不缓存是因为一般我们进行电子商务交易,
#例如银行付款等都是采用这个的,如果把信用卡号什么缓存那不是很危险。
#定义cache大小的选项
cache_mem 512 MB #额外使用内存量,可根据你的系统内存在设定,一般为实际内存的1/3
cache_swap_low 90 #最低缓存百分比
cache_swap_high 95 ##最高缓存百分比,就是上面那个额外内存的使用百分比,如果超过那个就清楚前面的
maximum_object_size 4096 KB #单个文件最大缓存大小,超过这个大小将不缓存在磁盘里面
maximum_object_size_in_memory 8 KB #在内存中单个文件最大缓存大小,超过这个大小将不缓存到内存中
#IP存在缓存区的大小,这样可以加快解析DNS速度
ipcache_size 1024
ipcache_low 90
ipcache_high 95
fqdncache_size 1024
#
#7000为M
cache_dir ufs /usr/local/rickycai/squid/var/cache 7000 16 256
#日志文件
access_log /usr/local/rickycai/squid/var/logs/access.log squid
cache_log /usr/local/rickycai/squid/var/logs/cache.log
cache_store_log /usr/local/rickycai/squid/var/logs/store.log
pid_filename /usr/local/rickycai/squid/var/logs/squid.pid
#用代理登陆匿名ftp服务选项
# TAG: ftp_user
ftp_user Squid@ #用户名
ftp_passive on #被动模式
# TAG: refresh_pattern Cache更新时间设置
#
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern . 0 20% 4320
# TIMEOUTS (超时)
# -----------------------------------------------------------------------------
#连接到其他机器的最大尝试时间
connect_timeout 1 minute
#连接到上层代理的超时时间
#peer_connect_timeout 30 seconds
#返回超时
request_timeout 2 minutes
#持续连接时间
persistent_request_timeout 1 minute
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
acl CONNECT method CONNECT
acl inside src 10.10.100.0/24
acl inside src 10.10.101.0/24
acl inside src 10.10.102.0/24
http_access allow manager localhost
http_access deny manager
# Deny requests to unknown ports
http_access deny !Safe_ports
# Deny CONNECT to other than SSL ports
http_access deny CONNECT !SSL_ports
http_access allow inside
另外如果想通过MAC进行控制
#acl localmac arp "/usr/local/squid/localmac" #mac地址文件
#http_access allow localmac #允许localmac里面有登记的mac地址通过
# ADMINISTRATIVE PARAMETERS(管理参数)
# -----------------------------------------------------------------------------
cache_mgr
cache_effective_user squid
cache_effective_group squid
visible_hostname MesicProxyServer #代理服务器名称
# MISCELLANEOUS(杂项)
# -----------------------------------------------------------------------------
# TAG: logfile_rotate
#squid会定期的将日志文件更名并打包。
#比如正在使用的日志文件为access.log,squid会将其更名并打包为 access.log.1.gz;
#过了一定时间后,squid又会将access.log.1.gz更名为access.log.2.gz
#并将当前的日志文件更名并打包为access.log.1.gz,以此循环。
#logfile_rotate指定的数字即为打包并备份的文件的数量,当达到这一数目时,
#squid将删除最老的备份文件。默认值为1 0。如果想手动来进行这些操作,
#可以用logfile_rotate 0来取消自动操作。
logfile_rotate 4
# TAG: forwarded_for on|off
#关闭此项将在访问某些论坛时显示的IP是unknown,
#如果打开则显示的是你client的内网IP
forwarded_for off
/***********************************************************************
#图标文件目录
# icon_directory /usr/local/squid/share/icons
#错误提示文件目录
# error_directory /usr/local/squid/share/errors/Simplify_Chinese
# TAG: snmp_port
# Squid can now serve statistics and status information via SNMP.
# By default it listens to port 3401 on the machine. If you don't
# wish to use SNMP, set this to "0".
#
#Default:
# snmp_port 3401
# TAG: snmp_access
# Allowing or denying access to the SNMP port.
#
# All access to the agent is denied by default.
# usage:
#
# snmp_access allow|deny [!]aclname ...
#
#Example:
# snmp_access allow snmppublic localhost
# snmp_access deny all
#
#Default:
# snmp_access deny all
*****************************************************************************/
# DELAY POOL PARAMETERS (all require DELAY_POOLS compilation option)(延时池参数)
# -----------------------------------------------------------------------------
# TAG: coredump_dir
#当squid突然挂掉的时候,或者突然出现什么故障的时候,将squid在内存中的资料写到硬盘中
coredump_dir /usr/local/rickycai/squid/var/cache
echo "1" >; /proc/sys/net/ipv4/ip_forward #设置转发
[root@mail squid]# mkdir sh
[root@mail squid]# cd sh
[root@mail sh]# cat firewall.sh
#!/bin/sh
modprobe ip_tables
modprobe ip_nat_ftp
modprobe ip_conntrack
modprobe ip_conntrack_ftp
iptables -F -t nat
iptables -t nat -A POSTROUTING -j MASQUERADE
iptables -t nat -A PREROUTING -i eth1 -p tcp -s 10.10.100.0/24 --dport 80 -j REDIRECT --to-ports 3128
iptables -t nat -A PREROUTING -i eth1 -p tcp -s 10.10.101.0/24 --dport 80 -j REDIRECT --to-ports 3128
iptables -t nat -A PREROUTING -i eth1 -p tcp -s 10.10.102.0/24 --dport 80 -j REDIRECT --to-ports 3128
[root@mail sh]# ./firewall.sh
[root@mail sh]# cd /usr/local/rickycai/squid/var
[root@mail var]# mkdir cache
[root@mail var]# cd logs
[root@mail logs]# touch access.log cache.log store.log
[root@mail logs]#chmod 755 access.log cache.log store.log
[root@mail logs]#cd ..
[root@mail var]# chown -R squid:squid ./
#初始化cache
[root@mail var]# /usr/local/rickycai/squid/sbin/squid -z
#启动squid
[root@mail var]# /usr/local/rickycai/squid/bin/RunCache &
或[root@mail var]# su squid -c "/usr/local/rickycai/squid/bin/RunCache &"
#关闭squid
[root@mail var]# /usr/local/rickycai/squid/sbin/squid -k sthudown
#重新读取配置文件
[root@mail var]# /usr/local/rickycai/squid/sbin/squid -k reconfigure
安装日志分析文件:
[root@mail workspace]# tar zxvf ./software/sarg-
[root@mail workspace]# cd sarg-
[root@mail sarg-
注意:这个版本因为prefix指定无效,所以需要./configure之后在Makefile文件里面更改几个目录
SYSCONFDIR = /usr/local/rickycai/sarg
ISYSCONFDIR = -DSYSCONFDIR=\"/usr/local/rickycai/sarg\"
[root@mail sarg-
local/rickycai/sarg/www --enable-mandir=/usr/local/rickycai/man/man1
[root@mail sarg-
[root@mail sarg-
[root@mail sarg-
[root@mail etc]#vi sarg.conf
修改:
language English //暂时还没中文版提供
access_log /usr/local/rickycai/squid/var/logs/access.log #squid日志文件存放位置
title "Squid User Access Reports"
temporary_dir /tmp #临时目录
output_dir /usr/local/rickycai/apache/htdocs/squidreport/ #生成后的html存放到那里,设置到你的网站目录下,以便浏览
overwrite_report no #是否覆盖报告,当那个日期的报告已经存在时是否覆盖掉
mail_utility mail
topsites_num 100
exclude_codes /usr/local/rickycai/sarg/etc/exclude_codes
max_elapsed 28800000
charset GB2312 #字符集
[root@mail etc]# cd /usr/local/rickycai/apache/htdocs/
[root@mail htdocs]# mkdir squidreport
[root@mail htdocs]# chmod 755 squidreport
[root@mail htdocs]# chown -R vmail:vmail ./squidreport
[root@mail htdocs]# cd /usr/local/rickycai/sarg/bin/sarg/
[root@mail sarg]# ./sarg
报告生成数据
所以访问就可以看到报告内容。如果需要限制访问用户,可以做目录限制认证