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