我如何才能通过 OpenVPN 正确转发端口?

我如何才能通过 OpenVPN 正确转发端口?

我正在尝试通过 OpenVPN(使用以太网桥接)转发端口,但是不能。

下面是一个“简单”的网络图。一台服务器包含 2 台虚拟机,主服务器通过 OpenVPN 连接到另一台服务器。我需要将一个端口从10.10.10.2(虚拟机)转发到具有 IP 的外部服务器的公共 IP 10.10.10.11(见图)。

该桥vmbr0包括三个接口:tap0eth0(公共 IP)和vlan110.10.10.0/24)。

网络图

我在10.10.10.11服务器中使用的规则是

iptables -t nat -D PREROUTING -p tcp -d [此处为公共 IP] --dport 80 -j DNAT --to-destination 10.10.10.2:80

在下图中您可以看到数据包通过接口“进入”但没有“退出” tap0

这是接口的转储tap0

主体服务器

数据包从 正确进入tap0,但数据包被路由到vmbr0并且永远无法到达tap0

我该如何解决这个问题?

答案1

网桥本质上将多个 NIC 转变为虚拟交换机。

如果希望设备通过网桥进行通信,则它们需要位于同一子网,就像在真正的交换机上一样。如果它们不在同一子网,则需要路由器,而不是交换机或网桥。

因此,除非您从 ISP 获得 2 个公共 IP(允许您将它们放在同一个子网中),否则桥接您的公共 IPeth0tap0/或NIC 将无法工作。vlan1

您可以将两个虚拟机放在一座桥上 - 并且它们可以进行通信,因为它们位于同一个子网上。

然后,您的系统需要路由并执行 NAT,用作eth0“WAN”NIC 和vmbr0“LAN”NIC。您iptables可以使用任何有关使用 NAT 的指南,只需替换vmbr0eth1面向 LAN 的 NIC 即可。

相关内容