如何阻止Ubuntu的IP地址?

我已经将Ubuntu机器configuration为路由器。 下面给出了NATconfiguration的步骤:

#iptables -F #iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE #iptables-save > /etc/network/iptables 

然后在rc.local中保存这个文件的位置

 #vi /etc/rc.local #!/bin/sh -e # # rc.local # # This script is executed at the end of each multiuser runlevel. # Make sure that the script will "exit 0" on success or any other # value on error. # /sbin/iptables-restore < /etc/network/iptables # In order to enable or disable this script just change the execution # bits. # # By default this script does nothing. exit 0 #reboot 

它的工作原理,现在我想阻止一个IP地址。 为此,我执行了以下命令:

 #iptables -A INPUT -s 69.171.229.11 -j DROP #iptables-save > /etc/network/iptables #reboot 

但它不起作用。

vi /etc/network/iptables现在看起来像这样:

  # Generated by iptables-save v1.4.4 on Tue Feb 14 11:21:16 2012 *nat :PREROUTING ACCEPT [870:97719] :POSTROUTING ACCEPT [283:23151] :OUTPUT ACCEPT [461:28753] -A POSTROUTING -o eth0 -j MASQUERADE COMMIT # Completed on Tue Feb 14 11:21:16 2012 # Generated by iptables-save v1.4.4 on Tue Feb 14 11:21:16 2012 *filter :INPUT ACCEPT [4914:3254723] :FORWARD ACCEPT [2382:1222521] :OUTPUT ACCEPT [4010:410041] -A INPUT -s 98.137.149.56/32 -j DROP COMMIT # Completed on Tue Feb 14 11:21:16 2012 

我错过了什么来阻止一个IP地址?

如果要阻止使用MASQUERADE规则的IP,则需要将该规则放在FORWARD链中,而不是INPUT链中。

 iptables -I FORWARD -s 69.171.229.11 -j DROP 

我认为序列是不正确的。

你用append做的是把它放在链条的底部。 IPtables在第一场比赛后停止。 所以可能是规则在匹配块规则之前就匹配了。 确保阻止规则在最上面。 您可以使用-I选项将其插入链中的特定位置。

iptables-save不会使你的iptables规则持久化,所以在重启后它们会丢失。 相反,它所做的是将当前的iptablesconfiguration打印到STDOUT(请参阅iptables-save的联机帮助页 )。 所以在你重启之后,你的iptables应该是空的。

您可能要在重新启动后从该文件还原您的规则。 为此,请使用

 iptables-restore < /etc/network/iptables 

请参阅关于iptables-restore的联机帮助页面 。


正如帕特里克所说的,这个规则

 iptables -A INPUT -s 69.171.229.11 -j DROP 

只会阻止数据包被发送到路由器本身 – 如果正确寻址,它们仍然会被转发。 为了防止这种情况,请添加规则

 iptables -A FORWARD -s 69.171.229.11 -j DROP 

FORWARD应用于路由器想要转发的数据包,而INPUT应用于发往路由器本身的数据包。