IPtables 规则阻止了我的 IP,但事实并非如此

IPtables 规则阻止了我的 IP,但事实并非如此

我在“ipset”程序中有一个黑名单,名为“evil_ips”,其中包含很多我下载的并且想要阻止的代理。

如果我输入:

iptables -A INPUT -m set --match-set evil_ips src -j DROP
iptables -A INPUT -m set --match-set evil_ips dst -j DROP
iptables -A FORWARD -m set --match-set evil_ips src -j DROP
iptables -A FORWARD -m set --match-set evil_ips dst -j DROP

我无法通过 ssh 或 ftp 连接到我的服务器,但可以通过 http(nginx 服务器)连接到我的服务器。

如果我输入:

iptables -A INPUT -m set --match-set evil_ips src -j DROP
iptables -A FORWARD -m set --match-set evil_ips src -j DROP

删除“dst”就可以了。

为什么?我家的IP不在黑名单里!

答案1

如果我是你,我会用 LOG 替换 DROP 进行调试,看看规则是否与你的 IP 匹配。既然你只想阻止代理,为什么不添加

-p tcp --dport 80 

遵守您的规则,以避免 ssh 和 ftp 被阻止。

答案2

解决了!(我真是个傻瓜。)

问题出在下表中:

iptables -A INPUT -m set --match-set evil_ips dst -j DROP

不应该有 INPUT,而应该有:

iptables -A OUTPUT -m set --match-set evil_ips dst -j DROP

因此最终的工作规则是:

iptables -A INPUT -m set --match-set evil_ips src -j DROP
iptables -A OUTPUT -m set --match-set evil_ips dst -j DROP
iptables -A FORWARD -m set --match-set evil_ips src -j DROP
iptables -A FORWARD -m set --match-set evil_ips dst -j DROP

相关内容