在桥接模式下使用 OpenVPN 时,ARP 答复从 br0 消失到 tap0

在桥接模式下使用 OpenVPN 时,ARP 答复从 br0 消失到 tap0

我已经设置了一个Linux机器(在esxi5上),它充当OpenVPN服务器。该服务器被配置为使用桥接来为客户端服务,这基本上是可行的,但有一个例外。

如果客户端 ping 网络上的某台机器(不是服务器本身),则它不起作用。我排除了我所知道的所有东西(iptables 等),并运行 tcpdump 将其归结为以下几点:

  • 我在 tap0 和 br0 上看到了 ARP 请求
  • 我看到了 br0 上的 ARP 回复
  • 我没有看到 tap0 上的 ARP 回复

问题:为什么 br0 设备不将 ARP 回复转发给 tap0 设备?

答案1

如果没有更多信息,我们只是猜测,但让我们尝试一下:

首先确保 eth0 和 tap0 都处于混杂模式。br0 不应该处于混杂模式。

接下来检查您是否拥有 arptables 以及任何可能会产生干扰的 iptables 规则。

由于您已经收到 arp 回复,因此您可能没有,但无论如何都要检查一下。

最后检查rp_过滤器设置,还要检查您可能设置的任何额外的 sysctl 参数。

答案2

如果您的 ESXi 主机与网络有冗余连接,则由于 Net.ReversePathFwdCheckPromisc 的默认设置,可能会出现各种 ARP 问题。使用 CARP 的 pfSense 用户是最早调试此问题的用户之一,详情请见https://doc.pfsense.org/index.php/CARP_Configuration_Troubleshooting

在类似的环境中,我们在 FreeBSD 上设置了 OpenVPN 桥接,但还增加了 VLAN 的复杂性。在 Net.ReversePathFwdCheckPromisc 未设置为 1 且存在多个网络上行链路的主机上,我们看到分路器设备的入站流量出现大量数据包丢失(95% 以上)。设置为 1 时,它工作正常。

相关内容