用Squid实现代理上网及计费

来源:互联网 发布:少女时代知乎 编辑:程序博客网 时间:2024/04/28 07:21
 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优化方案,想跟大家讨论一下,极限提速代理速度