“0.0.0.0/1”和“默认”之间有什么区别?

“0.0.0.0/1”和“默认”之间有什么区别?

工作人员,请看下面的路由表。 dev ens160 接受来自 172.17.4.x 的传入 ping 请求,并通过 dev tun0 应答。

  • “0.0.0.0/1”和“默认”之间有什么区别?
  • 需要进行哪些更改才能通过 ens160 应答来自 172.17.4.x 的流量?

主机:172.31.4.225
Lan:172.31.4.0/24
GW:172.31.4.1
tun0:访问互联网的隧道 (openvpn)
ens160:虚拟机网络接口
远程客户端:172.17.4.x

# ip route
0.0.0.0/1 via 10.z.0.1 dev tun0
default via 172.31.4.1 dev ens160 proto dhcp src 172.31.4.225 metric 100
10.z.0.0/16 dev tun0 proto kernel scope link src 10.z.0.6
128.0.0.0/1 via 10.23.0.1 dev tun0
172.16.0.0/16 via 172.31.4.1 dev ens160
172.31.4.0/24 dev ens160 proto kernel scope link src 172.31.4.225
172.31.4.1 dev ens160 proto dhcp scope link src 172.31.4.225 metric 100
u.w.x.y via 172.31.4.1 dev ens160
192.168.19.0/24 dev br-<snip> proto kernel scope link src 192.168.19.1
192.168.68.0/24 dev docker0 proto kernel scope link src 192.168.68.1 linkdown

答案1

0.0.0.0/1 via 10.z.0.1 dev tun0
128.0.0.0/1 via 10.z.0.1 dev tun0

这两条规则一起涵盖整个0.0.0.0/0(第一个 IP 地址从 0.0.0.0 到 127.255.255.255,第二个 IP 地址从 128.0.0.0 到 255.255.255.255),并且优先于:

default via 172.31.4.1 dev ens160 proto dhcp src 172.31.4.225 metric 100

规则(default存在0.0.0.0/0),因为它们的范围较窄。

openvpn这些至少在您使用时添加--redirect-gateway def1

从手册页:

定义1 使用此标志可通过使用 0.0.0.0/1 和 128.0.0.0/1 而不是 0.0.0.0/0 来覆盖默认网关。这样做的好处是可以覆盖但不会清除原始默认网关。

答案2

需要注意的重要一点是/1第一个少量ip 地址中必须是0.第一位设置为 的 IP 地址1将不匹配。如果没有其他规则匹配,默认规则将匹配所有 IP 地址。实际上,这意味着0.0.0.0/1只会将 IP 地址匹配0.0.0.0127.x.x.x...实际上它只匹配0.0.0.0到,126.x.x.x因为127.x.x.x是本地环回并且从不路由。默认规则有效,0.0.0.0/0因此它匹配所有 IP 地址。

注意路由表也有规则128.0.0.0/1。所有 IPv4 地址都将匹配其中之一0.0.0.0/1128.0.0.0/1因此永远不会使用默认规则。

需要进行哪些更改才能通过 ens160 应答来自 172.17.4.x 的流量?

添加另一个规则以172.17.4.0/24路由ens160172.31.4.1。这应该可以接受,因为该路由表已经认为172.31.4.1是可接受的默认网关。我们得到这个结果是因为前 3 个字节(3 乘以 8 位)必须与( )/24中的前三个字节匹配,而我们不关心第 4 个字节。172.31.4.0172 31 4x

相关内容