历史上,我最常用的0.0.0.0/0
是“匹配每个 IP 地址”。最近,我看到了一个0.0.0.0/1
子网过滤器。
0.0.0.0/0
和有什么区别?0.0.0.0/1
有什么实际用途0.0.0.0/1
?
答案1
匹配0.0.0.0/0
每个 IP 地址,而0.0.0.0/1
仅匹配其中的一半 ( 0.0.0.0-127.255.255.255
) 并且需要128.0.0.0/1
与其配对才能匹配其余部分 ( 128.0.0.0-255.255.255.255
)。
在基本路由中,包含 IP 地址的最小可用子网优先.这条规则来自RFC 4632, 5.1。通常情况下,会有重叠网络,例如,192.168.1.0/24
是 的一部分192.168.0.0/16
,而 就像任何 IP 地址一样, 也是 的一部分0.0.0.0/0
。
因此,通过将 拆分0.0.0.0/0
成更小的块,可以限制接口优先于具有默认路由的任何其他接口0.0.0.0/0
,而无需使用度量值。这是不希望数据绕过隧道的 VPN 的常用技术。同样的逻辑也是您/24
在 VPN 开启时仍可以使用本地子网(例如)资源的原因——如果没有其他方法强制执行,则所有内容都会通过隧道传输。
同样地,整个 IPv4 地址空间可以划分为更小的子网,例如分为四个块:
0.0.0.0/2
(0.0.0.0-63.255.255.255
)64.0.0.0/2
(64.0.0.0-127.255.255.255
)128.0.0.0/2
(128.0.0.0-191.255.255.255
)192.0.0.0/2
(192.0.0.0-255.255.255.255
)
或者八个,带有、 、0.0.0.0/3
、32.0.0.0/3
、、&等,等等。64.0.0.0/3
96.0.0.0/3
128.0.0.0/3
160.0.0.0/3
192.0.0.0/3
224.0.0.0/3
答案2
0.0.0.0/0 和 0.0.0.0/1 之间有什么区别
0.0.0.0/0 匹配所有 IPv4 地址。
0.0.0.0/1 匹配从 0.0.0.0 到 127.255.255.255 的 IP 范围
IP 路由使用“最长前缀匹配”规则,因此如果路由表中同时存在 0.0.0.0/0 和 0.0.0.0/1 的路由,并且都与目的地匹配,那么将优先使用 0.0.0.0/1 的路由。
0.0.0.0/1 有什么实际用途?
Openvpn 使用它作为一种技巧来覆盖默认路由,而无需修改或删除现有路由。如果其他 VPN 软件也这样做,我也不会感到惊讶,但我还没有看到过。
在 VPN 连接时删除现有的默认路由,在 VPN 断开连接时重新添加,可能会与其他网络控制或管理软件产生竞争条件。如果 VPN 客户端崩溃,也可能会导致系统无法访问网络。
可以使用较低的度量来覆盖路由,但是,如果现有路由已经具有最低可能的度量,则此方法不起作用。
因此,openvpn 的“redirect-gateway”功能有一个名为“def1”的选项。启用此选项后,它将为 0.0.0.0/1 和 128.0.0.0/1 创建路由,而不是为 0.0.0.0/0 创建单个路由。由于“最长前缀匹配”规则,这些路由将优先于 0.0.0.0/0 的现有路由,因此无需删除现有的默认路由。
答案3
字面意思:这只是用 CIDR 符号表示的两个不同网络。
实际用途0.0.0.0/1
:按第一位划分 IPv4 空间目前不会产生特别有意义的子网,除了历史教训。
它恰好是可能的最小分割。因此,拼写出两个半部分是表达“所有 IPv4”的最短方法,其中0/0
不是有效输入。脚本不允许我配置未设计的网络拓扑,因此我使用了0/1
一个解决方法(在路由上下文、前缀长度决定偏好)。
除了拼写错误,这是我唯一一次遇到这种情况。