我正在尝试设置一个VPN网关与两个有线接口。
一个是从init命名空间访问的网关,它可以从eth0转发传入的本地数据包。
第二个接口用于接收web服务器的传入连接。我需要这个隔离的,这样它就不会干扰网关接口。
环顾四周,我认为使用wireguard命名空间的技巧可能会奏效。这种设置
|----------------------------- |
| ------------------ |
| | vpn forward ns | |
| | | |
| | |<--->-macvlan<|---->| |
| |-|--------------| |<->|eht0 ------- Local network, inc gateway.
| | | |
| | init namespace | |
| | | |
| |<->wireguard if | |
| | |
| ------------------ | |
| | vpn inbound ns | | |
| | | | |
| ||<-->-macvlan<--|---->| |
| || | |
| ||<->wireguard if| |
| |----------------| |
|------------------------------|然而,官方文档上的技术:https://www.wireguard.com/netns/不能工作,因为我需要局域网上可用的物理接口来接收本地数据包来转发。
但这似乎是不完整的,当我按照这些思路实现时,使用macvlan的命名空间无法连接到任何东西,更不用说使用wireguard连接了。
我认为我需要为网关接口做些什么:
创建一个命名空间&向其添加一个macvlan。添加默认路由,以便该命名空间中的所有内容都通过macvlan,并扩展为eth0。在名称空间中创建wireguard设备,然后将其移动到init命名空间。将init命名空间的默认路由设置为wireguard接口。那么,现在init命名空间中的所有内容都通过wireguard接口路由,这反过来将通过macvlan,然后通过eth0并进入更广泛的网络?
对于入站接口:相同的启动,但不要将wireguard接口移出命名空间。然后,我可以在这个名称空间中运行我的run服务器,并且通过wireguard的入站连接将连接到它。
我不太明白这个机器是怎么工作的。它纯粹是链接物理设备的别名吗?所以,任何被路由下来的东西,实际上都是被路由下来的,eth0说?我需要给它一个ip地址吗?如果是这样的话,它是否需要与我的互联网网关在同一个子网上才能到达更广泛的互联网?
是否有更好的方法来实现我正在努力做的事情?
发布于 2023-03-13 21:31:04
我想得太多了。我所需要做的就是让两个接口共享一个fw标记。
主界面仍然可以通过wg-快速创建.尽管,在conf文件中设置了FwMark值。
第二个接口需要手动创建,它仍然可以使用带有FwMark集的second文件。然后移到孤立的命名空间中。一旦它被打开,并且在该命名空间中添加了一个默认路由,这个使用相同的FwMark作为主接口的辅助wireguard接口就可以独立工作了。
如果将服务放置在侦听开放端口的命名空间中,则可以使用辅助端点IP通过主wireguard接口连接到服务。
https://serverfault.com/questions/1126083
复制相似问题