(Proudly powered by QKQ)
Q: IP命令是用来干啥的?
A: 根据man ip的结果:
ip – show / manipulate routing, devices, policy routing and tunnels
即显示或者操作路由,设备,路由策略和通道。
Q: IP命令如何使用?
A: 其使用格式为:
ip [OPTIONS] OBJECT {COMMAND | help}
其中 OPTIONS表示参数,OBJECT可以是:
- link, network device,网络设备
- address, protocol address on a device,设备上的协议地址
- addrlabel
- route
- neigh
- ntable
- tunnel
- tuntap
- maddress
- mroute
- mrule
- monitor
- xfrm
- netns
- l2tp
- tcp_metrics
- token
- macsec
举个例子:
# 展示inet4相关的详细信息,并且具有颜色
ip -d -c -4 addr
Q: 常用参数有哪些?
A:
- -V, -Version,显示ip命名的版本信息
- -h, -human,显示人可以看懂的信息
- -s, -stats, 输出更多信息
- -d, -details,输出更详细的信息
- -f, -family,指定协议簇,可选值有inet, inet6, bridge, ipx, dnet, mpls 或者link
- -4, 即-family inet
- -6, 即-family inet6
- -B, 即-family bridge
- -c, -color,带颜色的输出
- -o, -oneline,单行显示
Q: Ip address的常用命令?
A:
- 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的地址
Q: Ip addr的输出是什么意思?
A: 举个例子:
ip addr show enp0s3
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 08:00:27:81:e2:68 brd ff:ff:ff:ff:ff:ff
inet 10.0.2.15/24 brd 10.0.2.255 scope global noprefixroute dynamic enp0s3
valid_lft 85003sec preferred_lft 85003sec
inet6 fe80::41da:5105:3c83:a04c/64 scope link noprefixroute
valid_lft forever preferred_lft forever
解释:
- 第一行和第二行同ip link show的输出是一样的
- 第三行inet开头的是IPv4的信息
- 第四行inet6开头的是IPv6的信息
- 冒号之前的2是interface index,即interface的序号
- 之后接的是interface的名字,即enp0s3
- 尖括号里面的是interface的flags(标签):
- UP,设备处于开启状态,可以接收网络请求
- LOOPBACK,interface不同其他host交流,仅是自己这个host使用
- BROADCAST,该interface具有广播设备,支持广播,比如Ethernet link
- POINTTOPOINT,点对点,该链接只有两端,一端收到的请求包会被发送到另一端
- MULTICAST,多路传输,表示该interface具有多路传输功能。即将包发送给网络上的不同设备分组,BROADCAST是一种特殊的multicast方式,即网络上所有设备在同一个组里
- PROMISC,混杂模式,即将所有链路上的信息都发给内核,不管是不是本来发给该host的
- ALLMULTI,接收所有链路上的multicat包
- NOARP,没有特定的意思,其具体意义由具体的网络协议确定。
- DYNAMIC,表示该interface是动态进行创建和销毁的
- SLAVE,表示该interface被绑定在了其他interface上,以共享链路承受能力(share link capacities)
- mtu,指的是maximal transfer unit,即该interface发送的包的最大单元(the maximal size of data which can be sent as a single packet over this interface)
- qdisc, 即queuing discipline,展示的是该interface使用的排队算法:noqueue表示不会进行排队,noop表示该interface处于blackhole模式,所有的请求都会在到达的时候被立即丢弃。qlen,是该设备默认传输队列的长度,以包为单位(the default transmit queue length of the device measured in packets)
- 第二行展示了该设备的链接层信息,ether表示该设备的硬件类型,该类型决定了地址的格式和语义。之后接着的是地址和广播地址,是一系列以分号隔开的十六进制数
- 第三行是IPv4的信息,包括地址,广播地址,scope信息,flags,以及address label。
- brd标识broadcast
- scope表示了该地址的有效范围,预设值有:
- global,全局有效
- site,仅针对IPv6,表示范围局限于site。地址值仅在该site内有效
- link,link local,比如仅在该设备上有效
- host,表示仅在该host有效
- flags是内核设置的值,有:
- secondary,当为外发的网络包选择默认源地址时不使用该地址
- dynamic,地址是由stateless autoconfiguration来创建的。该地址具有国企时间信息,当时间到之后,地址被标识为deprecated state
- deprecated,地址依然有效,但是不能用于新创建的连接
- tentative,由于重复地址检测尚未完成或者失败了,该地址无法被使用
- valid_lft为valid lifetime,即该地址的lifetime时间,当过期的时候,地址就被内核给移除
- preferred_lft为preferred lifetime,当过期的时候,对于新的外发请求就不再使用该地址
- noprefixroute,标识不为该地址的网络前缀分配路由,当移除该地址的时候也不去搜索对应的路由。
Q: IP route是干啥的?怎么用?
A: ip route是用来操控kernel routing table的。那么kernel routing table是用来干啥的?
用法:
ip [ip-options] route {COMMAND | help}
Q: kernel routing table是用来干啥的?
A: routing table总体上来讲存储了网络包的转发规则。
Q: ip route show的输出是什么意思?
A: 先看一个ip route show的输出:
# ip route show
default via 10.0.2.2 dev enp0s3 proto dhcp metric 100
default via 192.168.99.1 dev enp0s8 proto static metric 101
10.0.2.0/24 dev enp0s3 proto kernel scope link src 10.0.2.15 metric 100
10.244.0.0/24 via 10.244.0.0 dev flannel.1 onlink
10.244.1.0/24 dev cni0 proto kernel scope link src 10.244.1.1
10.244.2.0/24 via 10.244.2.0 dev flannel.1 onlink
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1
192.168.99.0/24 dev enp0s8 proto kernel scope link src 192.168.99.111 metric 101
其中:
- default表示默认的route,即其他route规则没有生效就默认使用该条规则。两条default规则分别对应不同的device。
- dev表示device,即使用的interface是哪个
- proto表示该条规则的protocol identifier,有:
- redirect,该路由是由于ICMP redirect产生(install)
- kernel,该路由是在内核进行自动配置的时候产生的
- boot,该路由是在bootup的时候产生
- static,该路由是由管理员增加的,为了覆盖动态路由
- ra,该路由由Router Discovery tool产生
- scope,同上面ip addr show介绍的scope
- src,表示为优先选择的源地址,当给目标地址发包的时候
- metric,表示到目的地的距离(the ‘distance’ to the target),是一个数字,其单位可以是:Hop, Delay, Throughput, Reliability
参考资料:
[1] http://linux-ip.net/gl/ip-cref/ip-cref-node17.html
[2] linux man page for ip
[3] http://linux-ip.net/gl/ip-cref/ip-cref-node34.html
[4] http://linux-ip.net/gl/ip-cref/ip-cref-node25.html