我有一个运行 Proxmox 的家庭服务器,有 9 个 VM 和 CT。我希望能够通过 VPN 网关路由特定的 VM/CT 流量。我知道这可以通过 OpenVPN 来实现,但它的速度相当有限(我有 1Gig 的上行/下行连接)。所以我一直在尝试寻找有关如何设置 WireGuard VPN 服务器网关的教程或指南。
我想到什么了:
- 我需要与提供 WireGuard conf 文件的 VPN 提供商订阅,我正在考虑 Mullvad。
- 我将使用本指南安装 WireGuard 服务器:https://www.cyberciti.biz/faq/ubuntu-20-04-set-up-wireguard-vpn-server/
然后我就有点迷茫了。主要是如何让服务器路由流量。
示例场景:
运行地理封锁服务的容器 → 将此容器的默认网关更改为指向 Wireguard 服务器 -> 这样就无需地理封锁了。
答案1
我终于让它工作了。这适用于任何想和我一样实现目标的人。
安装 Ubuntu,安装 Wireguard 服务器。
使用 VPN 提供商的配置创建 wg0.conf。就我而言,我必须使用这个 Python 脚本https://github.com/hsand/pia-wg提取 PIA WireGuard 配置。我的 wg0 配置如下所示:
测试VPN连接,如果一切正常,则可以继续。
接下来,启用 IP 转发,我使用了这个帖子: https://linuxconfig.org/how-to-turn-on-off-ip-forwarding-in-linux。此时,我通过将我的 Wireguard VPN 设置为我的 w11 测试 VM 的默认网关来测试转发是否有效(您的 VPN 隧道现在需要禁用,因为尚未配置转发)。Tracert 到 google.com 显示 Wireguard VM 是其中一个跳转,因此一切正常。
接下来,我将虚拟机 NIC 的名称服务器更改为使用 PIA DNS 服务器(可以在他们的网站上找到或从 wg0 配置中复制)https://helpdesk.privateinternetaccess.com/kb/articles/using-pia-dns-in-custom-configurations)。稍后我会解释为什么我这样做。网卡配置:
接下来是使这一切正常工作的主要部分,即 IPTABLES 配置。我从 Craft Computing YouTube 频道获取了一个已制作好的脚本(https://youtu.be/xFficDCEv3c),修改了一些设置以适应我的用例。请参阅以“CHANGED”开头的部分,这些是我更改的设置。 https://pastebin.com/H2yrqXMF
我将 iptables.sh 保存在我的 /etc/wireguard/ 文件夹中。
接下来,启用您的 WireGuard 隧道并使用 运行 Iptables 脚本
sudo bash iptables.sh
。(这破坏了我的 SSH,但我不介意,因为我从 Proxmox 控制台控制服务器。)
为什么使用 PIA DNS 服务器?
在测试此配置的 DNS 泄漏时,我注意到我的机器仍然使用我的 IPS 的 DNS 服务器,从而有效地泄漏了我的公共 IP。这就是为什么我在步骤 5 中更改了 VPN VM 的 DNS 配置以及通过 VPN 路由其流量的机器的 DNS 设置。
我如何使用它:
在我希望流量通过 WireGuard VPN 路由的机器上,我将默认网关设置为我的 WireGuard VM 的地址,并将 DNS 服务器设置为 PIA 的 DNS 服务器。
我不知道这是否是最好的方法,但这对我来说很有效。
关于 IPtables
它们的设置方式是,如果 VPN 隧道发生故障,则不会重定向任何流量。本质上充当“终止开关”。