Qubes上使用VPN服务
Contents
这篇文章记录一下如何在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
创建wireguard的AppVM
创建的时候需要注意如下图所示中要将Proviers network access to other qubes选择上不然是没办法给到其他的qube使用的。
然后再去创建AppVM要把networkmanager服务选择上去
然后就可以开机了。
配置wireguard
我们之前启动了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,直接启动看效果:
TODO
- 加入自动化配置中
- 配合warp 自选ip 定期更新endpoint