OpenVPN 和路由

OpenVPN 和路由

我有一个运行 openvpn 的服务器,但遇到了一个小问题。

我所有的流量都被转发到 VPN,当我使用“whatismyip”这样的网站时,我可以看到服务器 IP,所以这部分是可以正常工作的。

但是,当我连接到与 VPN 托管在同一服务器上的站点时,我看到的是我的真实 IP 地址,而不是本地 IP 地址,例如 10.8.0.2(在 apache2 日志中)

有人能帮我解决这个问题吗?

答案1

为了将所有流量路由到 VPN 服务器,VPN 客户端会将客户端计算机的默认路由设置为隧道设备。但是,VPN 客户端创建的传出加密数据包需要直接路由到 VPN 服务器(而不是返回 VPN 客户端),因此会创建一条从本地网关到 VPN 服务器的特定路由。路由表如下所示(其中 1.2.3.4 是 VPN 服务器的公共 IP):

192.168.0.0/24 dev eth0     # Local network
1.2.3.4/32 via 192.168.0.1  # Route to VPN server
default via 10.8.0.2        # Everything else via VPN client

当您访问 VPN 服务器上的另一项服务时,它会与该特定路由匹配并直接路由到 Internet。

有几种方法可以解决这个问题:

  1. 访问 VPN 服务器上的其他服务时使用 VPN 服务器上的私有 IP(例如,使用 10.8.0.1 而不是 1.2.3.4)。理想情况下,这可以通过 VPN 服务器上的 DNS 服务器来实现,该服务器为 VPN 客户端提供拆分 DNS。
  2. 为 VPN 服务器使用专用 IP 地址。
  3. 在客户端上配置基于端口的策略路由,以便只有发往 VPN 端口号上的 VPN 服务器的数据包才会直接路由到 Internet 上。

相关内容