我有以下规则,用于测试的规则就是我所拥有的:
iptables -F
iptables -A INPUT -p tcp --dport 22 -j DROP
iptables -A OUTPUT -p tcp --sport 22 -j DROP
iptables -A INPUT -i em1 -p tcp --dport 22 -j ACCEPT
iptables -A OUTPUT -o em1 -p tcp --sport 22 -j ACCEPT
我取消了连接状态匹配以简化规则。但是,我无法从 em1 接口连接到 ssh。为什么?
如果我去掉最后四行,我就可以轻松地 ssh。我有两个接口。我在 em1 接口上的 LAN 上。iptables 系统的 Em1 接口的 IP 地址设置为 192.168.1.22,我正在尝试从 192.168.1.13 进行 ssh
假设您按该顺序执行规则,您将在端口 22 上丢弃数据包,然后才能接受它们。
如果您列出规则,它会按顺序处理它们,并在遇到匹配的规则时停止。它不像从最具体到最通用的路由。
如果您更改顺序,您输入的规则为:
它应该接受接口 em1 上的目标端口 22,而不是达到告诉它丢弃数据包的规则。