系列文章
【Linux命令】ifconfig、route、ip route、ip addr、 ip link 用法 一
【Linux命令】ip addr、ip link、ifconfig 用法 二
1. 前言
ifconfig命令已经废弃。其功能可通过下文介绍的ip addr、ip link和ip -s link等命令代替。
常用语法:ip [ OPTIONS ] OBJECT { COMMAND | help }
OPTIONS是修改ip行为或改变其输出的选项。所有的选项都是以-字符开头,分为长、短两种形式,常用的OPTIONS
:
option:
- -h:输出人类可读的统计信息和后缀
- -b:从提供的文件或标准输入中读取命令并调用它们。第一次故障将导致ip终止
- -force:不要在批处理模式下终止ip。如果在执行命令期间出现任何错误,应用程序返回代码将为非零
- -s:输出更多信息。如果该选项出现两次或更多,则信息量会增加。通常,信息是统计信息或一些时间值
- -d:输出详细信息
- -l:指定在放弃之前“ ip地址刷新”逻辑将尝试的最大循环数。 默认值为10。0表示循环,直到删除所有地址
- -f:指定要使用的协议族。 协议系列标识符可以是inet,inet6,bridge,ipx,dnet或链接之一。 如果不存在此选项,则从其他参数中猜测协议族。 如果剩下的命令行没有提供足够的信息来猜测家族,ip会退回到默认值,通常是inet或任意值。 链接是一个特殊的系列标识符,表示不涉及网络协议。
- -4:指定使用的网络层协议是IPv4协议
- -6:指定使用的网络层协议是IPv6协议
- -B:指定使用的网桥
- -o:输出信息每条记录输出一行,即使内容较多也不换行显示
- -r:显示主机时,不使用IP地址,而使用主机的域名
- -n:将ip切换到指定的网络命名空间NETNS。实际上,它只是将命令ip netns exec NETNS ip [ OPTIONS ] OBJECT { COMMAND | help } 简化成ip -n[etns] NETNS [ OPTIONS ] OBJECT { COMMAND | help }
- -a:对所有对象执行指定的命令,这取决于命令是否支持此选项
- -t:使用监视器选项时显示当前时间
- -ts:与-timestamp类似,但使用较短的格式
- -rs:设置netlink套接字接收缓冲区的大小,默认为1MB
- -iec:以IEC单位打印人类可读率(例如1Ki = 1024)
OBJECT是要管理者获取信息的对象,常用的OBJECT
:
COMMAND
:指定在OBJECT上执行的动作(如add/delete/show/list/help)。有些对象不支持这些操作,或者有其它的一些命令。对于所有的对象,用户可以使用help命令获得帮助。这个命令会列出这个对象支持的命令和参数的语法。如果没有指定对象的操作命令,ip会使用默认的命令。一般情况下,默认命令是list,如果对象不能列出,就会执行help命令。
例如ip link help
,就显示没有 ip link list动作
2. ip link
link表示link layer的意思,即链路层。该命令用于管理和查看网络接口(网卡)。
命令格式:
括号内为可选内容,小写为参数,直接带入,大写的为占位符,需替换为实际的值
ip link help
查看可用的命令:
Usage: ip link add .... '详细见下文'
ip link delete { DEVICE | dev DEVICE | group DEVGROUP } type TYPE [ ARGS ]
ip link set .... '详细见下文'
ip link show [ DEVICE | group GROUP ] [up] [master DEV] [type TYPE]
ip link help [ TYPE ]
2.1 ip link add
ip link add 多用于对现有的网卡进行额外的操作,例如基于当前网卡创建一个配对的虚机网卡;而下文的ip link set是对当前的网卡进行配置,多是当前网卡的属性;
ip link add help
查看可用的命令:
Usage: ip link add [link DEV] [ name ] NAME
[ txqueuelen PACKETS ]
[ address LLADDR ]
[ broadcast LLADDR ]
[ mtu MTU ]
[ numtxqueues QUEUE_COUNT ]
[ numrxqueues QUEUE_COUNT ]
type TYPE [ ARGS ] 'type是必须的参数,ARGS 依赖type'
TYPE := { vlan | veth | vcan | dummy | ifb | macvlan | macvtap |
bridge | bond | ipoib | ip6tnl | ipip | sit | vxlan |
gre | gretap | ip6gre | ip6gretap | vti | nlmon |
bond_slave | geneve | bridge_slave | macsec }
option:
- link DEVICE:指定要操作的目标物理设备 ,如果要指定在某个具体的设备上新增子项,则指定相应的设备,否则为空
- name NAME:指定新虚拟设备的名称
- type TYPE:指定新设备的类型,type是必须的参数,ARGS 依赖type
- 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)
- numtxqueues QUEUE_COUNT:指定新设备的传输队列数
- numrxqueues QUEUE_COUNT:指定新设备的接收队列数
type 是必须指定的,ARGS 依赖type,VLAN为例。
VLAN类型的链路,支持以下附加参数:ip link add link DEVICE name NAME type vlan [ protocol VLAN_PROTO ] id VLANID [ reorder_hdr { on | off } ] [ gvrp { on | off } ] [ mvrp { on | off } ] [ loose_binding { on | off } ] [ ingress-qos-map QOS-MAP ] [ egress-qos-map QOS-MAP ]
- protocol VLAN_PROTO :802.1Q或802.1ad
- id VLANID:指定要使用的VLAN标识符。请注意,带前导“0”或“0x”的数字分别被解释为八进制或十六进制
- reorder_hdr { on | off }:指定以太网报头是否重新排序
- gvrp { on | off } :指定是否应使用GARP VLAN注册协议注册此VLAN
- mvrp{on | off}:指定是否应使用多个VLAN注册协议注册此VLAN
- loose_binding {on | off}:指定VLAN设备状态是否绑定到物理设备状态
- ingress-qos-map QOS-MAP:定义传入帧上优先级代码点之间的映射。格式为从:到由空格分隔的多个映射
- egress-qos-map QOS-MAP:与入口qos映射相同,但用于输出帧
如果想查看其它的type类型的ARGS参数,可以通过 ip link add type VLAN help
、ip link add type veth help
即可:
[root@localhost test]# ip link add type veth help
Usage: ip link <options> type veth [peer <options>]
To get <options> type 'ip link add help'
[root@localhost test]#
2.1.1 命令实例
ip link add link eth0 name eth0.10 type vlan id 10
在设备eth0上创建新的vlan设备eth0.10
ip link add veth0 type veth peer name veth1
创建虚拟网卡,成对出现 veth0 veth1
2.2 ip link set
该命令用于更改设备属性。ip link set是对当前的网卡进行配置,多是当前网卡的属性,例如网卡的启动状态,网卡的ip地址和子网掩码、广播地址;
如果请求多个参数更改,则任何更改失败后,ip会立即中止。 这是ip可以将系统移至不可预测状态的唯一情况。 解决方案是避免通过一个ip链接集调用更改多个参数,即单一的命令仅完成单一的功能。
option:
- dev DEVICE:指定要操作的网络设备。 在配置SR-IOV虚拟功能(VF)设备时,此关键字应指定关联的物理功能(PF)设备
- group GROUP:GROUP具有双重作用:如果同时存在group和dev,则将设备移至指定的组。 如果仅指定了一个组,则该命令将在该组中的所有设备上运行
- up and down:将设备的状态更改为UP或DOWN
- arp on or arp off:开启或关闭arp
- multicast on or multicast off:更改设备上的多播标志
- protodown on or protodown off:更改设备上的PROTODOWN状态。 表示已在端口上检测到协议错误。 交换机驱动程序可以通过对交换机端口进行物理检查来对此错误做出反应
- dynamic on or dynamic off:更改设备上的DYNAMIC标志
- name NAME:更改设备的名称。 如果设备正在运行或已经配置了某些地址,则不建议执行此操作
- txqueuelen NUMBER / txqlen NUMBER:更改设备的传输队列长度
- mtu NUMBER:更改设备的MTU
- address LLADDRESS:更改接口地址
- peer LLADDRESS:当接口为点对点时,更改链路层广播地址或对等地址
- netns NETNSNAME | PID:将设备移至与名称NETNSNAME关联的网络名称空间或处理PID
- alias NAME:为设备提供一个符号名称,以便于参考
- vf NUM:vf NUM指定要配置的虚拟功能设备。必须使用dev参数指定关联的PF设备
- mac LLADDRESS: 更改指定VF的站地址。必须指定vf参数
- vlan VLANID:更改为指定VF分配的VLAN。 指定后,将从VF发送的所有流量标记为指定的VLAN ID。 传入的流量将针对指定的VLAN ID进行过滤,并在将所有VLAN标记传递给VF之前将其剥离。 将此参数设置为0将禁用VLAN标记和过滤。 必须指定vf参数
- qos VLAN-QOS:为VLAN标记分配VLAN QOS(优先级)位。指定时,VF传输的所有VLAN标记将在VLAN标记中包含指定的优先级位。如果未指定,则假定该值为0。必须同时指定vf和vlan参数。将vlan和qos都设置为0将禁用VF的vlan标记和筛选
- rate TXRATE:更改指定VF的允许传输带宽(以Mbps为单位)。 将此参数设置为0将禁用速率限制。 必须指定vf参数。 请改用新的API max_tx_rate选项
- max_tx_rate TXRATE:更改指定VF允许的最大传输带宽(以Mbps为单位)。必须指定vf参数
- min_tx_rate TXRATE:更改指定VF的允许的最小传输带宽(以Mbps为单位)。 最小TXRATE应始终<=最大TXRATE。 必须指定vf参数
- spoofchk on|off:打开或关闭指定VF的数据包欺骗检查
- query_rss on|off:切换查询特定VF的RSS配置的功能。 VF RSS信息(例如RSS哈希键)在某些设备上可能被认为是敏感的,这些设备在VF和PF之间共享,因此默认情况下可能禁止其查询
- state auto|enable|disable:将虚拟链接状态设置为指定的VF所看到的状态。设置为auto表示PF-link状态的反映,enable允许VF与该主机上的其他VF通信,即使PF-link状态为down,disable也会导致HW丢弃VF发送的任何数据包
- trust on|off:信任指定的VF用户。这使得VF用户可以设置可能影响安全性和/或性能的特定特性。(例如VF多播混杂模式)
- master DEVICE:设置设备的主设备
- nomaster:取消设置设备的主设备
- addrgenmode eui64 or addrgenmode none:设置IPv6地址生成模式
- link-netnsid:为跨网络接口设置对等网络标识
- type ETYPE TYPE_ARGS:
ip link set eth0 up 或:ifconfig eth0 up
开启eth0网卡
ip link set eth0 down 或:ifconfig eth0 down
关闭eth0网卡
ip link set eth0 promisc on
开启网卡的混合模式
ip link set eth0 promisc offi
关闭网卡的混合模式
ip link set eth0 txqueuelen 1200
设置网卡队列长度
ip link set eth0 mtu 1400
设置网卡最大传输单元
2.3 ip link show
ifconfig仅显示up状态的设备,ip link显示全部设备,不管状态如何 ,详情参见ip addr、ip link、ifconfig
ip link show 命令用于查看当前的网卡信息;例如前面的ip link set 修改了属性后,可以使用ip link show 进行查看;
show可省略, ip link 等价于 ip link show
option:
- dev NAME (default):名称指定要显示的网络设备。如果省略此参数,则会列出默认组中的所有设备
- group GROUP:指定要显示的设备组
- up:仅显示正在运行的接口
- master DEVICE:显示主设备
- type TYPE:指定要显示的设备类型
ip link show
显示网络接口信息,显示全部
ip link show eht0
显示eth0网卡的网络接口信息
ip link show type vlan
显示vlan类型设备,其实就是对类型进行过滤
2.4 ip link delete
用于删除目标设备
option:
- dev DEVICE:指定要操作的虚拟设备
- group GROUP:指定要删除的虚拟链接组。不允许删除组0,因为它是默认组
- type TYPE:指定设备的类型
ip link delete dev eth0.10 删除设备
ip link delete veth0
自动成对删除
ip link delete veth0 type veth peer veth1
也可以删除,不知道type veth有啥用,加不加没有啥影响,后面的args peer veth1好像也没影响
参考
ip命令详解