如何让特定程序在arch linux中使用wireguard?

tho*_*iha 6 arch-linux vpn

我只想让一个程序通过我存储在的wireguard 配置运行/etc/wireguard/config.conf,而所有其他程序通过正常的IP 地址运行。

我在路由上的wireguard use 中找到了此页面,它建议使用命名空间,但是当我尝试运行某些命令时,例如

sudo ip link set wlp2s0 netns physical
RTNETLINK answers: Invalid argument
Run Code Online (Sandbox Code Playgroud)

建议这不能通过 arch linux 来完成。有没有人找到一种方法让特定程序通过wireguard运行?


我在另一台机器上尝试了上述教程,在尝试加载我的wireguard配置时出现以下错误。

wg setconf wgvpn0 /etc/wireguard/my_vpn.conf:格式无效,但使用时相同的配置可以完美运行wg-quick up

顺便说一句,有人知道 Wireguard 的问题跟踪系统吗?我提交到他们的邮件列表的问题不公开。

A.B*_*A.B 2

OP的问题中提供的wireguard.com链接,特别是在新命名空间解决方案中,它解释了如何使用以太网和无线示例移动物理接口,大胆强调我的:

物理网络命名空间图 首先我们创建“物理”网络命名空间:

# ip netns add physical
Run Code Online (Sandbox Code Playgroud)

现在我们eth0进入wlan0“物理”命名空间:

# ip link set eth0 netns physical
# iw phy phy0 set netns name physical
Run Code Online (Sandbox Code Playgroud)

请注意,必须使用iw并指定物理设备来移动无线设备phy0

如前所述,OP 似乎读取了第一个ip link set ... netns命令,但没有看到无线设备需要第二个命令。

iw的手册页很少,但iw --help包括:

   phy <phyname> set netns { <pid> | name <nsname> }
            Put this wireless device into a different network namespace:
                <pid>    - change network namespace by process id
                <nsname> - change network namespace by name from /run/netns
                           or by absolute path (man ip-netns)
Run Code Online (Sandbox Code Playgroud)

某些驱动程序可能尚不与网络命名空间兼容。其工作需要此输出:

$ sudo iw phy0 info|grep netns
         * set_wiphy_netns
Run Code Online (Sandbox Code Playgroud)

假设只有一个简单的无线设备,通过其对应设备wlp2s0进行处理,因此根本不会出现在命令中。必须使用这个:iwphy0

sudo iw phy phy0 set netns name physical
Run Code Online (Sandbox Code Playgroud)