Linux 将流量转发到iptables中的自定义密钥链

Linux 将流量转发到iptables中的自定义密钥链,linux,unix,iptables,Linux,Unix,Iptables,我需要关于iptables的帮助。当我使用命令iptables-L时,我有以下iptables规则 Chain INPUT (policy DROP) target prot opt source destination ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED ACCEPT icmp -- any

我需要关于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
链。我必须确保这个新规则遵循(而不是先于)相关的、已建立的规则,因此它不适用于现有的连接

我试过:

iptables -I INPUT 1 -p tcp -m MYSSH --dport 22 -j ACCEPT

但这是行不通的。你能告诉我怎么做吗?

这是一个超级用户的问题,但没关系。我今天戴着管理员帽P

最重要的是,您可以将您的链用作目标,如
接受
拒绝
删除
,因此您希望将其作为
-j
选项传递,即

iptables -A INPUT -p tcp --dport 22 -j MYSSH
将附加一条规则,通过
MYSSH
链将所有TCP通信通过管道传输到端口22到
INPUT

另一个问题是在何处插入此规则。一般来说,当我手动执行此类操作时(现在我通常使用shorewall,因为它更易于维护),我只需使用
iptables-A
命令并按正确的顺序运行它们。在您的情况下,看起来您希望将其作为第二条或第三条规则插入到catchall之前

ACCEPT     all  --  anywhere             anywhere 
规则(尽管可能有一些附加条件,
iptables-L
在没有
-v
的情况下不会显示;我不知道)。那我们就看

iptables -I INPUT 2 -p tcp --dport 22 -j MYSSH

取决于你想要它的地方


顺便说一下,如果这个“一网打尽”规则没有我没有看到的附加条件,那么下面的规则将永远无法达到。

Stack Overflow是一个关于编程和开发问题的网站。这个问题似乎离题了,因为它与编程或开发无关。请参见帮助中心中的。也许或者会是一个更好的提问的地方。
iptables -I INPUT 3 -p tcp --dport 22 -j MYSSH