持续创作,加速成长!这是我参与「掘金日新计划 · 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 addr
和ip 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 地址。
-
使用 curl 访问查询 ip 地址服务
-
curl cip.cc
-
curl ifconfig.me
-
curl ip.sb
-
curl icanhazip.com
-
curl curlmyip.com
-
-
使用 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"