如何发夹整个网段?

如何发夹整个网段?

我正在尝试在我的家庭网络上设置发夹文章和一个上一个问题。我的网络如下,主机B提供一些服务,让我们选择 SSH 端口22

发夹的原因很典型:我ssh.example.com在 Internet DNS 上定义了它,它指向200.200.200.200端口 上的我的公共 IP () 2223。该端口通过以下方式重定向到主机B( 192.168.10.2:22)

iptables -t nat -A PREROUTING -i nicWan -p tcp --dport 2223 -j DNAT --to-destination 192.168.10.2:22

我希望能够通过以下方式192.168.10.2:22与主机联系A

ssh 200.200.200.200 -p 2223

尽管自 1994 年以来一直在管理 Linux 机器,但我从未真正仔细研究过,iptables因为我使用的是shorewall以及简短的firehol

我最初的问题是了解发夹是否适用于“来自 LAN”的整个流量,或者我是否需要每个目标端口一个规则(我提到的参考文献和其他几个参考文献有所不同,我更喜欢前者)。

主要问题来自于我不了解在上下文iptables(链)中我需要设置什么。我理解操作的原因(在第一个参考文献中描述得很好),只是我不知道该把它放在哪里。

具体来说,我该怎么说iptables语言说 NAT 来自的数据包任何设备上的192.168.10.0/24想要去的地方200.200.200.200,并伪装他们以便他们可以回来?

答案1

我想说你的接口是错误的,因为来自主机 A 的流量到达你的 nicLan,而不是 nicWan。

正如您所说,您需要伪装,以便您的回程包裹能找到正确的地方。第二条规则伪装来自本地子网并返回本地服务器的所有流量。

iptables -t nat -A PREROUTING -i nicLan --destination 200.200.200.200/32 --jump DNAT --to-destination 192.168.10.2
iptables -t nat -A POSTROUTING -o nicLan --source 192.168.10.0/24 --destination 192.168.10.2/32 --jump MASQUERADE

正如您所看到的,我没有定义任何端口,因此从您的 LAN 到您的公共地址的所有流量都会经过 DNAT 传输到本地 LAN 中的服务器。

如果需要,不要忘记在过滤表中添加允许规则。

相关内容