了解私有网络命名空间中 wg-quick 的路由规则?

了解私有网络命名空间中 wg-quick 的路由规则?

几天来我一直在努力解决这个问题,所以我画了一张图(在帖子的底部)。

语境

我有一个带有两个命名空间的 VPS:

  • 初始化命名空间(根)
  • 自定义命名空间(我很酷的命名空间)

作为一个思想实验,我只希望那些通过 Wireguard(托管在my cool namespace)连接的应用程序能够访问 10.0.0.0/16 子网上的应用程序,并在子网外部发出出站请求仍然能够访问公共互联网。

例如:

  • WG 客户端 1 ping 10.0.0.1:8000 -> 应用程序加载
  • WG 客户端 1 ping 1.1.1.1 -> 应用程序加载

我有什么工作

我应该先说一下,我正在使用wg-quick,我认为在尝试破译所有路由表之后,它在网络名称空间内有一些固有的奇怪之处,但就这样吧。

  • 我添加了 iptables dnat 规则,将 eth0 上的 UDP 流量 + WG 端口转发到我的 veth 对。这似乎使连接对等方能够访问命名空间中托管的应用程序。但是,我无法从客户端(或服务器)对外界执行 ping 操作。
  • 如果我删除该wg0接口(wg-quick down),我可以再次 ping 外界。

这告诉我这肯定是一个路由表问题,很可能是默认路由表和 wg-quick 构建的 wireguard 路由之间的默认路由发生冲突。

我希望有人能够简化我的整体心理模型,即数据包应流向何处、重定向到何处以及我在执行此操作时应考虑的 IPtables 规则。

因为我正在学习,所以我想将这个设置与 veth 对一起保留,并且不引入任何桥接器、tun/taps 等。

在此输入图像描述

相关内容