了解 OpenVPN 的路由表

了解 OpenVPN 的路由表

我把材料取自如何理解 OpenVPN 客户端上的路由表

这是路由表:

# route -n
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
10.8.0.5        0.0.0.0         255.255.255.255 UH    0      0        0 tun0
10.8.0.1        10.8.0.5        255.255.255.255 UGH   0      0        0 tun0
54.202.18.143   10.0.2.2        255.255.255.255 UGH   0      0        0 eth0
10.0.2.0        0.0.0.0         255.255.255.0   U     1      0        0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U     1000   0        0 eth0
0.0.0.0         10.8.0.5        128.0.0.0       UG    0      0        0 tun0
128.0.0.0       10.8.0.5        128.0.0.0       UG    0      0        0 tun0
0.0.0.0         10.0.2.2        0.0.0.0         UG    0      0        0 eth0

我配置了 OpenVPN,但我对两件事感到困惑:

  1. 通过 tun0 的 TCP 数据包
  2. 通过 54.202.18.143(公共 VPN IP)的 UDP OpenVPN 数据包

问题:

  1. 为什么 OpenVPN 需要这一行:54.202.18.143 10.0.2.2 255.255.255.255 UGH 0 0 0 eth0
  2. 哪些数据包通过 tun0?
  3. 哪些数据包通过 54.202.18.143?

感谢您的帮助!

答案1

困惑:

  1. 流经的不仅仅是 TCP 数据包tun0。也可能是 UDP 和 ICMP。
  2. UDP 是封装 OpenVPN 流量的协议

问题解答:

  1. 这是一条通往 VPN 网关的显式路由(确保255.255.255.25554.202.18.143该 IP 地址完全匹配:仅此而已):

    54.202.18.143   10.0.2.2        255.255.255.255 UGH   0      0        0 eth0
    

    我假设这10.0.2.2是您的 LAN 路由器,因此这告诉您的客户端 VPN 端点的所有流量都将通过您的路由器发送eth0(以及向前)。这可以确保,因为您的伪默认路由已更新为通过 VPN 发送所有流量,所以封装的数据包本身也不会通过 VPN 进行路由。 (就像蛇吃尾巴一样,这不是一个好的情况。)

    伪默认路由由这两行构建:

    0.0.0.0         10.8.0.5        128.0.0.0       UG    0      0        0 tun0
    128.0.0.0       10.8.0.5        128.0.0.0       UG    0      0        0 tun0
    

    这些线路的优先级高于实际默认路由,但低于路由表中任何其他线路的优先级。它们一起匹配除与路由表中其他行匹配的流量之外的所有流量。

  2. 除 OpenVPN UDP 封装流量外的所有数据包都将经过 tun0
  3. 只有 OpenVPN UDP 封装流量将通过 54.202.18.143。

相关内容