我需要有关 iptables 的帮助。当我使用命令 iptables -L
时,我有以下 iptables 规则Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
ACCEPT icmp -- anywhere anywhere
ACCEPT all -- anywhere anywhere
ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:ssh
Chain FORWARD (policy DROP)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Chain MYSSH (0 references)
target prot opt source destination
现在我想向过滤表的 INPUT
链添加一条规则,该规则会将所有 ssh 流量发送到 MYSSH
链。我必须确保这条新规则遵循(而不是先于)RELATED,ESTABLISHED
规则,因此它不适用于现有连接!
我尝试过:
iptables -I INPUT 1 -p tcp -m MYSSH --dport 22 -j ACCEPT
但这不起作用。你能告诉我该怎么做吗?
最佳答案
这是一个 super 用户的问题,但是没关系。我今天戴上了行政帽。 :P
最主要的是,您可以使用您的链作为目标,例如 ACCEPT
、REJECT
或 DROP
,因此您希望将其作为 -j
选项传递,即
iptables -A INPUT -p tcp --dport 22 -j MYSSH
将附加一条规则,通过 MYSSH
链将所有到端口 22 的 TCP 流量传送到 INPUT
链。
另一个问题是在哪里插入此规则。一般来说,当我手动执行此类操作时(这些天我通常使用 shorewall,因为它更易于维护),我只需使用 iptables -A 命令并按正确的顺序运行它们。在您的情况下,您似乎想将其作为第二条或第三条规则插入到包罗万象的之前
ACCEPT all -- anywhere anywhere
规则(尽管可能有一些附加条件,如果没有-v
,iptables -L
将不会显示;我不知道)。然后我们看看
iptables -I INPUT 2 -p tcp --dport 22 -j MYSSH
或
iptables -I INPUT 3 -p tcp --dport 22 -j MYSSH
取决于你想要的位置。
顺便说一句,请注意,如果这个包罗万象的规则没有我没有看到的附加条件,则永远不会达到它下面的规则。
关于linux - 将流量转发到 iptables 中的自定义 key 链,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50572660/