在这里,我有一些(也许是不同的)问题,但是彼此相关,所以我最好在一个问题上问他们。
我一直在试图让我的OpenVPN客户端(OpenVPN以桥接模式安装)连接到Docker容器。
众所周知,Docker容器都是通过一个桥( docker0桥或者什么)相互连接的。
我总是习惯在我的家庭服务器上使用自己的网桥( br0 ),在那里我设置Docker使用该网桥( br0 ),并桥接该网桥上的OpenVPN接口( tap0 )和我的物理接口( eth0 )通过局域网连接到我的家庭路由器。 这对我来说一直都很有效,所有的OpenVPN客户端总是能够访问在br0桥接的每个Docker容器(OpenVPN客户端和Docker容器在我的LAN范围内都有IP)。
几天前我租了一个VPS,我的物理接口直接连接到互联网(它具有独特的公共IP)。
我做了以前的一样(设置Docker使用我所有容器的br0 ),并在br0上桥接OpenVPN tap0 。
我面临的问题是,我的OpenVPN客户端无法ping或访问任何Docker的容器,(容器能够ping和访问其他Docker的容器,但不是OpenVPN客户端),并且客户端无法ping其他也是如此。
这有没有什么,我没有物理接口桥接? 如果是的话,我想知道为什么我应该桥接我的服务器的接口(通过局域网连接到任何路由器)除了OpenVPN的TAP接口,以在桥接模式下获得function的OpenVPN?
这个问题在我的脑海里又提出了另外一个相关的问题: 只要客户端是tap0接口的一部分,为什么不能简单地通过TAP接口访问对方。 我的物理界面扮演什么angular色?
如果我的问题确实是因为没有物理接口的桥接,我怎么才能让OpenVPN在没有物理接口的情况下在网桥模式下完全正常工作(或者至less可以是任何解决scheme,只要我的物理接口直接连接到互联网没有任何局域网)?
我希望有人能帮助我得到OpenVPN的工作
在观看一些video后,我仍然有这个问题,如果我有两个TAP接口,他们每个都映射到一个virtualbox系统。 tap0 -> vb0 , tap1 -> vb1 , tap0 and tap1连接到一个桥接器br0 (不连接到任何物理接口),只有tap0和tap1桥接在一起, vb0 and vb1将能够ping其他? (我现在对任何一种外部连接都不感兴趣)。 根据@shodanshok回答,不,他们不会,对不对? 直到现在我还不能明白为什么他们不能,请您详细解释一下这一点。
OpenVPN tap接口在ISO / OSI模型的第二层工作,所以它需要连接到主,真实接口的第二层(读:桥/交换机)。
我强烈build议你重新configuration你的OpenVPN连接,以使用tun接口,通过在栈的更高层次(级别3)操作,不需要到主接口的桥接连接(相反,它们按照路由表)。
查看openvpn手册页上的“server-bridge”部分以获取更多信息。
好吧,经过很多实验,现在我可以回答我的问题,分享我的经验:
br0 )能够在桥接模式下运行OpenVPN ? 没有! 我一直认为是相反的,但是现在我可以确认,只要正确configurationOpenVPN ,就可以直接连接所有的OpenVPN客户端,而且它们将处于独立的networking中。 即tap0接口不是任何网桥的一部分。 因此,不需要任何与tap0桥接的物理接口,只有具有正确configuration的OpenVPN tap0才能完成这项工作!
问题实际上是在客户端! 我经常用到, OpenVPN客户端都在我的LAN IP范围内 ,因此不需要额外的防火墙设置,但是现在IP范围不同(networking是一个新的隔离networking),因此所有客户端的Windows防火墙都是简单的丢弃所有来自其他客户端的ping,当我禁用它(或允许我的OpenVPN IP池范围)连接,一切工作完美!
tap0连接容器,并从您的OpenVPN客户端连接到容器? 是! 我只是使用了一个非常简单的configuration(networking掩码和IP范围相同),netmask /24 ,而且一切都非常基本,只是为了确保一切正常,一切正常!