我正在尝试使用 IPTables 阻止特定 IP。当我使用以下 shell 命令(Xs 隐藏实际 IP)时:
iptables -A INPUT -s XXX.XXX.XXX.XXX/32 -j DROP
我在 IPTables 中添加了以下行:
DROP all -- XXX-XXX-XXX-XXX.dhcp.trcy.mi.charter.com anywhere
这是怎么回事?为什么会这样?看起来完全不对劲。
我的设置是一个 Raspberry Pi,连接到我的家用路由器,然后连接到互联网。
答案1
iptables
像许多其他网络工具一样,默认情况下对 IP 地址进行反向 DNS 查找。因此,这意味着主机部分显示的字符串是您要阻止的 IP 地址的 DNS 名称。
另一方面,您正在阻止 ISP DHCP 池中的单个地址。这没有效果,因为通过 DHCP 获取地址的用户的 IP 地址会随时间而变化。因此,一旦此 IP 的用户获得新地址,另一个用户稍后将获得此地址,新用户将被阻止。
答案2
我想我过去偶然发现过这个问题,我不知道为什么,但是脚本有所帮助,一般来说,这里还有另一行你没有包括的来阻止传入和传出的流量。
尝试创建一个文件,其中包含您想要阻止的 IP 地址,然后尝试编写一个脚本来使用该文件,也许这会起作用。
BLOCKDB=/root/ip.block
BIPS=$(grep -Ev "^#" $BLOCKDB)
for $i in $BIPS
do
iptables -A INPUT -s $i -j DROP
iptables -A OUTPUT -d $i -j DROP