|
发表于 2006-8-30 00:17:14
|
显示全部楼层
Post by llylin
用途:拒绝所有的QQ IP,但是如果找到一个IP加进去一个,每次都必须重启Iptables,我想知道有没有办法增加IP又不用重启Iptables?在网上找到这么一个脚本,但还好像有问题,没有搞懂。他是这么写的:
一、建立一个文本用来存放IP地址:#vi /etc/blacklist
二、新建一条链:#iptables -t filter -N BLACKLIST (注:原文说这个链名必须大写,请问是这样子吗?)
三、脚本原文如下
#!/bin/sh
while true ;do
iptables -t filter -F BLACKLIST
for ip in `cat /etc/blacklist` ;do
iptables -t filter -A BLACKLIST -s ${ip} -j drop
done
sleep 60
done
这个脚本的按他本人的说法是每60秒自动读取脚本的IP地址一次,只要在/etc/blacklist的IP就会被拒绝掉。
疑问1:“iptables -t filter -F BLACKLIST”“-F”是清除所有规则,他这样做的作用是什么?
疑问2:“iptables -t filter -A BLACKLIST -s ${ip} -j drop”这行如果没错,“-s”应该改是“-d”才对吧
疑问3:我试着把这个脚本加入到我原来的Iptables,结果原来的规则全被清了
请教:如果这个脚本不对,那实现这个功能的脚本应该怎么写?谢谢!
首先说明,所谓的iptables重启,也就是iptables规则的清空、重新载入的过程。
疑问1。其实,他这个脚本实现的同样是清空规则,再重新载入。-F就是清空现有的BACKLIST链的规则。
疑问2。-s和-d都可以,-s代表从${ip}发回来的数据包,执行DROP;-d代表发往${ip}的数据包,执行DROP。虽然执行的时间不同,但是效果相同。
疑问3。不清楚你所说的“加入到我原来的Iptables”,是将上面这个脚本添加到哪里?如果你将它覆盖了iptables的默认配置文件(RHEL AS4下是/etc/sysconfig/iptables文件),是不可以的,因为iptables的规则配置文件有专门的格式,这个脚本并不符合格式,当iptables重新载入规则时,会由于这个配置文件错误,而拒绝载入。这时iptables的规则既是默认规则,也就是所有的链都空规则,默认规则亦为ACCEPT。
这个自定义的BACKLIST链并不是iptables的内建链,需要通过内建链的调用才会生效。例如- #iptables -A FORWARD -j BLACKLIST
复制代码 |
|