在具有LAN的SSH服务器/防火墙(192.168.2.3)(例如192.168.2.1/30)中,192.168.2.1/30networking的内部机器所做的连接尝试将被防火墙解释为传入或传出连接?
如果它们被读取为传入或传出,我必须指定目的地址还是源地址块(192.168.2.1/30)? 或者何时需要-d或-s选项?
我的理解是这样的:如果我想让这些内部机器与外界build立新的联系,那么规则就是这样的。
iptables -A OUTPUT -s 192.168.2.8/30 -m state --state NEW -j ACCEPT
如果SSH服务器想要与外界build立新的SSH连接,则规则就是这样
iptables -A OUTPUT -p tcp --sport 22 -m state --state NEW -j ACCEPT
在这种情况下,我应该省略了ssh服务器的ip地址还是将其包含在规则中?
非常感谢。
INPUT和OUTPUT是单独针对iptables运行的系统定义的。 换句话说, iptables并不在乎它的接口上有什么types的系统, 它并不关心接口是连接到你信任的局域网,还是DMZ,或者是一个装满笔记本电脑的充满鲨鱼的坦克。
INPUT始终是指从外部进入接口的stream量,以便本地终止。 OUTPUT是指本地发起并即将通过接口离开的stream量。 FORWARD指的是通过一个接口并直接通过另一个接口的stream量。
你上面引用的第一个介绍了从一个接口上的192.168.2.0/30局域网到另一个接口上的外部networking的stream量,所以这两个都应该在FORWARD链中。 第二个调解来自防火墙的stream量到全世界,所以没关系。
虽然我可以补充说,这不是一个局域网,你应该检查networking掩码,因为防火墙在局域网的上下文中有一个无效的地址(这是广播地址,不应该分配给一个主机)。 请参阅我们着名的关于ipv4子网划分的规范性问题以供进一步讨论。