在后面有一个 LAN 的 SSH 服务器/防火墙(192.168.2.3)中,假设为 192.168.2.1/30,防火墙会将 192.168.2.1/30 网络内部机器进行的连接尝试解释为传入连接还是传出连接?
如果它们被读取为传入或传出,我必须指定目标或源地址块 (192.168.2.1/30) 吗?或者什么时候需要 -d 或 -s 选项?
我的理解是这样的:如果我想让这些内部机器与外界建立任何新的联系,规则是这样的。
iptables -A OUTPUT -s 192.168.2.8/30 -m state --state NEW -j ACCEPT
如果 SSH 服务器想要与外界建立新的 SSH 连接,则规则如下
iptables -A OUTPUT -p tcp --sport 22 -m state --state NEW -j ACCEPT
在这种情况下,我应该省略 ssh 服务器 ip 地址还是将其包含在规则中?
非常感谢。
答案1
INPUT
并且OUTPUT
仅针对正在iptables
运行的系统进行定义。换句话说,它iptables
不关心其任何接口上是什么类型的系统;它不关心接口是否连接到您信任的 LAN、DMZ 或装满带有笔记本电脑的鲨鱼的水箱。
INPUT
总是指交通进入外部接口,以在本地终止。 OUTPUT
指源自本地并即将终止的流量离开通过接口。 FORWARD
指的是流量从一个接口传入并直接从另一个接口传出。
您上面引用的第一个接口负责调解来自192.168.2.0/30
LAN 的流量,另一个接口负责调解来自外部世界的流量,因此两者都应该在链中FORWARD
。第二个接口负责调解从防火墙到外部世界的流量,因此目前这样是没问题的。
不过,顺便说一下,这不算是 LAN,您可能应该检查网络掩码,因为防火墙在 LAN 上下文中有一个无效地址(它是广播地址,不应分配给单个主机)。请参阅我们关于 IPv4 子网划分的著名经典问题以供进一步讨论。