Linux 系统查看 IP 地址信息

500 阅读4分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第30天,点击查看活动详情

1. IP 地址

1.1 IP 地址介绍

IP 地址通常分为两类,即外网(公网)地址和内网地址。其中外网地址是唯一的 IP 地址,可以在互联网上通过 IP 确定服务终端;而内网地址是本地网络域中专有的地址,该 IP 不会直接暴露在互联网中。

1.2 IPv4

IPv4 是较早提出的一种 IP 地址表示方式,通过使用 点分十进制 表示 IPv4 地址,每个部分使用 8 位地址来代表一组构成方案。

如 192.168.2.100,其中192、168、2、100 四个数均可以使用 8 位二进制数字表示。

使用 4 个十进制数,每个有 8 位长,IPv4 的组合地址数量也是十分有限的,此时就面临着 IPv4 地址耗尽的问题。

1.3 IPv6

IPv6 是 Internet 协议的最新版本,IPv6 的出现旨在替换 IPv4。

IPv6 地址使用 : 符号来分隔十六进制数字,共分为 8 个部分,即 8 个十六进制数使用 : 连接,总长度是 128 位。

2. Linux 中的 ip 命令

2.1 ip 命令语法

ip 命令是 Linux 系统中用来显示和配置网络接口信息的命令。

Linux 中还有另外一个查看网络信息的命令 ifconfig,ip 命令与其类似,但是更强大,作为 Linux 中加强版本的网络配置工具,在使用中 ip 命令完全可以替代 ipconfig。

  • ip 命令的使用语法可表示为:ip [ OPTIONS ] OBJECT { COMMAND | help }

2.2 OPTIONS

OPTIONS 代表命令操作选项参数,可以使用的参数值有:

  • help,ip 命令的帮助命令,可以查看 ip 命令的使用方法

  • -V,显示 ip 命令的版本信息

  • -s,输出详细的信息

  • -f,强制使用指定的协议族

  • -4,指定使用的网络层协议是 IPv4 协议

  • -6,指定使用的网络层协议是 IPv6 协议

  • -0,表示输出的结果信息中,每条信息作为一行展示,即使内容较多也是同一行展示

  • -r,参数表示显示主机时,显示主机域名来代替 IP 地址的展示

2.3 OBJECT

OBJECT 代表 ip 命令对应的使用对象,可以指定的对象有:

  • link,代表网络设备

  • address,代表设备上的 IPv4 或 IPv6 地址信息

  • addrlabel,协议地址选择的标签设置

  • route,代表路由表条目信息

  • rule,路由策略数据库的规则信息

2.4 COMMAND

COMMAND 即命令,代表对 OBJECT 对象执行的操作,如对象的展示操作 show/list 、增加操作 add 、 删除操作 delete 等。

  • COMMAND 命令的使用是根据 OBJECT 对象而异的,每个对象支持的命令操作不完全一样

  • 在使用 ip 命令时,如果不指定 COMMAND,则使用 list 命令作为默认参数,如 ip addrip addr list 是等价的

  • 如 IP 地址管理操作

    • 设置 IP 地址,ip addr add 192.168.0.194/24 dev wlan0

    • 查看网卡信息,ip addr show eth0

    • 删除 IP 地址,ip addr delete 192.168.0.194/24 dev wlan0

3. 查看 Linux 服务的 IP 地址

3.1 ifconfig 查看 IP 地址

在学会 ip 命令之前,可以使用 ifconfig 命令查询 Linux 系统网络对应的 IP 地址信息。

除了直接使用 ifconfig 命令查看所有网络信息,还可以后跟具体网卡查看指定信息

  • ifconfig eth0, 查看 eth0 网卡信息

  • /sbin/ifconfig eth0,查看 eth0 网卡信息

ifconfig 命令是 /sbin 路径下的,需要使用 root 用户权限才可以使用,且没有安装 ifconfig 则会提示 command not found

另外,需要注意的是 windows 系统中 cmd 窗口使用 ipconfig 命令查看 IP 等信息,Linux 中使用 ifconfig 命令查看 IP 信息。

一行命令输出 IP 地址:

ifconfig -a|grep inet|grep -v 127.0.0.1|grep -v inet6|awk '{print $2}'|tr -d "addr:"

3.2 ip 命令查看 IP 地址

使用 ip 命令查看 Linux 系统 IP 地址主要是通过查看 address 来实现的,通过命令的省略与否,可以有多种形式的命令

  • ip addr,最简单的命令,address 简写为 addr,show/list 命令省略

  • ip address,省略查看命令

  • ip addr show,address 命令缩写为 addr

  • ip address show,完整的命令查看 IP 信息

除了查看所有 IP 信息的列表外,ip 命令也可以针对具体网卡信息进行查看

  • ip addr show eth0,查看 eth0 网卡的 IP 信息

一行命令输出 IP 地址信息:

ip addr | awk '/^[0-9]+: / {}; /inet.*global/ {print gensub(/(.*)/(.*)/, "\1", "g", $2)}'

3.3 查看公网 IP 地址

上述使用 ifconfig 和 ip 命令查看的 Linux 系统 IP 地址都属于是内网 IP 地址,而如果想要查看外网 IP 地址,则需要使用请求 DNS 服务器或 curl 请求指定服务来返回公网 IP 地址。

  1. 使用 curl 访问查询 ip 地址服务

    • curl cip.cc

    • curl ifconfig.me

    • curl ip.sb

    • curl icanhazip.com

    • curl curlmyip.com

  2. 使用 bash 脚本,即将请求服务封装到 bash 命令中,并用变量存储 ip 信息用于展示

#!/bin/bash
ip=`wget http://ipecho.net/plain -O - -q ; echo`
echo $ip#!/bin/bash
ip=$(curl -s ip.sb)
echo "IP address is: $ip"