linux - 将流量转发到 iptables 中的自定义 key 链

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

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

最佳答案

这是一个 super 用户的问题,但是没关系。我今天戴上了行政帽。 :P

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

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

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

另一个问题是在哪里插入此规则。一般来说,当我手动执行此类操作时(这些天我通常使用 shorewall,因为它更易于维护),我只需使用 iptables -A 命令并按正确的顺序运行它们。在您的情况下,您似乎想将其作为第二条或第三条规则插入到包罗万象的之前

ACCEPT     all  --  anywhere             anywhere 

规则(尽管可能有一些附加条件,如果没有-viptables -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/

相关文章:

docker - Docker覆盖网络阻止IP转发

linux - bash 脚本来捕获输入

linux - shell在重启和非正常关机时是否收到term信号

Linux 脚本 while 循环 "-a"

linux - 更改默认目录结构

amazon-ec2 - 亚马逊 EC2 负载均衡器 : Defending against DoS attack?

linux - 如何为 ebtables 编写自定义模块?

python - 通过 cron 调用时,MQTT Python 无法启动 Bash 脚本

linux - 如何在没有密码提示的情况下从脚本写入/etc/sudoers 文件?

Python 2.7 Argparse 是或否输入