红联Linux门户
Linux帮助

PHP+Ipchains 动态限制内部机器上网

发布时间:2006-08-23 21:27:37来源:红联作者:丁丁
有时为了方便让同一个网段的人限制性的上网,这时就需要软件来动态地控制,虽然的样的软件网上有很多,但这里介绍的是通过 PHP+Ipchains 来实现的。

首先,我们要用到Ipchains,至于Ipchains这里不详细介绍了,不了解的可以看《 ipchains 入门》,我们用一条规则来实现,
/sbin/ipchains -A input -s 192.168.1.103 -j -DENY,这样,内部网段里 IP 为 192.168.1.103 的机器就不能出网了,如果我们把这一条命令写到文件里,然后通过 PHP 来修改,就成了动态的了。

PHP 来修改文件的内容。


echo "
";
echo "
";
echo "
";
echo "";
echo "
";
echo "
";

?>

if ($func=="save") {
$fd=fopen("./stop","w");
$fd=fputs($fd,$body);
echo "";
}
?>

其中 stop 文件存放的内容就是通过 PHP 来动态修改的 Ipchains 规则。

注意:stop 文件的属性要修改,chmod 777 stop

最后,修改 /etc/crontab 文件的内容。

*/5 * * * * root /path/stop

每隔五分钟执行 stop 文件的命令。

当然,这样做也要一些弊端,第二次修改 stop 文件的内容时,需要把机器所有的 Ipchains 规则清空,
如果本身网关机器本身就有 Ipchains 规则,就会把原先的 Ipchains 也清空,这时就需要把原有的ipchains也写到文件里去了。

另外,如果加一个 shell ,当 stop 文件内容改变时才运行 crontab 里写 0/5 * * * * root /path/stop ,这样做就更好了。
剩下的大家想想吧!:)
文章评论

共有 0 条评论