Squid代理服务器的计费与流量控制
http://www.edu.cn 2006-10-10 中国教育网络 作者:尤国君 李杏姣2014年高等教育信息化十大“... 01-04 教育部成立教育信息化专家组 12-24
CERNET第二十一届学术年会 11-24 李志民:互联网促进人类文明... 11-15
|
4.启动MySQL服务。 使用下列命令启动MySQL服务 /etc/init.d/mysqld start 5.修改MySQL用户root的口令。 缺省MySQL的root用户没有口令,为了保证数据库安全,应该使用以下命令修改MySQL用户root的口令(本例设置口令为ygjalarm): mysqladmin -u root password ygjalarm 第四步:安装和设置MySAR。 1.访问http://giannis.stoilis.gr/software/mysar,点击 “download”下载最新版的MySAR安装软件mysar-2.0.7.tar.gz。 2.使用命令tar zxvf mysar-2.0.7.tar.gz -C /usr/local将其解压到/usr/local目录中。 3.使用命令vi /usr/local/mysar/www/install/index.php打开安装向导的源文件index.php,在第70行插入语句“usr_iptables tinyint(1) unsigned NOT NULL default '0',”,创建usr_iptables字段用于判断用户是否已被限制访问服务器。 4.使用命令vi /etc/httpd/conf/httpd.conf打开httpd.conf配置文件,在配置文件的末尾添加语句“Alias /mysar/ "/usr/local/mysar/www/" ”设置虚拟目录,使虚拟目录指向MySAR目录中的www子目录。 5.使用命令/etc/init.d/httpd restart重启Apache服务器。如图1所示,通过访问http://服务器IP地址或域名/mysar/这一地址打开MySAR的安装向导,并依照向导提示完成MySAR的安装。 6.使用命令vi /usr/local/mysar/bin/mysar-importer.php打开mysar-importer.php文件(注:该文件的作用是读取Squid的日志文件/var/log/squid/access.log,并对日志进行分析,然后将相应的数据写入数据库中),并在103行插入如图2方框内的语句,用于判断访问的目的主机是否为网内主机(该处假设网内目的主机为IP地址192.168.*.*),如果为网内目的主机,则访问流量不进行统计。 7.使用命令vi /usr/local/mysar/etc/mysar.cron打开文件mysar.cron,并在文件末尾添加语句“01 1 * * * root squid -k rotate”,使Squid的日志每天循环保存一次(注:由于MySAR是通过分析Squid日志的方法来统计流量的,如果日志文件太大会降低MySAR的运行效率,同时也可能使统计出错)。然后再使用命令crontab /usr/local/mysar/etc/mysar.cron设置自动作业,这时就可以通过访问http://服务器IP地址或域名/mysar/查看用户使用Squid代理服务器访问外网的情况了。 第五步:编写C程序用于执行iptables命令。 出于安全上的考虑,PHP程序默认情况下是不允许直接调用Linux系统命令的,因此通过该C程序来间接调用iptables命令可以在很大程度上保护服务器的安全。具体程序源代码如下。 #include <stdio.h> #include <getopt.h> #include <unistd.h> int main(int argc ,char *argv[]) {int optch; while( (optch = getopt( argc , argv , "ad" ) ) != -1 )/*分析命令行参数*/ {switch( optch ) { case 'd': execlp("iptables","iptables","-I","INPUT","-s",argv[2],"-j","DROP",(char *) 0 ); break;/*设置iptable规则,禁止用户访问服务器*/ case 'a': execlp("iptables","iptables","-D","INPUT","-s",argv[2],"-j","DROP",(char *) 0 ); break;/*删除iptable规则*/ default: printf("error \n");} }} 1.编写完成后以.c为后缀名保存文件(本例文件名为uip.c),然后再分别使用gcc -c uip.c和make uip.o编译连接程序。 2.使用命令chmod u+s uip修改程序uip的执行权限,使PHP程序能够调用它。 第六步:编写PHP程序mysar.php用于管理代理用户。 该程序通过统计数据库中代理用户的流量数据判断是否超出限制,如果超出则调用c程序设置iptables规则,禁止用户访问代理服务器(需要具体代码的读者可和作者联系)。 使用体会 通过以上六个步骤的设置,解决了基于Linux系统代理服务器Squid的计费与流量控制。笔者所在单位应用该系统后,不仅有效掌握了用户的上网情况,而且实现了对大量占用网络带宽的用户的有效的控制。 |

