我有一个基于 RockyLinux 8 的虚拟机,它可以正确获取其网络上设置的静态路由(设置了 host_routes 的 OpenStack 子网)。我不明白怎么办。
以下是路线:
[cloud-user@login-0 ~]$ ip r
default via 10.29.107.254 dev ens5 proto dhcp src 10.29.107.20 metric 100
10.1.112.0/24 via 10.29.107.254 dev ens5 proto dhcp src 10.29.107.20 metric 100
10.29.0.0/16 via 10.29.107.254 dev ens5 proto dhcp src 10.29.107.20 metric 100
10.29.107.0/24 dev ens5 proto kernel scope link src 10.29.107.20 metric 100
169.254.169.254 via 10.29.107.6 dev ens5 proto dhcp src 10.29.107.20 metric 100
这是nmcli
活动连接的一些输出:
[root@login-0 cloud-user]# nmcli c show "System ens5" | grep -i route
ipv4.routes: --
ipv4.route-metric: -1
ipv4.route-table: 0 (unspec)
ipv4.ignore-auto-routes: no
ipv6.routes: --
ipv6.route-metric: -1
ipv6.route-table: 0 (unspec)
ipv6.ignore-auto-routes: no
IP4.ROUTE[1]: dst = 10.29.107.0/24, nh = 0.0.0.0, mt = 100
IP4.ROUTE[2]: dst = 169.254.169.254/32, nh = 10.29.107.6, mt = 100
IP4.ROUTE[3]: dst = 10.1.112.0/24, nh = 10.29.107.254, mt = 100
IP4.ROUTE[4]: dst = 10.29.0.0/16, nh = 10.29.107.254, mt = 100
IP4.ROUTE[5]: dst = 0.0.0.0/0, nh = 10.29.107.254, mt = 100
DHCP4.OPTION[13]: requested_ms_classless_static_routes = 1
DHCP4.OPTION[17]: requested_rfc3442_classless_static_routes = 1
DHCP4.OPTION[19]: requested_routers = 1
DHCP4.OPTION[20]: requested_static_routes = 1
DHCP4.OPTION[24]: rfc3442_classless_static_routes = 169.254.169.254/32 10.29.107.6 10.1.112.0/24 10.29.107.254 10.29.0.0/16 10.29.107.254 0.0.0.0/0 10.29.107.254
DHCP4.OPTION[25]: routers = 10.29.107.254
IP6.ROUTE[1]: dst = fe80::/64, nh = ::, mt = 256
RedHat NetworkManager 文档显示设置路线via nmcli connection modify $connection_name ipv4.routes
,但上面的条目是空的。那么这里是如何选择路线的呢?
尽管它有效,我还是要问的原因是它可以帮助我调试没有获取静态路由的类似主机。
答案1
(查看 的完整输出会很有帮助nmcli -p -o con show -id "System ens5"
)。
答案在这里:
DHCP4.OPTION[17]: requested_rfc3442_classless_static_routes = 1
DHCP4.OPTION[24]: rfc3442_classless_static_routes = 169.254.169.254/32 10.29.107.6 10.1.112.0/24 10.29.107.254 10.29.0.0/16 10.29.107.254 0.0.0.0/0 10.29.107.254
nmcli
动态设置时以大写形式输出属性,例如,与静态定义为连接上的设置相反。
DHCP4.OPTION
是一个数组,显示在 NetworkManager 中请求DHCPREQUEST
并在 DHCP 服务器的响应中收到的 DHCP 选项。
在本例中,第一行告诉我们发出了一个请求无类静态路由。
第二行告诉我们 DHCP 服务器响应了这些路由。
因此,NetworkMangager 将这些路由及时添加到路由表中。它落在proto dhcp
他们身上作为提示它们来自 DHCP。这只是建议性的,但通常这是一个相当不错的开始寻找的地方。