openvpn 的重定向网关选项如何工作?

mon*_*day 3 routing openvpn

我有一个简单的 openvpn 设置,客户端使用一个redirect-gateway def1选项运行。

这是生成的路由表(VPN_SERVER_IP 是 VPN 服务器的公共 IP,本地网络是 192.168.127.0/24,VPN LAN 是 10.8.0.0/24):

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.8.0.49       128.0.0.0       UG    0      0        0 tun_tcpdec
0.0.0.0         192.168.127.1   0.0.0.0         UG    0      0        0 eth0
10.8.0.0        10.8.0.49       255.255.255.0   UG    0      0        0 tun_tcpdec
10.8.0.49       0.0.0.0         255.255.255.255 UH    0      0        0 tun_tcpdec
VPN_SERVER_IP   192.168.127.1   255.255.255.255 UGH   0      0        0 eth0
128.0.0.0       10.8.0.49       128.0.0.0       UG    0      0        0 tun_tcpdec
192.168.122.0   0.0.0.0         255.255.255.0   U     0      0        0 virbr0
192.168.127.0   0.0.0.0         255.255.255.0   U     0      0        0 eth0
Run Code Online (Sandbox Code Playgroud)

它有效并且所有流量都被重定向到 VPN,但我不明白如何进行。假设我尝试在 1.1.1.1 处 ping Cloudflare 的 DNS,第二条规则不应该只通过路由器发送数据包(规则 2)吗?

Ter*_*nen 9

流量通过您的 VPN 流动,因为流量符合以下两个规则之一:

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.8.0.49       128.0.0.0       UG    0      0        0 tun_tcpdec
128.0.0.0       10.8.0.49       128.0.0.0       UG    0      0        0 tun_tcpdec
Run Code Online (Sandbox Code Playgroud)

redirect-gateway def1选项添加了这两条路由。这些路由而不是第二条规则用于转发流量,因为这些规则更加具体(网络掩码设置了一位,在第二条规则中网络掩码设置了零位)。

这意味着大约一半的互联网使用第一条规则转发,而互联网的后半部分则使用第二条规则转发。

使用这种方法是因为它适用于大多数平台。另一种方法是使用路由表条目优先级,其中 OpenVPN 分配的默认路由将获得比其他默认网关更高的优先级。