IT@程序员猿媛

ip 命令相关整理

2020-01-15  本文已影响0人  58bc06151329

文前说明

作为码农中的一员,需要不断的学习,我工作之余将一些分析总结和学习笔记写成博客与大家一起交流,也希望采用这种方式记录自己的学习之旅。

本文仅供学习交流使用,侵权必删。
不用于商业目的,转载请注明出处。

1. 概述

2. 语法

OPTIONS 说明
-V, -Version 打印版本。
-h, -human, -human-readable 以容易理解的格式输出统计信息。
-b, -batch <FILENAME> 从提供的文件或标准输入读取命令并调用,故障将导致终止。
-force 在批处理模式下,出现错误时不终止。在执行命令期间出现任何错误,则应用程序返回码为非零。
-s, -stats, -statistics 输出更多信息。如果该选项出现两次或更多,则信息量会增加。通常,这些信息是统计信息或一些时间值。
-d, -details 输出更详细的信息。
-l, -loops <COUNT> 指定 " IP地址刷新 " 逻辑在放弃之前将尝试的最大循环数。默认值为 10。零(0)表示循环直到删除所有地址。
-f, -family <FAMILY> 指定要使用的协议族。协议族标识符可以是 inet、inet6、bridge、ipx、dnet 或 link 之一。
-4 -family inet 的快捷方式。
-6 -family inet6 的快捷方式。
-B -family bridge 的快捷方式。
-D -family dnet 的快捷方式。
-I -family ipx 的快捷方式。
-0 -family link 的快捷方式。
-o, -oneline 将每条记录输出到一行,用 " \ " 字符替换换行符。
-r, -resolve 使用系统的名称解析程序,打印 DNS 名称而不是主机地址。
-n, -netns <NETNS> 将 IP 切换到指定的网络命名空间网络。将 ip netns exec NETNS ip 命令简化。
-a, -all 对所有对象执行指定的命令,取决于命令是否支持此选项。
-t, -timestamp 显示当前时间。
-ts, -tshort 类似 -timestamp,但使用较短的格式。
-rc, -rcvbuf<SIZE> 设置 netlink 套接字接收缓冲区大小,默认为 1MB。
-iec 以 IEC 为单位并且容易理解的格式输出(例如 1Ki = 1024)。

-Version

[root@test ]# ip -V
ip utility, iproute2-ss170501

-statistics

[root@test ]# ip -s -s link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    RX: bytes  packets  errors  dropped overrun mcast   
    113376370  41578    0       0       0       0       
    RX errors: length   crc     frame   fifo    missed
               0        0       0       0       0       
    TX: bytes  packets  errors  dropped carrier collsns 
    113376370  41578    0       0       0       0       
    TX errors: aborted  fifo   window heartbeat transns
               0        0       0       0       0       
2: ens192: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
    link/ether 00:0c:29:9c:3a:8e brd ff:ff:ff:ff:ff:ff
    RX: bytes  packets  errors  dropped overrun mcast   
    8651526530 40213459 0       62      0       441     
    RX errors: length   crc     frame   fifo    missed
               0        0       0       0       0       
    TX: bytes  packets  errors  dropped carrier collsns 
    8167033721 1154173  0       0       0       0       
    TX errors: aborted  fifo   window heartbeat transns
               0        0       0       0       1       

-details

[root@test ]# ip -d link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 promiscuity 0 addrgenmode eui64 numtxqueues 1 numrxqueues 1 gso_max_size 65536 gso_max_segs 65535 
2: ens192: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
    link/ether 00:0c:29:9c:3a:8e brd ff:ff:ff:ff:ff:ff promiscuity 0 addrgenmode none numtxqueues 8 numrxqueues 8 gso_max_size 65536 gso_max_segs 65535 

-oneline

[root@test ]# ip -o link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000\    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: ens192: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000\    link/ether 00:0c:29:9c:3a:8e brd ff:ff:ff:ff:ff:ff

-resolve

[root@test ]# ip -r addr
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 localhost/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 localhost/128 scope host 
       valid_lft forever preferred_lft forever
2: ens192: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0c:29:9c:3a:8e brd ff:ff:ff:ff:ff:ff
    inet compiler.test.com/21 brd 192.168.103.255 scope global noprefixroute ens192
       valid_lft forever preferred_lft forever
    inet6 compiler.test.com/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

2.1 ip address

COMMAND 说明
add 添加新的协议地址。
del 删除协议地址。
show 查看协议地址。
flush 刷新协议地址。

