几年前,ifconfig 是 Linux 中最受欢迎的查询本机 IP 地址的方法。但是现如今 ifconfig 命令已经被启用了。在某些 Linux 发行版上已经不用了:
那么,除此以外还有什么别的方式来查询 IP 地址呢?今天我们就来了解一下这个问题。
在 Linux 命令行中查找 IP 地址
现在,可以使用 ip 命令来查询 IP 地址。ip 命令是通用的,可以用于网络相关的其他一些事情。
不过,要显示 IP 地址,可以使用 ip addr,ip a 或者 ip address,如下所示命令:
输出如下:
1: lo: mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: wlp58s0: mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 9c:b6:d0:d0:fc:b5 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.20/24 brd 192.168.1.255 scope global dynamic noprefixroute wlp58s0
valid_lft 5962sec preferred_lft 5962sec
inet6 fe80::bf14:21e3:4223:e5e4/64 scope link noprefixroute
valid_lft forever preferred_lft forever
在上面的输出中,你可以忽略第一个名为lo(loopback)的输出,除此以外,可以看到 IP 地址显示为192.168.1.20。它后面的24是子网掩码。
如上所示,可以使用 ip 命令获取主机的 IP 地址。除此以外,还可以通过 bash 脚本获取 IP 地址。
获取 IP 地址的其他方法
除了使用 ip 命令以外,还有其他的几个方法来获取 IP 地址。
使用 hostname 命令查看IP地址
hostname 命令通常用于显示系统的主机名,也可以用于显示主机的IP地址:
上述命令会显示主机的 IP 地址:
$ hostname -I192.168.0.106
使用 nmcli 工具显示 IP 地址
大多数 Linux 发行版都有一个 Network Manager 的工具,该工具有一个名为 nmcli 的命令行界面,可以使用此 nmcli 工具来查看网络配置。比如可以使用如下命令查看 IP 地址:
那么,ifconfig 呢?
实际上,我们仍然可以使用 ifconfig 命令。如果系统中不存在这个命令,我们可以手动安装,它存在于网络工具包中。
在基于 Ubuntu 的 Linux 中,可以使用如下命令安装网络工具:
安装完成后,就可以使用 ifconfig 命令来查询 IP 地址了:
输出如下:
lo: flags=73 mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10
loop txqueuelen 1000 (Local Loopback)
RX packets 14855 bytes 3027297 (3.0 MB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 14855 bytes 3027297 (3.0 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
wlp58s0: flags=4163 mtu 1500
inet 192.168.0.106 netmask 255.255.255.0 broadcast 192.168.0.255
inet6 fe80::bf14:21e3:4223:e5e4 prefixlen 64 scopeid 0x20
ether 9c:b6:d0:d0:fc:b5 txqueuelen 1000 (Ethernet)
RX packets 88413 bytes 61851930 (61.8 MB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 56505 bytes 11409219 (11.4 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
不过,因为 ifconfig 命令已经被弃用,所以我们还是不鼓励使用网络工具,建议使用 ip 命令。
查询公网IP地址
上面我们介绍的都是查询本地内网IP地址的方法,也就是局域网的 IP 地址。
内网 IP 地址是局限在局域网中的地址,用于与局域网中的其他设备进行通信。局域网之外的其他设备无法通过这个 IP 地址找到你。我们所说的公网地址一般是指路由器的IP地址,路由器通过内网 IP 与你的设备通信。
那么,如何获取公网IP地址呢?这就需要借助于第三方工具了。
比如,可以使用 OpenDNS 的 host 命令来获取公网 IP 地址。
host myip.opendns.com resolver1.opendns.com
其输出如下:
Using domain server:
Name: resolver1.opendns.com
Address: 208.67.222.222#53
Aliases:
myip.opendns.com has address 202.91.87.117
Host myip.opendns.com not found: 3(NXDOMAIN)
Host myip.opendns.com not found: 3(NXDOMAIN)
以上就是本次分享全部内容。