首先,我们要用到Ipchains,至于Ipchains这里不详细介绍了,不了解的可以看《 ipchains 入门》,我们用一条规则来实现,
/sbin/ipchains -A input -s 192.168.1.103 -j -DENY,这样,内部网段里 IP 为 192.168.1.103 的机器就不能出网了,如果我们把这一条命令写到文件里,然后通过 PHP 来修改,就成了动态的了。
PHP 来修改文件的内容。
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 ,这样做就更好了。
剩下的大家想想吧!:)