add

ip address add 192.168.xxx.xxx/24 dev eth0
参数 说明
dev IFNAME 要将地址添加到的设备的名称。例如 eth0。
IFADDR 接口的地址。地址的格式取决于协议。例如 192.168.xxx.xxx/24。

del

ip address del 192.168.xxx.xxx/24 dev eth0
参数 说明
dev IFNAME 要将地址添加到的设备的名称。例如 eth0。
IFADDR 接口的地址。地址的格式取决于协议。例如 192.168.xxx.xxx/24。

show

[root@test ]# ip address show
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: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0c:29:9c:3a:8e brd ff:ff:ff:ff:ff:ff
    inet 192.168.xx.xx/21 brd 192.168.xxx.xxx scope global noprefixroute eth0
       valid_lft forever preferred_lft forever
    inet6 xxxx::xxxx:xxxx:xxxx:xxxx/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
参数 说明
dev IFNAME 要将地址添加到的设备的名称。例如 eth0。
scope SCOPE-ID 仅列出具有此作用域的地址。
to PREFIX 仅列出与此前缀匹配的地址。
label PATTERN 只列出标签与模式匹配的地址。
master DEVICE 仅列出受此主设备控制的接口。
type TYPE 只列出给定类型的接口。
up 只列出正在运行的接口。
[root@test ]# ip address show dev ens0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0c:29:9c:3a:8e brd ff:ff:ff:ff:ff:ff
    inet 192.168.xx.xx/21 brd 192.168.xxx.xxx scope global noprefixroute eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::5a6b:7460:5c67:b12f/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
显示定义 说明
<接口标签> BROADCAST 表示该接口支持广播。MULTICAST 表示该接口支持多播。UP 表示该网络接口已启用。LOWER_UP 表示网络电缆已插入,设备已连接至网络。LOOPBACK 接口不同其他主机交流,仅是自己这个主机使用。POINTTOPOINT 点对点,该链接只有两端,一端收到的请求包会被发送到另一端。PROMISC 混杂模式,即将所有链路上的信息都发给内核,不管是不是本来发给该主机的。ALLMULTI 接收所有链路上的 multicat(多播)包。NOARP 没有特定的意思,其具体意义由具体的网络协议确定。DYNAMIC 表示该接口是动态进行创建和销毁的。SLAVE 表示该接口被绑定在了其他接口上,以共享链路承受能力(share link capacities)。
mtu 1500 最大传输单位(数据包大小)为 1,500 字节。
qdisc 用于数据包排队算法。
state UP 网络接口已启用。
qlen 1000 传输队列长度。
link/ether 00:0c:29:9c:3a:8e 接口的 MAC(硬件)地址。
brd ff:ff:ff:ff:ff:ff 广播地址。
inet 192.168.xx.xx/21 IPv4 地址。
brd 192.168.xxx.xxx 广播地址。
scope global 全局有效。site 仅针对 IPv6,表示范围局限于 site。地址值仅在该 site 内有效。link 仅在该设备上有效。host 表示仅在该主机上有效。
内核设置的值 secondary 当为外发的网络包选择默认源地址时不使用该地址。dynamic 地址是动态创建的。deprecated 地址依然有效,但是不能用于新创建的连接。tentative 由于重复地址检测尚未完成或者失败了,该地址无法被使用。
valid_lft forever IPv4/IPv6 地址的有效使用期限。
preferred_lft forever IPv4/IPv6 地址的首选生存期。
noprefixroute 标识不为该地址的网络前缀分配路由,当移除该地址的时候也不去搜索对应的路由。

flush

2.2 ip route

[root@localhost ~]# cat /etc/iproute2/rt_tables 
#
# reserved values
#
255 local
254 main
253 default
0   unspec
#
# local
#
#1  inr.ruhep
COMMAND 说明
add 添加新的路由。
change 选择路由。
replace 替换或者新增路由。
del 删除路由。
show 显示路由列表。
flush 刷新路由表。
get 获取一个单一的路由信息。
save 将路由信息保存到 stdout。
restore 从 stdin 还原路由信息。

add / change / replace

命令格式:ip route { add | change | replace } ROUTE

