Linux:如何查找默认网关
要在 Linux 中检查默认网关,请运行 ip -4 route show default。输出中 via 后的地址是该默认路由的下一跳网关,IPv6 可以通过 ip -6 route show default 单独检查。
什么是默认网关?
默认网关是在没有更具体的匹配目标的路由时,用于转发数据包的下一跳。在家庭或小型网络中,它通常是路由器地址,但在服务器、虚拟机或VPN环境中,它可以是其他设备或虚拟接口。网关地址和计算机的IP地址是不同的值。
以下命令用于查询路由信息,并不会更改网络设置。通常可以在没有管理员权限的情况下运行。示例地址和接口名称仅作说明,实际环境中的结果可能有所不同。
检查IPv4默认路由
在终端中运行以下命令。
ip -4 route show default
以下是可能输出的示例。
default via 192.0.2.1 dev enp1s0 proto dhcp metric 100
default:表示默认路由。via 192.0.2.1:转发数据包的下一跳地址。dev enp1s0:用于此路由的网络接口。proto dhcp:在此示例中,它表示通过 DHCP 获得的路由。其他值如手动设置也是可能的。metric 100:用于路由优先级的值。当比较条件相同的路由时,通常较小的值优先。
可能存在多个默认路由。在使用 VPN 或多个接口的情况下,你还应检查流量的目标以及策略路由。你可以在 ip-route 手册 中查看路由和指标的含义。
检查 IPv6 默认路由
IPv6 路由与 IPv4 路由是分开查看的。
ip -6 route show default
例如,可能显示如下。
default via fe80::1 dev enp1s0 proto ra metric 100
在本例中,fe80::1 是一个链路本地地址,因此应结合表示所用接口的 dev enp1s0 一起理解。如果未使用 IPv6 或未设置默认路由,则可能没有输出。IPv4 和 IPv6 的网关不一定相同或必须同时存在。
检查用于特定目的地的路由
只是显示默认路由并不意味着所有目的地都使用该路由。如果存在更具体的路由或策略路由,选择的路由可能会不同。以下命令用于检查内核为示例目的地选择的路由。
ip route get 198.51.100.25
如果结果中出现 via,表示下一跳,dev 表示要使用的接口。直接连接的目的地可能没有 via。此检查实际上不发送数据包,因此并不是确认连接成功的测试。请将目的地地址替换为您要检查的实际地址。
在使用策略路由的环境中,ip route show 默认显示 main 表,而 ip route get 则使用适用规则执行路由查找。使用以下命令查看规则和整个表,并在必要时根据实际流量状况(例如源地址)执行查找。
ip rule show
ip route show table all
当没有输出或无法访问时
- 没有默认路由: 检查接口连接状态和地址,通过
ip addr show验证,并核实 DHCP 或网络管理工具的设置。在仅需要特定路由的系统中,未配置默认路由可能是有意为之。 - 路由存在但通信失败: 仅因为网关地址显示,并不能保证互联网或目标可达。请依次检查接口、防火墙、下一跳和DNS。
- 存在多个默认路由: 请同时检查接口、度量值、策略规则和
ip route get结果。VPN或容器可能使用独立的路由。
向网关发送ping可以帮助检查可达性,但在响应被阻止的网络中,失败并不一定意味着连接问题。在更改远程服务器的路由设置之前,请确认断开连接的可能性及恢复路径。
使用现有的route命令进行检查
你也可以在旧系统上使用route -n。检查输出中Destination为0.0.0.0的行的Gateway和Iface。-n显示的是数字地址而不是名称。
route -n
如果未安装route,请尝试在添加新软件包之前使用已提供的ip route。网络工具和发行版的输出可能因版本而异。




