Qubes上使用VPN服务

这篇文章记录一下如何在Qubes里面如何使用VPN,并将其提供网络给到AppVM。

这里使用的是Qubes OS 4.2 VPN使用的是Wireguard VPN VPN AppVM的模板是fedora 38 测试的AppVM模板是debian 12

fedora 默认的模板安装wireguard:

sudo dnf install wireguard-tools  -y
shutdown -h now

创建的时候需要注意如下图所示中要将Proviers network access to other qubes选择上不然是没办法给到其他的qube使用的。

../../images/create-sys-vpn-qube.png

然后再去创建AppVM要把networkmanager服务选择上去

../../images/create-sys-vpn-qube-enable-networkmanager.png

然后就可以开机了。

我们之前启动了NetworkManager的服务所以这里可以很方便的去导入wireguard的配置:

nmcli con import type wireguard file /home/user/wg0.conf

导入之后NetworkManager会自动尝试链接,可以使用sudo wg 查看具体的状态。

根据我这边的测试要添加这些规则,在/rw/config/qubes-firewall-user-script文件后追加如下内容:

# 调整mtu
nft add rule ip qubes custom-forward tcp flags syn / syn,rst tcp option maxseg size set rt mtu
# 强制所有 qubes 流量通过 VPN,并阻止非 VPN 流量。
nft add rule qubes custom-forward oifname eth0 counter drop
nft add rule ip6 qubes custom-forward oifname eth0 counter drop
# wireguard dns的地址 防止dns泄漏
DNS=1.1.1.1
nft add chain qubes nat { type nat hook prerouting priority dstnat\; }
nft add rule qubes nat iifname == "vif*" tcp dport 53 dnat "$DNS"
nft add rule qubes nat iifname == "vif*" udp dport 53 dnat "$DNS"

完成之后就可以重启一下这个AppVM,同时来验证了。

可以新建一台AppVM,网络的这里选择刚刚创建的sys-vpn,直接启动看效果:

../../images/sys-vpn-test.png

  • 加入自动化配置中
  • 配合warp 自选ip 定期更新endpoint