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 yes
Copy 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-LAN
Copy 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