
Linux 下查找网关或路由器 IP 地址的 5 种方法。
网关 是一个节点或一个路由器,当连接到同一路由器时,它允许两个或多个 IP 地址不同的主机相互通信。如果没有网关,它们将无法相互通信。换句话说,网关充当接入点,将网络数据从本地网络传输到远程网络。在本指南中,我们将看到在 Linux 和 Unix 中从命令行找到默认网关的所有可能方法。
在 Linux 中查找默认网关
Linux 中有各种各样的命令行工具可用于查看网关 IP 地址。最常用的工具是:ip、ss 和 netcat。我们将通过示例了解如何使用每种工具查看默认网关。
1、使用 ip 命令查找默认网关
ip 命令用于显示和操作 Linux 中的路由、网络设备、接口和隧道。
要查找默认网关或路由器 IP 地址,只需运行:
1 | $ ip route |
或者:
1 | $ ip r |
或者:
1 | $ ip route show |
示例输出:
1 | default via 192.168.1.101 dev eth0 proto static metric 100 |
你从输出中看到了 default via 192.168.1.101 这一行吗?它就是默认网关。我的默认网关是 192.168.1.101。
你可以使用 -4 参数只显示 IPv4 网关:
1 | $ ip -4 route |
或者,使用 -6 参数只显示 IPv6 网关:
1 | $ ip -6 route |
如你所见,IP 地址和子网详细信息也一并显示了。如果你想只显示默认网关,排除所有其他细节,可以使用 ip route 搭配 awk 命令,如下所示。
使用 ip route 和 awk 命令打印网关地址,执行命令:
1 | $ ip route | awk '/^default/{print $3}' |
(LCTT 译注:wsl1 上无输出结果,正常 Linux 发行版无问题)
或者:
1 | $ ip route show default | awk '{print $3}' |
这将只列出网关 IP:
示例输出:
1 | 192.168.1.101 |

你也可以使用 grep 命令配合 ip route 对默认网关进行过滤。
使用 ip route 和 grep 查找默认网关 IP 地址,执行命令:
1 | $ ip route | grep default |
在最新的 Linux 发行版中,ip route 是查找默认网关 IP 地址的推荐命令。然而,你们中的一些人可能仍然在使用传统的工具,如 route 和 netstat。旧习难改,对吧?下面的部分将介绍如何在 Linux 中使用 route 和 netstat 命令确定网关。
2、使用 route 命令显示默认网关 IP 地址
route 命令用于在较老的 Linux 发行版中显示和操作路由表,如 RHEL 6、CentOS 6 等。
如果你正在使用较老的 Linux 发行版,你可以使用 route 命令来显示默认网关。
请注意,在最新的 Linux 发行版中,route 工具已被弃用,ip route 命令取而代之。如果你因为某些原因仍然想使用 route,你需要安装它。
首先,我们需要检查哪个包提供了 route 命令。为此,在基于 RHEL 的系统上运行以下命令:
1 | $ dnf provides route |
示例输出:
1 | net-tools-2.0-0.52.20160912git.el8.x86_64 : Basic networking tools |
如你所见,net-tools 包提供了 route 命令。所以,让我们使用以下命令来安装它:
1 | $ sudo dnf install net-tools |
现在,运行带有 -n 参数的 route 命令来显示 Linux 系统中的网关或路由器 IP 地址:
1 | $ route -n |
示例输出:
1 | Kernel IP routing table |

如你所见,网关 IP 地址是 192.168.1.101。你还将在 Flags 下面看到两个字母 UG。字母 U 代表接口是 “Up”(在运行),G 表示 “Gateway”(网关)。
3、使用 netstat 命令查看网关 IP 地址
netstat 会输出 Linux 网络子系统的信息。使用 netstat 工具,我们可以在 Linux 和 Unix 系统中打印网络连接、路由表、接口统计信息、伪装连接和组播成员关系。
netstat 是 net-tools 包的一部分,所以确保你已经在 Linux 系统中安装了它。使用以下命令在基于 RHEL 的系统中安装它:
1 | $ sudo dnf install net-tools |
使用 netstat 命令打印默认网关 IP 地址:
1 | $ netstat -rn |
示例输出:
1 | Kernel IP routing table |

netstat 命令与 route 命令的输出信息相同。如上输出可知,网关的 IP 地址为 192.168.1.191,UG 表示网关连接的网卡是有效的,G 表示网关。
请注意 netstat 也已弃用,建议使用 ss 命令代替 netstat。
4、使用 routel 命令打印默认网关或路由器 IP 地址
routel 是一个脚本,它以一种漂亮格式的输出路由。routel 脚本的输出让一些人认为比 ip route 列表更直观。
routel 脚本也是 net-tools 包的一部分。
打印默认网关或路由器 IP 地址,不带任何参数运行 routel 脚本,如下所示:
1 | $ routel |
示例输出:
1 | target gateway source proto scope dev tbl |

只打印默认网关,和 grep 命令配合,如下所示:
1 | $ routel | grep default |
5、从以太网配置文件中查找网关
如果你在 Linux 或 Unix 中配置了静态 IP 地址,你可以通过查看网络配置文件查看默认网关或路由器 IP 地址。
在基于 RPM 的系统上,如 Fedora、RHEL、CentOS、AlmaLinux 和 Rocky Linux 等,网络接口卡配置存储在 /etc/sysconfig/network-scripts/ 目录下。
查找网卡的名称:
1 | # ip link show |
示例输出:
1 | 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000 |
网卡名为 eth0。所以让我们打开这个网卡文件的网卡配置:
1 | # cat /etc/sysconfig/network-scripts/ifcfg-eth0 |
示例输出:
1 | DEVICE=eth0 |
如你所见,网关 IP 为 192.168.1.101。
在 Debian、Ubuntu 及其衍生版中,所有的网络配置文件都存储在 /etc/network 目录下。
1 | $ cat /etc/network/interfaces |
示例输出:
1 | auto ens18 |
请注意,此方法仅在手动配置 IP 地址时有效。对于启用 DHCP 的网络,需要按照前面的 4 种方法操作。
总结
在本指南中,我们列出了在 Linux 和 Unix 系统中找到默认网关的 5 种不同方法,我们还在每种方法中包含了显示网关/路由器 IP 地址的示例命令。希望它对你有所帮助。
via: https://ostechnix.com/find-default-gateway-linux/