ip route add default via 192.168.1.1 dev eth0
参数 说明
to TYPE PREFIX (default) 路由的目标前缀。如果省略 TYPE,则 ip 采用类型 unicast。如果缺少前缀的长度,则 ip 采用全长主机路由。default 相当于 IP 0/0 或 IPv6:/0。
table TABLEID 要将此路由添加到的表。路由表可以是 /etc/iproute2/rt_tables 中的数字或字符串。如果省略此参数,将使用 main(主表),但本地路由、广播路由和 nat 路由默认情况下被放入 local(本地表) 中。
dev NAME 输出设备名称。
via ADDRESS 下一个路由器的地址。
src ADDRESS 发送到路由前缀覆盖的目标时首选的源地址。
realm REALMID 此路由分配到的域。

del

ip route del 172.17.160.0/20

show

[root@localhost ~]# ip route show
default via 192.168.xx.1 dev eth0 proto static metric 100 
192.168.xx.0/21 dev eth0 proto kernel scope link src 192.168.xx.xx metric 100
参数 说明
protocol RTPROTO 仅列出此协议的路由。
scope SCOPE_VAL 仅列出此范围的路由。
type TYPE 仅列出此类型的路由。
dev NAME 仅列出通过此设备的路由。
via PREFIX 仅列出通过前缀选择的下一个路由器的路由。
src PREFIX 仅列出按前缀选择了首选源地址的路由。
显示定义 说明
路由选择器 default 是默认路由选择。仅从给定的目的地范围选择路由。选择器由可选修饰符(根、匹配或精确)和前缀组成。
metric 100 跳跃计数,确定网关的优先级,默认 20,数值越小优先级越高。
proto kernel 该路由的协议,主要有 redirect,kernel,boot,static,ra 等,其中 kernel 指的是直接由核心判断自动设定。

flush

get

参数 说明
to ADDRESS (default) 目的地地址。
from ADDRESS 源地址。
iif NAME 预计此数据包将从中到达的设备。
oif NAME 强制将此数据包路由到的输出设备。
[root@localhost ~]# ip route get 192.168.xx.0/21
broadcast 192.168.xx.0 dev eth0 src 192.168.xx.xx 
    cache <local,brd>

save

restore

2.3 ip link

COMMAND 说明
add 添加新的网络设备。
del 删除网络设备。
show 查看网络设备信息。
set 修改网络设备属性。
[root@localhost ~]# ip -s link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    RX: bytes  packets  errors  dropped overrun mcast   
    17235221267 49128803 0       0       0       0       
    TX: bytes  packets  errors  dropped carrier collsns 
    17235221267 49128803 0       0       0       0       
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT qlen 1000
    link/ether 00:0c:29:97:20:d6 brd ff:ff:ff:ff:ff:ff
    RX: bytes  packets  errors  dropped overrun mcast   
    14006930129 61551466 0       51      0       510     
    TX: bytes  packets  errors  dropped carrier collsns 
    770931518504 29441550 0       0       0       0
显示定义 说明
RX 表示接收。
TX 表示发送。
bytes 接收/发送的字节数。
packets 接收/发送的包数。
errors 接收/发送的带有错误的包总数。
dropped 由于处理资源不足导致接收/发送的丢弃的包数。
overrun 因接收溢出(环形缓冲区)导致丢失的包。通常如果接口溢出,则表示内核中存在严重问题,或者说服务器上该网络设备的处理设备太慢。
mcast 接收到的多播包数。
carrier 因数据链路错误导致发送失败的包数。
collsns 因在网络上发送冲突而导致的失败数。

add

参数 说明
link DEVICE 指定要操作的物理设备。
NAME 指定新虚拟设备的名称。
TYPE 指定新设备的类型。
numtxqueues QUEUE_COUNT 指定新设备的传输队列数。
numrxqueues QUEUE_COUNT 指定新设备的接收队列数。
支持的类型 说明
bridge Ethernet Bridge device
bond Bonding device
dummy Dummy network interface
ifb Intermediate Functional Block device
ipoib IP over Infiniband device
macvlan Virtual interface base on link layer address (MAC)
macvtap Virtual interface based on link layer address (MAC) and TAP.
vcan Virtual Controller Area Network interface
veth Virtual ethernet interface
vlan 802.1q tagged virtual LAN interface
vxlan Virtual eXtended LAN
ip6tnl Virtual tunnel interface IPv4/IPv6 over IPv6
ipip Virtual tunnel interface IPv4 over IPv4
sit Virtual tunnel interface IPv6 over IPv4
gre Virtual tunnel interface GRE over IPv4
gretap Virtual L2 tunnel interface GRE over IPv4
ip6gre Virtual tunnel interface GRE over IPv6
ip6gretap Virtual L2 tunnel interface GRE over IPv6
vti Virtual tunnel interface
nlmon Netlink monitoring device
geneve GEneric NEtwork Virtualization Encapsulation
macsec Interface for IEEE 802.1AE MAC Security (MACsec)

