如何通过客户操作系统上运行的 VPN 路由来自主机操作系统的所有网络流量

如何通过客户操作系统上运行的 VPN 路由来自主机操作系统的所有网络流量

我有一个通过 QUEMU/KVM 在 Fedora(主机操作系统)上运行的 Ubuntu VM(客户操作系统)。

我在 Ubuntu VM 上运行了一个 VPN 客户端。由于端点可见性规则,如果我尝试直接从 Fedora 连接到 VPN,我就会被踢出。

我的目标是将所有网络流量从 Fedora 路由到 Ubuntu VM,并允许 Fedora 访问 VPN 后面的内部网。

我怎样才能实现这个目标?

答案1

利用问题中有限的信息,我使用一些假设来举例(只需将下面的接口和 IP 地址替换为您系统上适用的地址):

客户端 VPN 隧道接口:vpn0
客户端默认网关:4.3.2.1

服务器 VPN 隧道 IP 地址:10.10.10.1
VPN 服务器 IP 地址:(6.7.8.9您连接 VPN 客户端的地址)

一旦成功将 VPN 客户端连接到服务器,以下操作将允许客户端完整隧道(即通过 VPN 服务器路由所有流量):

为 VPN 服务器添加特定路由(这样客户端就不会尝试在 VPN 隧道内发送 VPN 流量):

ip route add 6.7.8.9 via 4.3.2.1

添加两个/1段来取代默认(0.0.0.0/0)路由:

ip route add 0.0.0.0/1 via 10.10.10.1 dev vpn0
ip route add 128.0.0.0/1 via 10.10.10.1 dev vpn0

一旦关闭隧道,这两条/1路由将自动删除,因为 vpn0 不再可用,默认路由将再次优先。(到 VPN 服务器公共 IP 地址的路由将保留,但没有问题。)

相关内容