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

时间:2018-05-28 19:44:07

标签: 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 --  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

但这不起作用。你能告诉我怎么做吗?

1 个答案:

答案 0 :(得分:-1)

这对超级用户来说是一个问题,但没关系。我今天有管理员帽子。 :P

主要的是,您可以将您的链用作ACCEPTREJECTDROP等目标,因此您希望将其作为-j选项传递,即

iptables -A INPUT -p tcp --dport 22 -j MYSSH

会附加一条规则,将通过MYSSH链到端口22的所有TCP流量通过管道传输到INPUT链。

另一个问题是在何处插入此规则。通常,当我手动执行此类操作时(这些天我通常使用shorewall因为它更容易维护),我只使用iptables -A命令并按正确的顺序运行它们。在您的情况下,看起来好像您想要将它作为第二个或第三个规则插入,然后再加入

ACCEPT     all  --  anywhere             anywhere 

规则(虽然可能有一些额外的条件,iptables -L在没有-v的情况下不会显示;我无法知道)。然后我们正在查看

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

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

取决于你想要的地方。

顺便说一句,请注意,如果这个包罗万象的规则没有我没有看到的附加条件,那么它下面的规则永远不会达到。