IP 命令的使用和解释

2020/01/10 Linux Ubuntu

IP 命令的使用和解释

ip 是网络架构中不可缺少的概念。这里的 ip 指的是 Linux 的命令,查看 man 的结果,ip - show / manipulate routing, network devices, interfaces and tunnels,可见这个命令可以控制路由,网络设备,网卡和隧道。

使用

Usage: ip [ OPTIONS ] OBJECT { COMMAND | help }
       ip [ -force ] -batch filename
where  OBJECT := { link | address | addrlabel | route | rule | neigh | ntable |
                   tunnel | tuntap | maddress | mroute | mrule | monitor | xfrm |
                   netns | l2tp | fou | macsec | tcp_metrics | token | netconf | ila |
                   vrf | sr }
       OPTIONS := { -V[ersion] | -s[tatistics] | -d[etails] | -r[esolve] |
                    -h[uman-readable] | -iec |
                    -f[amily] { inet | inet6 | ipx | dnet | mpls | bridge | link } |
                    -4 | -6 | -I | -D | -B | -0 |
                    -l[oops] { maximum-addr-flush-attempts } | -br[ief] |
                    -o[neline] | -t[imestamp] | -ts[hort] | -b[atch] [filename] |
                    -rc[vbuf] [size] | -n[etns] name | -a[ll] | -c[olor]}

常见对象

object

link        网络设备
address     ip地址
addrlabel   label configuration for protocol address selection
route       路由
neigh       arp 或者 NDISC 缓存条目管理
ntable      临近网络操作管理
tunnel      基于 IP 的隧道
tuntap      TUN/TAP 设备管理
maddress    多播地址
mroute      多播路由缓存条目
mrule       多播路由策略数据库里的规则
monitor     查看 netlink 信息
xfrm        IPSec 策略管理
netns       网络命名空间管理
l2tp        基于 IP 的隧道网络
tcp_metrics tcp 指标管理
token       标记的接口认证管理

常见参数

-V, -Version    显示ip命名的版本信息
-h, -human      显示人可以看懂的信息
-s, -stats      输出更多信息
-d, -details    输出更详细的信息
-f, -family     指定协议簇,可选值有 inet, inet6, bridge, ipx, dnet, mpls  或者 link
-4, shortcut for -family inet
-6, shortcut for -family inet6
-B, shortcut for -family bridge
-c, -color      带颜色的输出
-o, -oneline    单行显示

常用命令

ip address [show]                           显示 IPv4 或者 IPv6 的地址信息
ip address show up                          仅展示打开的网络设备的地址信息
ip address show dev eth0                    展示 eth0 设备的地址信息
ip address add 192.168.1.1/24 dev eth1      将 ip 地址赋予 eth1
ip address delete 192.168.1.1/24 dev eth1   删除 ip 地址
ip address flush dev eth4 scope global      删除所有 eth4 的所有全局 IPv4 和 IPv6 的地址

ip a 的解析

ip a 也就是 ip addr,通过它可以查看很多信息。

$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> 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: enp0s25: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
 link/ether 00:1e:4f:c8:43:fc brd ff:ff:ff:ff:ff:ff
 inet 192.168.0.24/24 brd 192.168.0.255 scope global dynamic enp0s25
 valid_lft 57295sec preferred_lft 57295sec
 inet6 fe80::2c8e:1de0:a862:14fd/64 scope link
 valid_lft forever preferred_lft forever

这个系统上的两个接口 - 环回(lo)和网络(enp0s25)——显示了很多统计数据。 lo 接口显然是环回地址loolback。 我们可以在列表中看到环回 IPv4 地址(127.0.0.1)和环回 IPv6(::1)。 而普通的网络接口更有趣。

为什么是 enp0s25 而不是 eth0

如果你想知道为什么它在这个系统上被称为 enp0s25,而不是可能更熟悉的 eth0,那我们可以稍微解释一下。

新的命名方案被称为“可预测的网络接口Predictable Network Interface”。 它已经在基于systemd 的 Linux 系统上使用了一段时间了。 接口名称取决于硬件的物理位置。 en 仅仅就是 “ethernet” 的意思,就像 “eth” 用于对应 eth0,一样。 p 是以太网卡的总线编号,s 是插槽编号。 所以 enp0s25 告诉我们很多我们正在使用的硬件的信息。

内容解析

<BROADCAST,MULTICAST,UP,LOWER_UP> 这个配置串告诉我们:

BROADCAST   该接口支持广播
MULTICAST   该接口支持多播
UP          网络接口已启用
LOWER_UP    网络电缆已插入,设备已连接至网络

列出的其他值也告诉了我们很多关于接口的知识,但我们需要知道 brd 和 qlen 这些词代表什么意思。 所以,这里显示的是上面展示的 ip 信息的其余部分的翻译。

mtu 1500                                    最大传输单位(数据包大小)为 1,500 字节
qdisc pfifo_fast                            用于数据包排队
state UP                                    网络接口已启用(重要)
group default                               接口组
qlen 1000                                   传输队列长度
link/ether 00:1e:4f:c8:43:fc                接口的 MAC(硬件)地址
brd ff:ff:ff:ff:ff:ff                       广播地址
inet 192.168.0.24/24                        IPv4 地址(重要)
brd 192.168.0.255                           广播地址
scope global                                全局有效
dynamic enp0s25                             地址是动态分配的(重要)
valid_lft 80866sec                          IPv4 地址的有效使用期限
preferred_lft 80866sec                      IPv4 地址的首选生存期
inet6 fe80::2c8e:1de0:a862:14fd/64          IPv6 地址
scope link                                  仅在此设备上有效
valid_lft forever                           IPv6 地址的有效使用期限
preferred_lft forever                       IPv6 地址的首选生存期

ip route

ip route 也是个比较重要的命令,

ip route show

路由是网络里另一个非常非常非常重要的概念。

参考

Search

    Table of Contents