我只是设置了OpenVPN,它按预期工作。但是,客户端的路由表使我无休止。这是路由表:
# route -n
Kernel IP routing table
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
因此,让我们逐行进行剖析
- 任何发往的数据包
10.8.0.5
都没有网关,将使用tun0
- 任何发往的数据包都
10.8.0.1
将通过以下方式10.8.0.5
用作网关tun0
- 任何发往的数据包都
54.202.18.143
将通过以下方式10.0.2.2
用作网关eth0
- 任何发往目的地的数据包
10.0.2.0/24
都没有网关,将使用eth0
- 让我们忽略169.254.0.0部分
- 所有其他数据包(发往
0.0.0.0
)将10.8.0.5
通过用作默认网关tun0
。这是默认网关,不是吗? - 任何发往的数据包
128.0.0.0/7
将通过以下方式10.8.0.5
用作默认网关tun0
- 所有其他数据包(
0.0.0.0
)将通过以下方式10.0.2.2
用作默认网关eth0
问题:
- 如果考虑第6点和第8点,我是否有2个默认网关?(虽然只能有1个默认网关,所以我知道我错了,但无法证明理由)(可能已回答,请参见下文)
- 考虑到第1点和第2点,要做的事情
10.8.0.1
实际上并不是通过tun0使用任何网关。这个对吗? - 考虑到第3点和第4点,要做的
54.202.18.143
并不是真正通过via使用任何网关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/128.0.0.0
,第二行定义128.0.0.0/128.0.0.0
。实质上:
0.0.0.0/128.0.0.0 = 0.0.0.0/1 = 0.0.0.0 TO 127.255.255.255
128.0.0.0/128.0.0.0 = 128.0.0.0/1 = 128.0.0.0 TO 255.255.255.255
因此,以上2条路由覆盖了整个IPv4地址范围[0.0.0.0 TO 255.255.255.255]
。OpenVPN是添加默认路由而不替换原始默认路由的一种聪明方法,该默认路由将通过路由tun0
。
所以我想我对第一个问题有一个答案:
如果考虑第6点和第8点,我是否有2个默认网关?
不,只有一个默认网关,即:
0.0.0.0 10.0.2.2 0.0.0.0 UG 0 0 0 eth0
另外要awarfe该路由128.0.0.0你的内部网络是很奇怪的,因为它的公网IP或保留我不“T remeber但在这两种情况下,这是奇怪的。
—
Kiwy
128.0.0.0部分来自openvpn。在这里
—
slayedbylucifer 2014年
您应该将“ UPDATE”变成这样的答案:一个答案帮助我理解了同样的问题:)
—
WoJ 2016年
@slayedbylucifer 128.0.0.0的解释似乎已经精简,并且没有可用的存档。您是否碰巧有关于此的在线链接?
—
SaAtomic
0.0.0.0
条路由具有Genmask128.0.0.0
,它可能不会使其成为默认路由。我不得不说,尽管我丝毫不知道这个面罩意味着什么以及路线是什么:/