当连接到我们公司的 VPN 并查看路由表时,我发现:
172.16.0.0 10.8.0.241 255.255.0.0 UG 0 0 0 tun0
10.8.0.241 0.0.0.0 255.255.255.255 UH 0 0 0 tun0
10.8.0.0 10.8.0.241 255.255.255.0 UG 0 0 0 tun0
我认为我理解第一行是:发往 172.16 网络的数据包被丢弃到 tun0 接口,但地址为网关 10.8.0.241,它将处理其余部分。
第二行明确指出,要到达 10.8.0.241,只需将其放入 tun0。
我不明白为什么最后两行不能合并成
10.8.0.0 0.0.0.0 255.255.255.0 UG 0 0 0 tun0
也就是说,任何到 10.8 的数据包都可以直接放入隧道,正确的机器会将其接收。为什么到 10.8 的数据包必须先明确交给同一网络的网关?是不是因为 10.8.0.251 在这里被误用为交换机,因为它实际上是唯一直接连接到 tun0 另一端的机器,并且知道如何将数据包向前移动到 10.8?
答案1
在回答这个问题之前,让我先解释一下相关的标志。
- U(路由已启动)
- H(目标是主机)
- G(使用网关)
路由2
和3
无法组合,因为您正在通知源计算机10.8.0.241
直接访问(metric 0
),并且要访问具有网络 ID 的任何计算机,10.8.0.0/24
请使用网关10.8.0.241
。我不确定我们为什么要将 pkts 转发到默认网关,但这可能是在网关路由器/防火墙上注入反向路由的技巧。
答案2
猜测网络的拓扑结构是
客户端 => 互联网 => 10.8.0.241 => 10.8.0.0/24
建立 VPN 后,您无法直接连接到任何主机,只能通过 tun0 连接到 VPN 端点。要将数据发送到 10.8.0.0/24 范围内的任何其他设备,您需要将其发送到 GW (10.8.0.241),然后 GW 会将其转发到正确的主机。
这可以为您提供与远程端点服务器位于同一网络上的 IP,或者以便您可以连接到其他 VPN 客户端。