如何桥接物理子网和公共服务器?

如何桥接物理子网和公共服务器?

所以我一直在思考这个问题,希望有人能帮助我。

我的想法是在公共服务器上运行代理(nginx、traefik 等),使用 authelia 或其他类型的身份验证助手,并重定向到可以在 NAT 后面的容器网络上运行的某些服务(例如 matrix.org、gitlab 服务器、grafana)

让我们做好准备:有一个物理网络,CG-NAT 后面有路由器和互联网连接。网络路由器配置了 5 个不同的子网:

  • 192.168.101.1/24 - servers
  • ...
  • 192.168.105.1/24 - containers

每个子网都有其第一个 IP192.168.10x.1作为网关,其物理上就是路由器本身。

我想到过 k3s,但说实话,仅仅访问一些本地服务就已经相当复杂了。我们甚至都不要去 k8s。因此,为了简化问题,我想到解决网络第 2 层问题:

  1. 尝试过 tailscale,但那不是 lvl2
  2. ngrok 使用他们的网站作为代理,我们不希望这样
  3. 零层桥梁位于 lvl2,因此这似乎是一个很好的解决方案!

因此,公共服务器安装了 zerotier,办公室网络中有一台机器被指定为 zerotier 桥接器,并桥接到 105 子网。为此,我创建了一个具有固定 IP 的 ubuntu 服务器192.168.105.3,安装了 zerotier 1.8.4。现在,如果我选择任何不是物理网络的子网,一切都会正常:计算机可以在该虚拟网络上互相 ping 通,并且 iperf3 在 NAT 内外都能达到合理的 80mbits 左右。

但是,我想桥接到一个真正的子网,所以我继续配置桥接。最初,我从[此处][2]提供的指南中获得了灵感,但它不起作用。然后我彻底关闭了它,重新安装了 ubuntu 服务器,并按照[此处][3]之类的基本桥接指南进行操作。但它仍然不起作用。

在 zerotier 中我选择了:

  • subnet 192.168.105.x
  • 将 dhcp 范围在 zerotier 和 dhcp 之间划分
  • 桥接机器没有 zerotier 分配的 IP,但有固定的 IP 地址192.168.105.3
  • 允许桥接,配置 br0 iface 并显示正确的 IP192.168.105.3

我现在确信这是一个路由和掩码问题:我需要在桥接机器上设置什么样的路由和掩码,以便它可以将 lvl2 数据包中继到物理网络?

同时,我还没有找到任何关于如何告诉物理网络,不同于网关的机器现在应该是另一条路由的端点的提及!好像所有与桥接相关的教程都只解决了一种问题,而另一种方法甚至没有讨论?物理网络上任何试图访问 zerotier 后面其余网络空间的东西仍然会无助地询问网关,而网关对此一无所知,对吗?

有没有比 zerotier 更好的解决方案来实现我的目标?

[1]: [2]:https://zerotier.atlassian.net/wiki/spaces/SD/pages/193134593/Bridge+your+ZeroTier+and+local+network+with+a+RaspberryPi [3]:在 ubuntu linux 12.10 中桥接两个网络接口并能够从该机器访问它

相关内容