Linux下查找网段或路由器IP地址的5种技巧。

网段是一个节点或一个路由器,当联接到同一路由器时,它容许两个或多个IP地址不同的主机相互通信。若果没有网段,它们将难以相互通信。换句话说,网段充当接入点,将网路数据从本地网路传输到远程网路。在本手册中,我们将看见在Linux和Unix中从命令行找到默认网段的所有可能方式。

在Linux中查找默认网段

Linux中有各类各样的命令行工具可用于查看网段IP地址。最常用的工具是:ip、ss和netcat。我们将通过示例了解怎样使用每种工具查看默认网段。

1、使用ip命令查找默认网段

ip命令用于显示和操作Linux中的路由、网络设备、接口和隧洞。

要查找默认网段或路由器IP地址,只需运行:

$ ip route

或则:

$ ip r

或则:

$ ip route show

示例输出:

default via 192.168.1.101 dev eth0 proto static metric 100 
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1 linkdown 
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.20 metric 100

你从输出中见到了defaultvia192.168.1.101这一行吗?它就是默认网段。我的默认网段是192.168.1.101。

你可以使用-4参数只显示IPv4网段:

$ ip -4 route

或则,使用-6参数只显示IPv6网段:

$ ip -6 route

如你所见linux 命令查询,IP地址和子网详尽信息也一并显示了。假如你想只显示默认网段,排除所有其他细节,可以使用iproute搭配awk命令,如下所示。

使用iproute和awk命令复印网段地址,执行命令:

$ ip route | awk '/^default/{print $3}'

(LCTT评注:wsl1上无输出结果,正常Linux发行版无问题)

或则:

$ ip route show default | awk '{print $3}'

这将只列举网段IP:

示例输出:

192.168.1.101

你也可以使用grep命令配合iproute对默认网段进行过滤。

使用iproute和grep查找默认网段IP地址linux 命令查询,执行命令:

查询命令行进程的命令_linux 命令查询_查询命令文件的扩展名为

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

在最新的Linux发行版中,iproute是查找默认网段IP地址的推荐命令。但是,大家中的一些人可能一直在使用传统的工具,如route和netstat。旧习难改,对吧?下边的部份将介绍怎样在Linux中使用route和netstat命令确定网段。

2、使用route命令显示默认网段IP地址

route命令用于在较老的Linux发行版中显示和操作路由表,如RHEL6、CentOS6等。

假如你正在使用较老的Linux发行版,你可以使用route命令来显示默认网段。

请注意,在最新的Linux发行版中,route工具已被弃用,iproute命令取而代之。假如你由于个别缘由一直想使用route,你须要安装它。

首先,我们须要检测那个包提供了route命令。因此,在基于RHEL的系统上运行以下命令:

$ dnf provides route

示例输出:

net-tools-2.0-0.52.20160912git.el8.x86_64 : Basic networking tools
Repo        : @System
Matched from:
Filename    : /usr/sbin/route
net-tools-2.0-0.52.20160912git.el8.x86_64 : Basic networking tools
Repo        : baseos
Matched from:
Filename    : /usr/sbin/route

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

$ sudo dnf install net-tools

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

$ route -n

示例输出:

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

如你所见,网段IP地址是192.168.1.101。你还将在Flags下边听到两个字母UG。字母U代表插口是“Up”(在运行),G表示“Gateway”(网段)。

3、使用netstat命令查看网段IP地址

netstat会输出Linux网路子系统的信息。使用netstat工具,我们可以在Linux和Unix系统中复印网路联接、路由表、接口统计信息、伪装联接和组播成员关系。

netstat是net-tools包的一部份,所以确保你早已在Linux系统中安装了它。使用以下命令在基于RHEL的系统中安装它:

$ sudo dnf install net-tools

使用netstat命令复印默认网段IP地址:

$ netstat -rn

示例输出:

Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
0.0.0.0         192.168.1.101   0.0.0.0         UG        0 0          0 eth0
172.17.0.0      0.0.0.0         255.255.0.0     U         0 0          0 docker0
192.168.1.0     0.0.0.0         255.255.255.0   U         0 0          0 eth0

