Redian新闻
>
在 Linux 中如何从命令行查找默认网关的 IP 地址 | Linux 中国

在 Linux 中如何从命令行查找默认网关的 IP 地址 | Linux 中国

科技
 
导读:Linux 下查找网关或路由器 IP 地址的 5 种方法。                           
本文字数:7451,阅读时长大约:8分钟

Linux 下查找网关或路由器 IP 地址的 5 种方法。

网关 是一个节点或一个路由器,当连接到同一路由器时,它允许两个或多个 IP 地址不同的主机相互通信。如果没有网关,它们将无法相互通信。换句话说,网关充当接入点,将网络数据从本地网络传输到远程网络。在本指南中,我们将看到在 Linux 和 Unix 中从命令行找到默认网关的所有可能方法。

在 Linux 中查找默认网关

Linux 中有各种各样的命令行工具可用于查看网关 IP 地址。最常用的工具是:ipss 和 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
  2. 172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1 linkdown
  3. 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

你可以使用 -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

使用 ip 命令列出默认网关

你也可以使用 grep🔗 ostechnix.com 命令配合 ip route 对默认网关进行过滤。

使用 ip route 和 grep 查找默认网关 IP 地址,执行命令:

  1. $ ip route | grep default
  2. default via 192.168.1.101 dev eth0 proto static metric 100

在最新的 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
  2. Repo : @System
  3. Matched from:
  4. Filename : /usr/sbin/route
  5. net-tools-2.0-0.52.20160912git.el8.x86_64 : Basic networking tools
  6. Repo : baseos
  7. Matched from:
  8. Filename : /usr/sbin/route

如你所见,net-tools 包提供了 route 命令。所以,让我们使用以下命令来安装它:

  1. $ sudo dnf install net-tools

现在,运行带有 -n 参数的 route 命令来显示 Linux 系统中的网关或路由器 IP 地址:

  1. $ route -n

示例输出:

  1. Kernel IP routing table
  2. Destination Gateway Genmask Flags Metric Ref Use Iface
  3. 0.0.0.0 192.168.1.101 0.0.0.0 UG 100 0 0 eth0
  4. 172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0
  5. 192.168.1.0 0.0.0.0 255.255.255.0 U 100 0 0 eth0

使用 route 命令显示默认网关 IP 地址

如你所见,网关 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
  2. Destination Gateway Genmask Flags MSS Window irtt Iface
  3. 0.0.0.0 192.168.1.101 0.0.0.0 UG 0 0 0 eth0
  4. 172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0
  5. 192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0

使用 netstat 命令查看网关 IP 地址

netstat 命令与 route 命令的输出信息相同。如上输出可知,网关的 IP 地址为 192.168.1.191UG 表示网关连接的网卡是有效的,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
  2. default 192.168.1.101 static eth0
  3. 172.17.0.0/ 16 172.17.0.1 kernel linkdocker0
  4. 192.168.1.0/ 24 192.168.1.20 kernel link eth0
  5. 127.0.0.0/ 8 local 127.0.0.1 kernel host lo local
  6. 127.0.0.1 local 127.0.0.1 kernel host lo local
  7. 127.255.255.255 broadcast 127.0.0.1 kernel link lo local
  8. 172.17.0.1 local 172.17.0.1 kernel hostdocker0 local
  9. 172.17.255.255 broadcast 172.17.0.1 kernel linkdocker0 local
  10. 192.168.1.20 local 192.168.1.20 kernel host eth0 local
  11. 192.168.1.255 broadcast 192.168.1.20 kernel link eth0 local
  12. ::1 kernel lo
  13. ::/ 96 unreachable lo
  14. ::ffff:0.0.0.0/ 96 unreachable lo
  15. 2002:a00::/ 24 unreachable lo
  16. 2002:7f00::/ 24 unreachable lo
  17. 2002:a9fe::/ 32 unreachable lo
  18. 2002:ac10::/ 28 unreachable lo
  19. 2002:c0a8::/ 32 unreachable lo
  20. 2002:e000::/ 19 unreachable lo
  21. 3ffe:ffff::/ 32 unreachable lo
  22. fe80::/ 64 kernel eth0
  23. ::1 local kernel lo local
  24. fe80::d085:cff:fec7:c1c3 local kernel eth0 local

使用 routel 命令打印默认网关或路由器 IP 地址

只打印默认网关,和 grep 命令配合,如下所示:

  1. $ routel | grep default
  2. default 192.168.1.101 static eth0

5、从以太网配置文件中查找网关

