为什么我们需要一个与 OpenVPN TAP 接口桥接的 LAN 物理接口才能在桥接模式下运行 OpenVPN?

Moh*_*din 4 networking ethernet openvpn bridge docker

在这里,我有一些(可能略有不同)的问题,但彼此相关,因此我更愿意在一个问题中提出问题。

我一直在尝试允许我的 OpenVPN 客户端(OpenVPN 设置为桥接模式)连接到 Docker 容器。
众所周知,Docker 容器都通过桥(docker0桥或其他任何东西)相互连接。

我总是br0在我的家庭服务器上使用我自己的网桥 ( ),在那里我设置 Docker 以使用该网桥 ( br0),并tap0在该网桥上桥接 OpenVPN 接口 ( ) 和我的物理接口 ( eth0),它通过 LAN 连接到我的家用路由器。这总是对我有用,所有 OpenVPN 客户端总是能够访问桥接的每个 Docker 容器br0(OpenVPN 客户端和 Docker 容器在我的 LAN 范围内都有 IP)。

几天前我租了一个 VPS,我的物理接口直接连接到互联网(它有唯一的公共 IP)。
我和以前一样(将 Docker 设置br0为对所有容器使用我的),并tap0br0.

我面临的问题是,我的 OpenVPN 客户端无法 ping 或访问任何 Docker 的容器(容器能够 ping 并访问其他 Docker 的容器,但不能访问 OpenVPN 客户端),并且客户端无法 ping 每个其他也一样。

这与我没有桥接物理接口有什么关系吗?如果是的话,我想知道为什么除了 OpenVPN TAP 接口之外,我还应该桥接服务器的接口(可能通过 LAN 连接到任何路由器)以获得桥接模式下的功能性 OpenVPN?

这个问题在我脑海中引发了另一个相关问题:只要客户端无论如何都是tap0接口的一部分,为什么它们不能简单地相互访问而不出于某种原因离开 TAP 接口。我的物理接口扮演什么角色?

如果我的问题真的是因为没有桥接的物理接口,我怎样才能让 OpenVPN 在没有该物理接口的桥接模式下完全正常运行(或者至少可能是任何解决方案,只要我的物理接口直接连接到没有任何局域网的互联网)?

我希望有人可以帮助我让 OpenVPN 工作

添加:

看了一些视频后我仍然有这个问题,如果我有两个TAP接口,每个接口都映射到一个virtualbox系统。tap0 -> vb0, tap1 -> vb1, 和都tap0 and tap1连接了一个网桥br0(它没有连接到任何物理接口),只有tap0tap1是桥接在一起,vb0 and vb1才能互相ping通吗?(我现在对任何类型的外部连接都不感兴趣)。根据@shodanshok 的回答,不,他们不会,对吧?到目前为止,我无法完全理解他们为什么不能理解,您能否更详细地解释这一点?

sho*_*hok 5

OpenVPNtap接口在 ISO/OSI 模型的第 2 层运行,因此它需要一个到主要真实接口的第 2 层(读取:桥接/交换机)连接。

我强烈建议您重新配置 OpenVPN 连接以使用tun接口,通过在堆栈的更高级别(级别 3)运行,不需要到主接口的桥接连接(相反,它们按照路由表中的指定路由数据包)。

有关更多信息,请查看openvpn 手册页上的“服务器桥接”部分。

  • 虚拟接口如何与外部世界通信?它有两种可能性:a)layer2/tap 接口需要*桥接*其低层数据包到真实接口,或者 b)layer3/tun 接口可以*路由*数据包到真实接口。简而言之,第一个用作集线器端口,第二个用作路由器端口。 (2认同)

Moh*_*din 1

好的,经过大量实验,现在我可以回答我的问题并分享我的经验:

我是否需要一个桥接器(例如br0在Linux上)才能OpenVPN在桥接模式下运行?

不!我一直认为相反,但现在我可以确认,只要OpenVPN正确配置,您就可以直接连接所有OpenVPN客户端,并且它们将位于自己的隔离网络中。即tap0接口不是任何桥的一部分。因此,也不需要桥接任何物理接口tap0,只有tap0正确配置OpenVPN才能完成这项工作!

为什么它最初对我不起作用?(现在可以了!)

问题实际上出在客户端!我总是使用,OpenVPN客户端都在我的 LAN IP 范围内,因此不需要额外的防火墙设置,但现在,IP 范围不同(网络是一个新的隔离网络),因此所有客户端的 Windows 防火墙只是简单地丢弃所有来自其他客户端的 ping,当我禁用它(或允许我的OpenVPNIP 池范围)连接时,一切工作正常!

那么 Docker 呢?您是否能够桥接容器并tap0连接到客户端的容器OpenVPN

是的!我只是使用了一个非常简单的配置(网络掩码和 IP 范围相同),网络掩码/24,一切都非常基本,只是为了确保一切正常,并且一切都真正正常!