netstat命令与route命令的输出信息相同。如上输出可知,网段的IP地址为192.168.1.191,UG表示网段联接的网卡是有效的,G表示网段。

请注意netstat也已弃用美国linux主机,建议使用ss命令取代netstat。

4、使用routel命令复印默认网段或路由器IP地址

查询命令行进程的命令_查询命令文件的扩展名为_linux 命令查询

routel是一个脚本,它以一种漂亮格式的输出路由。routel脚本的输出让一些人觉得比iproute列表更直观。

routel脚本也是net-tools包的一部份。

复印默认网段或路由器IP地址,不带任何参数运行routel脚本linux 安装,如下所示:

$ routel

示例输出:

         target            gateway          source    proto    scope    dev tbl
        default      192.168.1.101                   static            eth0 
    172.17.0.0/ 16                      172.17.0.1   kernel     linkdocker0 
   192.168.1.0/ 24                    192.168.1.20   kernel     link   eth0 
     127.0.0.0/ 8            local       127.0.0.1   kernel     host     lo local
      127.0.0.1              local       127.0.0.1   kernel     host     lo local
127.255.255.255          broadcast       127.0.0.1   kernel     link     lo local
     172.17.0.1              local      172.17.0.1   kernel     hostdocker0 local
 172.17.255.255          broadcast      172.17.0.1   kernel     linkdocker0 local
   192.168.1.20              local    192.168.1.20   kernel     host   eth0 local
  192.168.1.255          broadcast    192.168.1.20   kernel     link   eth0 local
            ::1                                      kernel              lo 
            ::/ 96     unreachable                                       lo 
::ffff:0.0.0.0/ 96     unreachable                                       lo 
    2002:a00::/ 24     unreachable                                       lo 
   2002:7f00::/ 24     unreachable                                       lo 
   2002:a9fe::/ 32     unreachable                                       lo 
   2002:ac10::/ 28     unreachable                                       lo 
   2002:c0a8::/ 32     unreachable                                       lo 
   2002:e000::/ 19     unreachable                                       lo 
   3ffe:ffff::/ 32     unreachable                                       lo 
        fe80::/ 64                                   kernel            eth0 
            ::1              local                   kernel              lo local
fe80::d085:cff:fec7:c1c3              local                   kernel            eth0 local

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

$ routel | grep default
        default      192.168.1.101                   static            eth0

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

假如你在Linux或Unix中配置了静态IP地址,你可以通过查看网路配置文件查看默认网段或路由器IP地址。

在基于RPM的系统上,如Fedora、RHEL、CentOS、AlmaLinux和RockyLinux等,网路插口卡配置储存在/etc/sysconfig/network-scripts/目录下。

查找网卡的名称:

# ip link show

示例输出:

1: lo:  mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0@if5:  mtu 1500 qdisc noqueue state UP mode DEFAULT group default qlen 1000
    link/ether d2:85:0c:c7:c1:c3 brd ff:ff:ff:ff:ff:ff link-netnsid 0

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

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

示例输出:

DEVICE=eth0
ONBOOT=yes
UUID=eb6b6a7c-37f5-11ed-a59a-a0e70bdf3dfb
BOOTPROTO=none
IPADDR=192.168.1.20
NETMASK=255.255.255.0
GATEWAY=192.168.1.101
DNS1=8.8.8.8

如你所见,网段IP为192.168.1.101。

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

$ cat /etc/network/interfaces

示例输出:

auto ens18
iface ens18 inet static
        address 192.168.1.150
        netmask 255.255.255.0
        gateway 192.168.1.101
        dns-nameservers 8.8.8.8

请注意,此方式仅在自动配置IP地址时有效。对于启用DHCP的网路,须要依照上面的4种方式操作。

总结

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

via:

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

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

Author

这篇优质的内容由TA贡献而来

刘遄

《Linux就该这么学》书籍作者,RHCA认证架构师,教育学(计算机专业硕士)。

发表回复