如果你在 Linux 或 Unix 中配置了静态 IP 地址🔗 ostechnix.com,你可以通过查看网络配置文件查看默认网关或路由器 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
  2. link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
  3. 2: eth0@if5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default qlen 1000
  4. link/ether d2:85:0c:c7:c1:c3 brd ff:ff:ff:ff:ff:ff link-netnsid 0

网卡名为 eth0。所以让我们打开这个网卡文件的网卡配置:

  1. # cat /etc/sysconfig/network-scripts/ifcfg-eth0

示例输出:

  1. DEVICE=eth0
  2. ONBOOT=yes
  3. UUID=eb6b6a7c-37f5-11ed-a59a-a0e70bdf3dfb
  4. BOOTPROTO=none
  5. IPADDR=192.168.1.20
  6. NETMASK=255.255.255.0
  7. GATEWAY=192.168.1.101
  8. DNS1=8.8.8.8

如你所见,网关 IP 为 192.168.1.101

在 Debian、Ubuntu 及其衍生版中,所有的网络配置文件都存储在 /etc/network 目录下。

  1. $ cat /etc/network/interfaces

示例输出:

  1. auto ens18
  2. iface ens18 inet static
  3. address 192.168.1.150
  4. netmask 255.255.255.0
  5. gateway 192.168.1.101
  6. dns-nameservers 8.8.8.8

请注意,此方法仅在手动配置 IP 地址时有效。对于启用 DHCP 的网络,需要按照前面的 4 种方法操作。

总结

在本指南中,我们列出了在 Linux 和 Unix 系统中找到默认网关的 5 种不同方法,我们还在每种方法中包含了显示网关/路由器 IP 地址的示例命令。希望它对你有所帮助。


via: https://ostechnix.com/find-default-gateway-linux/

作者:sk 选题:lkxed 译者:MjSeven 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出


LCTT 译者 :MjSeven
💎
翻译: 172.0 篇
|
贡献: 1720 天
2018-01-30
2022-10-16
https://linux.cn/lctt/MjSeven
欢迎遵照 CC-BY-SA 协议规定转载,
如需转载,请在文章下留言 “转载:公众号名称”,
我们将为您添加白名单,授权“转载文章时可以修改”。

微信扫码关注该文公众号作者

戳这里提交新闻线索和高质量文章给我们。
相关阅读
如何在 Linux 中更改 GRUB 主题 | Linux 中国平均查找性能提高了 715 倍,Linux 6.2 合并 华为 贡献的代码12 个对新手最重要的 Linux 命令 | Linux 中国关于 Linux 和 Git 的创造者 Linus Torvalds 的 20 件趣事 | Linux 中国我如何使用现场 USB 设备恢复我的 Linux 系统 | Linux 中国我如何从 Docker Desktop 切换到 Colima | Linux 中国如何从 Ubuntu 21.10 及以后版本中删除 Firefox Snap | Linux 中国泛舟,从多瑙河到莱茵河(5)CMD 再见~ 微软 Windows11 启用 Terminal 为默认命令行工具Linux 中的 su 和 sudo 命令有什么区别? | Linux 中国弹性并行查询深度剖析如何在最小安装的 CentOS、RHEL、Rocky Linux 中设置互联网 | Linux 中国如何在 Ubuntu Linux 上更新谷歌 Chrome | Linux 中国如何在 Linux 中使用媒体传输协议访问安卓设备的内部存储和 SD 卡 | Linux 中国你应该知道的 22 个基本的 Linux 网络命令 | Linux 中国10 大可以摧毁你的 Linux 的命令 | Linux 中国【當你老了病了,怎麽辦】補遺如何在 Arch Linux 中启用 Snap 支持 | Linux 中国图解如何升级到 Linux Mint 21 | Linux 中国通过 SSH 在远程 Linux 系统上执行命令 | Linux 中国如何从 Ubuntu 22.04 LTS 升级到 22.10 | Linux 中国命令行终端下载指令大全 ( Win + Linux )美妙的四手联弹 - 舒伯特: Fantasie in F minor微软开源的命令行神器成 Win 11 默认工具,网友:是时候彻底弃用 cmd 了!将你的 Python 脚本转换为命令行程序 | Linux 中国使用这个多功能的 Linux 命令转换音频文件 | Linux 中国如何在 sudo 运行的命令中防止使用参数 | Linux 中国微软开源的命令行神器成 Windows 11 默认工具,网友:是时候彻底弃用 cmd 了!一文掌握所有命令行,包括73个“冷门但有用”的技巧|GitHub 11万标星之作你碰到过骗子吗?“作弊”:只需要知道这一个 Linux 命令就够了 | Linux 中国IP地址翻译成实际的物理地址Linux inxi 命令的 3 种使用方法 | Linux 中国她是上帝眷顾的人Rosalía 登意大利版《VOGUE》封面!
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。