VPN 启动后服务器失去公共访问权限

VPN 启动后服务器失去公共访问权限

我设置了一个使用 OpenVPN 的服务器客户,以便将其连接到我家里的私人网络。每当我在服务器上启动 VPN 客户端连接时,我只能连接到它的公共 IP 地址 (188.226.161.x),前提是我在同一个 VPN 网络上。如果服务器未连接到 VPN,那么无论我当前是否正在使用 VPN,我都可以连接到它。

问题

有没有办法让我连接到服务器的公共 IP 地址,即使我没有连接到同一个 VPN?

额外信息

  • 服务器上没有防火墙规则。
  • 该服务器是运行 Ubuntu 14.04 的 Digital Ocean 实例

VPN 连接之前服务器上的路由表

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         188.226.161.1   0.0.0.0         UG    0      0        0 eth0
10.0.3.0        0.0.0.0         255.255.255.0   U     0      0        0 lxcbr0
188.226.161.0   0.0.0.0         255.255.255.0   U     0      0        0 eth0

VPN 连接后服务器上的路由表

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.8.0.1        128.0.0.0       UG    0      0        0 tun0
0.0.0.0         188.226.161.1   0.0.0.0         UG    0      0        0 eth0
10.0.3.0        0.0.0.0         255.255.255.0   U     0      0        0 lxcbr0
10.8.0.1        0.0.0.0         255.255.255.255 UH    0      0        0 tun0
128.0.0.0       10.8.0.1        128.0.0.0       UG    0      0        0 tun0
178.62.56.51    188.226.161.1   255.255.255.255 UGH   0      0        0 eth0
188.226.161.0   0.0.0.0         255.255.255.0   U     0      0        0 eth0

答案1

我找到了解决问题的方法超级用户的回答。问题在于服务器默认使用 tun0 接口而不是 eth0,而实际上我们希望它只将 tun0 用于 10.8.0.0 到 10.8.0.255 上的私有网络。因此,解决方案是将客户端连接配置为仅在连接到其他 VPN IP 时使用 tun0 接口,而不是用于整个互联网。

对于我来说,这是通过在 client.conf 文件末尾添加以下两行并重新启动我的 openvpn 连接来完成的:

route-nopull 
route 10.8.0.0 255.255.255.0

这意味着如果服务器尝试连接到 10.8.0.0-255,它将使用 tun0 接口。除此之外的任何目标,它将改用 eth0 接口。

相关内容