linux IP命令简介

(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

    原文作者:Mr_Hospital
    原文地址: https://www.jianshu.com/p/5f933834a5c2
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