我有一台具有多个接口(IP)的服务器。我想阻止所有端口在其中一个 IP 上(我不想对其他 IP/接口做任何更改),但允许从它发出传出连接。例如,应该可以从它运行 IRC 客户端,但不能简单地从外部连接到它(我将从白名单 IP 连接)。
这是我到目前为止得到的:
Chain INPUT (policy ACCEPT)
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
DROP all -- 0.0.0.0/0 IP
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
但这些规则不起作用。即使我从这个 IP 发起连接,远程服务器也无法连接回来,尽管我允许 RELATED/ESTABLISHED 连接。出了什么问题?
答案1
首先,OUTPUT
Chain 的默认策略是接受,所以最后一行:
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
没有必要。
然后是第一行:
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
也是多余的,因为默认策略INPUT
是接受。
仅尝试使用这两条规则,看看是否有帮助:
iptables -A INPUT -d IP -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -d IP -j DROP
答案2
您是否遇到了 IRC 连接问题?您尝试连接的 IRC 服务器可能要求您运行服务器ident
。大多数 IRC 客户端都伪造了一个服务器。尝试允许端口 113 上的传入连接,看看情况是否有所改善。