24.10. 修复因为多个默认网关导致的意外路由行为
只有一些场景,比如使用多路径 TCP 时,您需要在主机上有多个默认网关。在大多数情况下,您只配置一个默认网关,来避免意外的路由行为或异步路由问题。
要将流量路由到不同的互联网提供商,请使用基于策略的路由,而不是多个默认网关。
先决条件
- 主机使用 NetworkManager 管理网络连接,这是默认设置。
- 主机有多个网络接口。
- 主机配置了多个默认网关。
流程
显示路由表:
对于 IPv4,请输入:
ip -4 route
# ip -4 route default via 192.0.2.1 dev enp1s0 proto dhcp metric 101 default via 198.51.100.1 dev enp7s0 proto dhcp metric 102 ...Copy to Clipboard Copied! Toggle word wrap Toggle overflow 对于 IPv6,请输入:
ip -6 route
# ip -6 route default via 2001:db8:1::1 dev enp1s0 proto static ra 101 pref medium default via 2001:db8:2::1 dev enp7s0 proto static ra 102 pref medium ...Copy to Clipboard Copied! Toggle word wrap Toggle overflow
以
default开头的条目表示默认路由。注意dev旁边显示的这些条目的接口名称。使用以下命令显示您使用在上一步中识别的接口的 NetworkManager 连接:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在这些示例中,名为
Corporate-LAN和Internet-Provider的配置文件设置了默认网关。因为在本地网络中,默认网关通常是距离互联网一跳的主机,所以此流程的剩下部分假设Corporate-LAN中的默认网关是不正确的。配置 NetworkManager 不使用
Corporate-LAN连接作为 IPv4 和 IPv6 连接的默认路由:nmcli connection modify Corporate-LAN ipv4.never-default yes ipv6.never-default yes
# nmcli connection modify Corporate-LAN ipv4.never-default yes ipv6.never-default yesCopy to Clipboard Copied! Toggle word wrap Toggle overflow 请注意,将
ipv4.never-default和ipv6.never-default设为yes,会自动从连接配置文件中删除相应协议默认网关的 IP 地址。激活
Corporate-LAN连接:nmcli connection up Corporate-LAN
# nmcli connection up Corporate-LANCopy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
显示 IPv4 和 IPv6 路由表,并确认每个协议都只有一个默认网关:
对于 IPv4,请输入:
ip -4 route
# ip -4 route default via 198.51.100.1 dev enp7s0 proto dhcp metric 102 ...Copy to Clipboard Copied! Toggle word wrap Toggle overflow 对于 IPv6,请输入:
ip -6 route
# ip -6 route default via 2001:db8:2::1 dev enp7s0 proto ra metric 102 pref medium ...Copy to Clipboard Copied! Toggle word wrap Toggle overflow