我可以从 WAN 端访问网关后面的 NAT 地址主机,而无需 DNS 或 VPN(如果不可能,则使用 DNS)吗?

我可以从 WAN 端访问网关后面的 NAT 地址主机,而无需 DNS 或 VPN(如果不可能,则使用 DNS)吗?

我有一个非常简单的网关,运行一个最小的 Linux,它充当 IP 路由器,在 LAN 上使用 NAT 和 DHCP,在 WAN 上使用静态 IP。LAN 端的网关路由器连接到一个大型交换机,大约 200 个用户可以从该交换机访问(DHCP 为他们分配 NAT 地址)。在 LAN 上的这 200 个主机中,我有一台(称为 Argon),我想从 LAN 和 WAN 以固定的静态 IP 地址访问它。假设我的 NAT 是 192.168.1.0/24,网关上的 LAN 地址是 192.168.1.1,Boron 是 LAN 上的主机,IP 为 192.168.1.2,Carbon 是 WAN 上的主机,IP 为 1.1.1.1。

假设我拥有 IP 10.10.10.10。我想将 10.10.10.10 分配给 Argon,并能够从 Boron(位于 192.168.1.2)和 Carbon(位于 1.1.1.1)发送和接收 TCP 和 UDP 流量,其中 Boron 和 Carbon 都会将消息发送到 IP 地址 10.10.10.10 以到达 Argon。

我认为我的路由器没有能力运行 DNS 或 VPN,因此如果可能的话,我希望避免使用这些路由作为解决方案。但是,如果我设置的限制导致问题无法解决,我更愿意设置 DNS 作为解决方案而不是 VPN,因此如果有人有针对此问题的 DNS 解决方案(不是动态 DNS),我也会很感激这些解决方案。

如果问题太基础或者不切题,请见谅;我绝对是网络新手。

感谢您的帮助。

答案1

如果10.10.10.10已经指向路由器上的 WAN 接口,您只需要在路由器上添加到内部主机的静态路由。

ip router add 10.10.10.10/32 dev eth1

路由器上的 LAN 侧网卡在哪里eth1。(确保路由器上的 WAN 接口和 LAN 接口均已打开 IP 转发)。

然后只需将 10.10.10.10/32 分配给 Argon 上的网卡。除非它在 ​​192.168.1.1/24 子网中有一个 LAN IP,否则 Argon 必须将其路由设置为:

ip route add 192.168.1.1/24 dev eth0
ip route add default via 192.168.1.1

内部客户端应该不会遇到任何问题。数据包将通过为默认网关定义的 NIC 离开内部主机。默认网关是您的路由器。该路由有一条到 10.10.10.10/32 的路由,返回其 LAN 接口。

思考应该工作正常。如果不能,你必须弄清楚如何处理发行版上的发夹转发。(我真的认为它在大多数情况下应该默认起作用...)。


如果您想尝试分配10.10.10.10/32给路由器本身,然后使用 NAT 将所有内容定向到 Argon 的内部 IP,那么神奇的短语就变成了“Hairpin NAT”。您可以在此处阅读有关该兔子洞的更多信息: 无法通过公共 IP 地址内部访问域


为了完整起见...如果 10.10.10.10 当前未指向您的路由器的 wan 网卡...您将必须与提供商讨论如何将 10.10.10.10 路由到您的路由器。(消费级设备在这里不起作用)


对于那些喜欢图片的人来说(我不擅长画图而且我安装的只是绘画),这里是没有 NAT 的路线:

无需 NAT 的 Linux Hairpin 路由

答案2

您所描述的内容称为 SNAT,换句话说就是 1:1 NAT。它将一个网络上的单个地址映射到另一个网络上的单个地址,这是在地球上公开单个主机(通常向互联网)上的服务的最常见方式。因此,只要您的网关支持它,您就需要创建 10.10.10.10 到 192.168.1.2 的 1:1 NAT。

所有到 10.10.10.10 的流量都会被导向 192.168.1.2,并且所有通过网关上的 10 接口离开网络的流量都将来自 10.10.10.10。

希望这可以帮助!

相关内容