我有以下规则,这些规则用于测试:
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
答案1
假设您按照该顺序执行规则,您会在接受数据包之前将其丢弃在端口 22 上。
如果您列出规则,它会按顺序处理它们,并在遇到与站点匹配的规则时进行处理。它不像路由那样从最具体到最通用。
如果您更改顺序,则输入规则为:
iptables -A INPUT -i em1 -p tcp --dport 22 -j ACCEPT
iptables -A OUTPUT -o em1 -p tcp --sport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j DROP
iptables -A OUTPUT -p tcp --sport 22 -j DROP
它应该接受接口 em1 上的目标端口 22,而不是按照规则丢弃数据包。