delete

参数 说明
dev DEVICE 指定要操作的虚拟设备。
group GROUP 指定要删除的虚拟链接组。不允许删除组 0,因为它是默认组。
type TYPE 指定设备的类型。

set

参数 说明
dev DEVICE 指定要操作的网络设备。
group GROUP 组具有双重角色,如果组和设备都存在,则将设备移动到指定的组。如果只指定了一个组,则该命令将在该组中的所有设备上运行。
up and down 将设备状态更改为 " 启用 " 或 " 禁用 "。
arp on or arp off 更改设备上的 NOARP 标志。
multicast on or multicast off 更改设备上的多播标志。
protodown on or protodown off 更改设备上的 PROTODOWN 状态。指示在端口上检测到协议错误,交换机驱动程序通过关闭交换机端口上的 phys 来对此错误作出反应。
dynamic on or dynamic off 更改设备上的动态标志。
name NAME 更改设备的名称。如果设备正在运行或已配置某些地址,则不建议执行此操作。
alias NAME 为设备指定一个别名,以便于参考。
master DEVICE 设置设备的主设备(受控制的设备)。
nomaster 取消设置设备的主设备(释放设备)。
addrgenmode eui64 or addrgenmode none 设置 IPv6 地址生成模式。

show

参数 说明
dev NAME (default) 名称指定要显示的网络设备。如果省略此参数,则列出默认组中的所有设备。
group GROUP 指定要显示的设备组。
up 只显示运行的接口。
master DEVICE 指定要显示的从属设备的主设备。
type TYPE 指定要显示的设备类型。

2.4 ip neigh

COMMAND 说明
add 添加新的邻接条目。
change 选择邻接条目。
replace 替换邻接条目。
del 删除邻接条目。
show 显示邻接条目信息。
flush 刷新邻接条目。

add / change / replace

参数 说明
to ADDRESS (default) 邻接协议地址。
dev NAME 邻接条目连接到的设备。
nud STATE 邻接条目状态。

del

show

参数 说明
to ADDRESS (default) 根据前缀过滤邻接条目。
dev NAME 只列出连接到此设备的邻接条目。
proxy 列出邻接条目的代理。
unused 列出未使用的邻接条目。
nud STATE 列出此状态下的邻接条目。
[root@localhost ~]# ip neigh show
192.168.96.97 dev eth0 lladdr 00:0c:29:7c:76:48 STALE
192.168.98.91 dev eth0  lladdr 00:0c:29:ba:13:18 STALE
192.168.100.152 dev eth0  lladdr 00:1a:4a:f7:c1:8f STALE
192.168.100.57 dev eth0  lladdr 00:1a:4a:f7:c1:9a STALE
192.168.96.156 dev eth0  lladdr 56:6f:e8:2e:00:09 STALE
192.168.102.47 dev eth0  lladdr 00:0c:29:bd:66:58 DELAY
192.168.96.98 dev eth0  lladdr 00:0c:29:9c:3a:8e STALE
192.168.100.154 dev eth0  lladdr 00:1a:4a:f7:c1:84 STALE
192.168.100.235 dev eth0  lladdr 00:1a:4a:f7:c1:83 STALE
192.168.96.178 dev eth0  lladdr 00:1e:67:e3:33:86 STALE
192.168.98.95 dev eth0  lladdr 00:1a:4a:3d:ce:1a STALE
192.168.100.58 dev eth0  lladdr 00:1a:4a:f7:c1:9d STALE
192.168.98.1 dev eth0   FAILED
192.168.96.95 dev eth0  lladdr 00:0c:29:79:90:b2 STALE
192.168.96.1 dev eth0  lladdr 04:f9:38:ae:79:3c REACHABLE
192.168.102.48 dev eth0  lladdr 00:0c:29:e5:55:68 STALE
192.168.98.124 dev eth0  lladdr 00:0c:29:47:db:99 STALE
192.168.100.146 dev eth0  lladdr 00:50:56:8c:6d:15 STALE
192.168.103.189 dev eth0  lladdr 00:1a:4a:29:ad:c8 STALE

flush

上一篇下一篇

猜你喜欢

热点阅读