我在“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