Merge pull request #27605 from wxy/20220919-How-To-Find-Default-Gateway-IP-Address-In-Linux-And-Unix-From-Commandline

RP:published/20220919 How To Find Default Gateway IP Address In Linux And Unix From Commandline.md
This commit is contained in:
Xingyu.Wang 2022-10-20 16:22:35 +08:00 committed by GitHub
commit 74d2b037b3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -3,28 +3,26 @@
[#]: author: "sk https://ostechnix.com/author/sk/" [#]: author: "sk https://ostechnix.com/author/sk/"
[#]: collector: "lkxed" [#]: collector: "lkxed"
[#]: translator: "MjSeven" [#]: translator: "MjSeven"
[#]: reviewer: " " [#]: reviewer: "wxy"
[#]: publisher: " " [#]: publisher: "wxy"
[#]: url: " " [#]: url: "https://linux.cn/article-15158-1.html"
在 Linux 和 Unix 中如何从命令行查找默认网关的 IP 地址 在 Linux 中如何从命令行查找默认网关的 IP 地址
====== ======
Linux 下查找网关或路由器 IP 地址的 5 种方法。
**网关**是一个节点或一个路由器,当连接到同一路由器时,它允许两个或多个 IP 地址不同的主机相互通信。如果没有网关,它们将无法相互通信。换句话说,网关充当接入点,将网络数据从本地网络传输到远程网络。在本指南中,我们将看到在 Linux 和 Unix 中从命令行找到默认网关的所有可能方法。 ![](https://img.linux.net.cn/data/attachment/album/202210/20/161605f5ispl5jslbpllss.jpg)
#### 内容 > Linux 下查找网关或路由器 IP 地址的 5 种方法。
1. 在 Linux 中查找默认网关 1.1 使用 ip 命令查找默认网关 1.2 使用 route 命令显示默认网关 IP 地址 1.3 使用 netstat 命令查看网关 IP 地址 1.4 使用 routel 命令打印默认网关或路由器 IP 地址 1.5 从以太网配置文件中查找网关 **网关** 是一个节点或一个路由器,当连接到同一路由器时,它允许两个或多个 IP 地址不同的主机相互通信。如果没有网关,它们将无法相互通信。换句话说,网关充当接入点,将网络数据从本地网络传输到远程网络。在本指南中,我们将看到在 Linux 和 Unix 中从命令行找到默认网关的所有可能方法。
2. 总结
### 在 Linux 中查找默认网关 ### 在 Linux 中查找默认网关
Linux 中有各种各样的命令行工具可用于查看网关 IP 地址。最常用的工具是:**ip**、**ss** 和 **netcat**。我们将通过示例了解如何使用每种工具查看默认网关。 Linux 中有各种各样的命令行工具可用于查看网关 IP 地址。最常用的工具是:`ip`、`ss` 和 `netcat`。我们将通过示例了解如何使用每种工具查看默认网关。
#### 1. 使用 ip 命令查找默认网关 #### 1使用 ip 命令查找默认网关
**ip** 命令用于显示和操作 Linux 中的路由、网络设备、接口和隧道。 `ip` 命令用于显示和操作 Linux 中的路由、网络设备、接口和隧道。
要查找默认网关或路由器 IP 地址,只需运行: 要查找默认网关或路由器 IP 地址,只需运行:
@ -44,7 +42,7 @@ $ ip r
$ ip route show $ ip route show
``` ```
**示例输出:** 示例输出:
``` ```
default via 192.168.1.101 dev eth0 proto static metric 100 default via 192.168.1.101 dev eth0 proto static metric 100
@ -52,34 +50,30 @@ default via 192.168.1.101 dev eth0 proto static metric 100
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.20 metric 100 192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.20 metric 100
``` ```
你从输出中看到了 **"default via 192.168.1.101"** 这一行吗?它就是默认网关。我的默认网关是 **192.168.1.101** 你从输出中看到了 `default via 192.168.1.101` 这一行吗?它就是默认网关。我的默认网关是 `192.168.1.101`
你可以使用 **-4** 参数只**显示 IPv4 网关** 你可以使用 `-4` 参数只`显示 IPv4 网关`
``` ```
$ ip -4 route $ ip -4 route
``` ```
或者,使用 **`-6`** 参数只**显示 IPv6 网关** 或者,使用 `-6` 参数只**显示 IPv6 网关**
``` ```
$ ip -6 route $ ip -6 route
``` ```
如你所见IP 地址和子网详细信息也一并显示了。如果你想只显示默认网关,排除所有其他细节,可以使用 `ip route` 搭配 **`awk`** 命令,如下所示。 如你所见IP 地址和子网详细信息也一并显示了。如果你想只显示默认网关,排除所有其他细节,可以使用 `ip route` 搭配 `awk` 命令,如下所示。
使用 `ip route``grep` 查找默认网关 IP 地址,执行命令:
```to 校正,此条命令原文无,怀疑是作者忘记加了)
$ ip route | grep default
```
使用 `ip route``awk` 命令打印网关地址,执行命令: 使用 `ip route``awk` 命令打印网关地址,执行命令:
```to 校正译注wsl1 上无输出结果,正常 Linux 发行版无问题) ```
$ ip route | awk '/^default/{print $3}' $ ip route | awk '/^default/{print $3}'
``` ```
LCTT 译注wsl1 上无输出结果,正常 Linux 发行版无问题)
或者: 或者:
``` ```
@ -88,7 +82,7 @@ $ ip route show default | awk '{print $3}'
这将只列出网关 IP 这将只列出网关 IP
**示例输出:** 示例输出:
``` ```
192.168.1.101 192.168.1.101
@ -96,18 +90,20 @@ $ ip route show default | awk '{print $3}'
![使用 ip 命令列出默认网关][1] ![使用 ip 命令列出默认网关][1]
你也可以使用 **[grep][2]** 命令配合 `ip route` 对默认网关进行过滤。 你也可以使用 [grep][2] 命令配合 `ip route` 对默认网关进行过滤。
使用 `ip route``grep` 查找默认网关 IP 地址,执行命令:
``` ```
$ ip route | grep default $ ip route | grep default
default via 192.168.1.101 dev eth0 proto static metric 100 default via 192.168.1.101 dev eth0 proto static metric 100
``` ```
在最新的 Linux 发行版中,`ip route` 是查找默认网关 ip 地址的推荐命令。然而,你们中的一些人可能仍然在使用传统的工具,如 `route`**`netstat`**。旧习难改,对吧?下面的部分将介绍如何在 Linux 中使用 `route``netstat` 命令确定网关。 在最新的 Linux 发行版中,`ip route` 是查找默认网关 IP 地址的推荐命令。然而,你们中的一些人可能仍然在使用传统的工具,如 `route``netstat`。旧习难改,对吧?下面的部分将介绍如何在 Linux 中使用 `route``netstat` 命令确定网关。
#### 2. 使用 route 命令显示默认网关 IP 地址 #### 2使用 route 命令显示默认网关 IP 地址
**route** 命令用于在较老的 Linux 发行版中显示和操作路由表,如 RHEL 6、CentOS 6 等。 `route` 命令用于在较老的 Linux 发行版中显示和操作路由表,如 RHEL 6、CentOS 6 等。
如果你正在使用较老的 Linux 发行版,你可以使用 `route` 命令来显示默认网关。 如果你正在使用较老的 Linux 发行版,你可以使用 `route` 命令来显示默认网关。
@ -119,7 +115,7 @@ default via 192.168.1.101 dev eth0 proto static metric 100
$ dnf provides route $ dnf provides route
``` ```
**示例输出:** 示例输出:
``` ```
net-tools-2.0-0.52.20160912git.el8.x86_64 : Basic networking tools net-tools-2.0-0.52.20160912git.el8.x86_64 : Basic networking tools
@ -133,7 +129,7 @@ Matched from:
Filename : /usr/sbin/route Filename : /usr/sbin/route
``` ```
如你所见net-tools 包提供了 `route` 命令。所以,让我们使用以下命令来安装它: 如你所见,`net-tools` 包提供了 `route` 命令。所以,让我们使用以下命令来安装它:
``` ```
$ sudo dnf install net-tools $ sudo dnf install net-tools
@ -145,7 +141,7 @@ $ sudo dnf install net-tools
$ route -n $ route -n
``` ```
**示例输出:** 示例输出:
``` ```
Kernel IP routing table Kernel IP routing table
@ -157,13 +153,13 @@ Destination Gateway Genmask Flags Metric Ref Use Iface
![使用 route 命令显示默认网关 IP 地址][3] ![使用 route 命令显示默认网关 IP 地址][3]
如你所见,网关 IP 地址是 192.168.1.101。你还将在 Flags 下面看到两个字母 **UG**。字母 **U** 代表接口是 **UP****G** 表示网关 如你所见,网关 IP 地址是 192.168.1.101。你还将在 Flags 下面看到两个字母 `UG`。字母 `U` 代表接口是 “Up”在运行`G` 表示 “Gateway”网关
#### 3. 使用 netstat 命令查看网关 IP 地址 #### 3使用 netstat 命令查看网关 IP 地址
**Netstat** 会输出 Linux 网络子系统的信息。使用 netstat 工具,我们可以在 Linux 和 Unix 系统中打印网络连接、路由表、接口统计信息、伪装连接和组播成员关系。 `netstat` 会输出 Linux 网络子系统的信息。使用 `netstat` 工具,我们可以在 Linux 和 Unix 系统中打印网络连接、路由表、接口统计信息、伪装连接和组播成员关系。
Netstat 是 net-tools 包的一部分,所以确保你已经在 Linux 系统中安装了它。使用以下命令在基于 RHEL 的系统中安装它: `netstat``net-tools` 包的一部分,所以确保你已经在 Linux 系统中安装了它。使用以下命令在基于 RHEL 的系统中安装它:
``` ```
$ sudo dnf install net-tools $ sudo dnf install net-tools
@ -175,7 +171,7 @@ $ sudo dnf install net-tools
$ netstat -rn $ netstat -rn
``` ```
**示例输出:** 示例输出:
``` ```
Kernel IP routing table Kernel IP routing table
@ -187,26 +183,26 @@ Destination Gateway Genmask Flags MSS Window irtt Iface
![使用 netstat 命令查看网关 IP 地址][4] ![使用 netstat 命令查看网关 IP 地址][4]
`netstat` 命令与 `route` 命令的输出信息相同。如上输出可知,网关的 IP 地址为 192.168.1.191UG 表示网关连接的网卡NIC是有效的G 表示网关。 `netstat` 命令与 `route` 命令的输出信息相同。如上输出可知,网关的 IP 地址为 `192.168.1.191``UG` 表示网关连接的网卡是有效的,`G` 表示网关。
请注意 `netstat` 也已弃用,建议使用 **ss** 命令代替 netstat 请注意 `netstat` 也已弃用,建议使用 `ss` 命令代替 `netstat`
#### 4. 使用 routel 命令打印默认网关或路由器 IP 地址 #### 4使用 routel 命令打印默认网关或路由器 IP 地址
**routel** 是一个脚本它以一种漂亮格式的输出路由。routel 脚本的输出让一些人认为比 `ip route` 列表更直观。 `routel` 是一个脚本,它以一种漂亮格式的输出路由。`routel` 脚本的输出让一些人认为比 `ip route` 列表更直观。
routel 脚本也是 net-tools 包的一部分。 `routel` 脚本也是 `net-tools` 包的一部分。
打印默认网关或路由器 IP 地址,运行 routel 脚本,不带任何参数,如下所示: 打印默认网关或路由器 IP 地址,不带任何参数运行 `routel` 脚本,如下所示:
``` ```
$ routel $ routel
``` ```
**示例输出:** 示例输出:
``` ```
target gateway source proto scope dev tbl target gateway source proto scope dev tbl
default 192.168.1.101 static eth0 default 192.168.1.101 static eth0
172.17.0.0/ 16 172.17.0.1 kernel linkdocker0 172.17.0.0/ 16 172.17.0.1 kernel linkdocker0
192.168.1.0/ 24 192.168.1.20 kernel link eth0 192.168.1.0/ 24 192.168.1.20 kernel link eth0
@ -241,11 +237,11 @@ $ routel | grep default
default 192.168.1.101 static eth0 default 192.168.1.101 static eth0
``` ```
#### 5. 从以太网配置文件中查找网关 #### 5从以太网配置文件中查找网关
如果你在 **[Linux 或 Unix 中配置了静态 IP 地址][6],你可以通过查看网络配置文件查看默认网关或路由器 IP 地址。 如果你在 [Linux 或 Unix 中配置了静态 IP 地址][6],你可以通过查看网络配置文件查看默认网关或路由器 IP 地址。
在基于 RPM 的系统上,如 Fedora、RHEL、CentOS、AlmaLinux 和 Rocky Linux 等,网络接口卡(简称 **NIC**)配置存储在 **/etc/sysconfig/network-scripts/** 目录下。 在基于 RPM 的系统上,如 Fedora、RHEL、CentOS、AlmaLinux 和 Rocky Linux 等,网络接口卡配置存储在 `/etc/sysconfig/network-scripts/` 目录下。
查找网卡的名称: 查找网卡的名称:
@ -253,7 +249,7 @@ $ routel | grep default
# ip link show # ip link show
``` ```
**示例输出:** 示例输出:
``` ```
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
@ -262,13 +258,13 @@ $ routel | grep default
link/ether d2:85:0c:c7:c1:c3 brd ff:ff:ff:ff:ff:ff link-netnsid 0 link/ether d2:85:0c:c7:c1:c3 brd ff:ff:ff:ff:ff:ff link-netnsid 0
``` ```
网卡名为 **eth0**。所以让我们打开这个 NIC 文件的网卡配置: 网卡名为 `eth0`。所以让我们打开这个网卡文件的网卡配置:
``` ```
# cat /etc/sysconfig/network-scripts/ifcfg-eth0 # cat /etc/sysconfig/network-scripts/ifcfg-eth0
``` ```
**示例输出:** 示例输出:
``` ```
DEVICE=eth0 DEVICE=eth0
@ -283,13 +279,13 @@ DNS1=8.8.8.8
如你所见,网关 IP 为 `192.168.1.101` 如你所见,网关 IP 为 `192.168.1.101`
在 Debian、Ubuntu 及其衍生版中,所有的网络配置文件都存储在 **/etc/network** 目录下。 在 Debian、Ubuntu 及其衍生版中,所有的网络配置文件都存储在 `/etc/network` 目录下。
``` ```
$ cat /etc/network/interfaces $ cat /etc/network/interfaces
``` ```
**示例输出:** 示例输出:
``` ```
auto ens18 auto ens18
@ -313,7 +309,7 @@ via: https://ostechnix.com/find-default-gateway-linux/
作者:[sk][a] 作者:[sk][a]
选题:[lkxed][b] 选题:[lkxed][b]
译者:[MjSeven](https://github.com/MjSeven) 译者:[MjSeven](https://github.com/MjSeven)
校对:[校对者ID](https://github.com/校对者ID) 校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出