在 LAN 和 VLAN 之间路由 Web 服务器访问

在 LAN 和 VLAN 之间路由 Web 服务器访问

我有一个设置了 IP 为 10.0.0.X 的 LAN 和一个设置了 10.147.18.X (Zerotier) 的 VLAN,并且我有一个可在 VLAN 内访问的 Web 服务器 (Plex)。我有一台 ubuntu 22.04 电脑,它通过以太网接口直接连接到 LAN,并且在虚拟接口上,这台电脑连接到 VLAN。如何使用这台电脑允许 LAN 上的计算机访问 VLAN 上的 Web 服务器?我不一定想桥接这两个网络,因为我不想让所有流量都在这两个 LAN 之间流动,而只希望访问 Web 服务器。我想这可以通过 iptables 或 ip 路由来实现,但我不确定如何实现。我的某些设备无法使用 Zerotier,因此它们无法直接连接到 VLAN。

本质上我希望这样,当我打开 Web 浏览器并访问 LAN 上特定 TCP 端口上的 ubuntu PC 的 IP 地址(例如 10.0.0.2:32400)时,它的行为与我在 VLAN 上并且将 plex 服务器的地址放在同一端口上时完全相同。

答案1

您可以按照以下规则轻松进行端口转发iptables10.147.18.X更新为目标服务器的地址)

iptables -t nat -A PREROUTING -d 10.0.0.2 -p tcp --dport 32400 -j DNAT --to-destination=10.147.18.X
iptables -t nat -A POSTROUTING -d 10.147.18.X -p tcp --dport 32400 -j MASQUERADE

然后你需要使用 启用 IP 转发sysctl net.ipv4.ip_forward=1。此配置是临时的,将在重启时重置,因此你可能需要了解如何在启动时设置iptables规则和 IP 转发。

您可能还考虑使用路由来执行此操作,如果您在客户端和服务器计算机上设置了适当的路由,则不需要任何端口转发规则。

# On the client
ip route add 10.147.18.0/24 via 10.0.0.2

# On the server
ip route add 10.0.0.0/24 via 10.147.18.Y
# (update via IP to the IP of your ubuntu machine on the VLAN)

# On the Ubuntu machine, enable IP forwarding
sysctl net.ipv4.ip_forward=1

这将允许10.0.0.0/24LAN 上的设备使用其 IP 地址访问 VLAN 上的设备

相关内容