Linux ip命令
2021-11-21 本文已影响0人
河码匠
ip [ OPTIONS ] OBJECT { COMMAND | help }
OPTIONS:
命令 | 作用 |
---|---|
-V,-Version |
显示指令版本信息 |
-f [family] |
指定要使用的协议。 协议标识可以是 inet 、inet6 、ipx 、dnet 、bridge 、link 之一。如果此选项不存在,则从其他参数中推测协议族。 如果命令行的其余部分没有提供足够的信息来推测该族,则ip会退回到默认值,通常是 inet 或 any 。link 是一个特殊的系列标识符,表示不涉及网络协议。 |
-s |
输出更为详细的信息。如果这个选项出现两次或者多次,输出的信息将更为详细。 |
-4 |
是 -f inet 的简写。 |
-6 |
是 -f inet6 的简写。 |
-0 |
是 -f link 的简写。 |
-o |
对每条记录都使用单行输出。 |
-r |
查询域名解析系统,用获得的主机名代替主机IP地址。 |
OBJECT:
一、 ip link
设置与网络设备(device)有关的相关设定,包括 MTU 以及该网络设备的 MAC 等,当然也可以启动(up)或关闭(down)某个网络设备
1. ip link add
添加设备
ip link add [link DEV] [ name ] NAME [ txqueuelen PACKETS ] [ address LLADDR ] [ broadcast LLADDR ] [ mtu MTU ] [index IDX ] [ numtxqueues QUEUE_COUNT ] [ numrxqueues QUEUE_COUNT ] type TYPE [ ARGS ]
以下大写部分为输入参数
参数 | 说明 |
---|---|
[ link DEV ] |
要操作的物理设备 |
[ name ] NAME |
新虚拟设备的名称 |
[ address LLADDR ] |
接口 IP 地址 |
[ broadcast LLADDR ] |
接口 broadcast |
[ mtu MTU ] [index IDX ] |
接口 MTU |
[ numtxqueues QUEUE_COUNT ] |
新设备的传输队列数 |
[ numrxqueues QUEUE_COUNT ] |
新设备的接收队列数 |
type TYPE |
新设备的类型:vlan : 802.1q 标记的虚拟 LAN 接口veth : 虚拟以太网接口vcan : 虚拟控制器局域网接口dummy : 虚拟网络接口ifb : 中间功能块设备macvlan : 基于链路层地址 (MAC) 的虚拟接口macvtap : 基于链路层地址 (MAC) 和 TAP 的虚拟接口。bridge : 网桥bond :bondipoib ip6tnl : 虚拟隧道接口 IPv4 | IPv6 over IPv6ipip : 基于 IPv4 的虚拟隧道接口 IPv4sit : 基于 IPv4 的虚拟隧道接口 IPv6vxlan :vxlangre : 基于 IPv4 的虚拟隧道接口 GREgretap : 基于 IPv4 的虚拟 L2 隧道接口 GREip6gre : 基于 IPv6 的虚拟隧道接口 GREip6gretap : 基于 IPv6 的虚拟 L2 隧道接口 GREvti : 虚拟隧道接口nlmon : 网联监控设备bond_slave ipvlan geneve bridge_slave vrf |
示例:
# ip link add name veth0.0 mtu 1500 numtxqueues 4 numrxqueues 4 type veth peer name veth0.1 numtxqueues 4 numrxqueues 4 mtu 1500
# ip link show
返回:
link/ether 1a:35:6c:87:16:74 brd ff:ff:ff:ff:ff:ff
83: veth0.0@veth0.1: <BROADCAST,MULTICAST,M-DOWN> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
link/ether ba:1b:1f:b1:8c:55 brd ff:ff:ff:ff:ff:ff
2. ip link delete
删除设备
ip link delete { DEVICE | dev DEVICE | group DEVGROUP } type TYPE [ ARGS ]
示例:
# ip link delete veth0.0
3. ip link set
设置设备
ip link set { DEVICE | dev DEVICE | group DEVGROUP }
[ { up | down } ]
[ type TYPE ARGS ]
[ arp { on | off } ]
[ dynamic { on | off } ]
[ multicast { on | off } ]
[ allmulticast { on | off } ]
[ promisc { on | off } ]
[ trailers { on | off } ]
[ carrier { on | off } ]
[ txqueuelen PACKETS ]
[ name NEWNAME ]
[ address LLADDR ]
[ broadcast LLADDR ]
[ mtu MTU ]
[ netns { PID | NAME } ]
[ link-netnsid ID ]
[ alias NAME ]
[ vf NUM [ mac LLADDR ]
[ vlan VLANID [ qos VLAN-QOS ] [ proto VLAN-PROTO ] ]
[ rate TXRATE ]
[ max_tx_rate TXRATE ]
[ min_tx_rate TXRATE ]
[ spoofchk { on | off} ]
[ query_rss { on | off} ]
[ state { auto | enable | disable} ] ]
[ trust { on | off} ] ]
[ node_guid { eui64 } ]
[ port_guid { eui64 } ]
[ xdp { off |
object FILE [ section NAME ] [ verbose ] |
pinned FILE } ]
[ master DEVICE ][ vrf NAME ]
[ nomaster ]
[ addrgenmode { eui64 | none | stable_secret | random } ]
[ protodown { on | off } ]
参数 | 说明 |
---|---|
{ DEVICE | dev DEVICE | group DEVGROUP } |
DEVICE :设备名称dev DEVICE : 指定要操作的网络设备。group DEVGROUP L: 如果同时存在group和dev,则将设备移至指定的组。 如果仅指定了一个组,则该命令将在该组中的所有设备上运行 |
[ { up | down } ] |
设备的状态更改为 UP 或 DOWN |
[ type TYPE ] |
参考 link add 中 type |
[ arp { on | off } ] |
开启或关闭arp |
[ dynamic { on | off } ] |
更改设备上的DYNAMIC标志 |
[ multicast { on | off } ] |
更改设备上的多播标志 |
[ allmulticast { on | off } ] |
|
[ promisc { on | off } ] |
网卡的混合模式 |
[ trailers { on | off } ] |
|
[ carrier { on | off } ] |
|
[ txqueuelen PACKETS ] |
网卡队列长度 |
[ name NEWNAME ] |
更改设备的名称 |
[ address LLADDR ] |
接口地址 |
[ broadcast LLADDR ] |
广播地址 |
[ mtu MTU ] |
设备的MTU |
[ netns { PID | NAME } ] |
将设备移至与名称 NAME 关联的网络名称空间或处理 PID |
[ link-netnsid ID ] |
为跨网络接口设置对等网络标识 |
[ alias NAME ] |
为设备提供一个符号名称 |
[ master DEVICE ][ vrf NAME ] |
设置设备的主设备 |
[ nomaster ] |
取消设置设备的主设备 |
[ addrgenmode { eui64 | none | stable_secret | random } ] |
设置IPv6地址生成模式 |
[ protodown { on | off } ] |
更改设备上的 PROTODOWN 状态。 表示已在端口上检测到协议错误。 |
示例:
# ip link set veth0.0 down
# ip link set dev veth0.0 up
# ip link set dev veth0.0 netns r_test
4. ip link set vf
SR-IOV虚拟功能(VF)设备
参数 | 说明 |
---|---|
NUM |
指定要配置的虚拟功能设备。必须使用dev参数指定关联的PF设备 |
[ mac LLADDR ] |
修改指定 VF 的 MAC 地址 |
[ vlan VLANID [ qos VLAN-QOS ] [ proto VLAN-PROTO ] ] |
更改为指定 VF 分配的 VLAN 指定后,将从 VF 发送的所有流量标记为指定的 VLAN ID。 传入的流量将针对指定的 VLAN ID 进行过滤,并在将所有 VLAN 标记传递给 VF 之前将其剥离。 将此参数设置为 0 将禁用 VLAN 标记和过滤。 |
[ rate TXRATE ] |
更改指定VF的允许传输带宽(以Mbps为单位) 设置为0将禁用速率限制 |
[ max_tx_rate TXRATE ] |
修改VF允许的最大传输带宽 |
[ min_tx_rate TXRATE ] |
修改VF的允许的最小传输带宽 |
[ spoofchk { on | off} ] |
打开或关闭指定 VF 的数据包欺骗检查 |
[ query_rss { on | off} ] |
切换查询特定 VF 的 RSS 配置的功能 |
[ state { auto | enable | disable} ] ] |
将虚拟链接状态设置为指定的 VF 所看到的状态 |
[ trust { on | off} ] ] |
信任指定的VF用户 |
二、 ip route
路由
管理静态路由表
1. ip route add
添加路由
说明:
:=
左边解释上面对应大写单出内容,小写字母为参数,[a A] 小写参数,大写值
ip route { add | del | change | append | replace } ROUTE
ROUTE := NODE_SPEC [ INFO_SPEC ]
NODE_SPEC := [ TYPE ] PREFIX [ tos TOS ]
[ table TABLE_ID ] [ proto RTPROTO ]
[ scope SCOPE ] [ metric METRIC ]
[ ttl-propagate { enabled | disabled } ]
INFO_SPEC := NH OPTIONS FLAGS [ nexthop NH ]...
NH := [ encap ENCAPTYPE ENCAPHDR ] [ via [ FAMILY ] ADDRESS ]
[ dev STRING ] [ weight NUMBER ] NHFLAGS
FAMILY := [ inet | inet6 | ipx | dnet | mpls | bridge | link ]
OPTIONS := FLAGS [ mtu NUMBER ] [ advmss NUMBER ] [ as [ to ] ADDRESS ]
[ rtt TIME ] [ rttvar TIME ] [ reordering NUMBER ]
[ window NUMBER ] [ cwnd NUMBER ] [ initcwnd NUMBER ]
[ ssthresh NUMBER ] [ realms REALM ] [ src ADDRESS ]
[ rto_min TIME ] [ hoplimit NUMBER ] [ initrwnd NUMBER ]
[ features FEATURES ] [ quickack BOOL ] [ congctl NAME ]
[ pref PREF ] [ expires TIME ] [ fastopen_no_cookie BOOL ]
TYPE := { unicast | local | broadcast | multicast | throw |
unreachable | prohibit | blackhole | nat }
TABLE_ID := [ local | main | default | all | NUMBER ]
SCOPE := [ host | link | global | NUMBER ]
NHFLAGS := [ onlink | pervasive ]
RTPROTO := [ kernel | boot | static | NUMBER ]
PREF := [ low | medium | high ]
TIME := NUMBER[s|ms]
BOOL := [1|0]
FEATURES := ecn
ENCAPTYPE := [ mpls | ip | ip6 | seg6 | seg6local ]
ENCAPHDR := [ MPLSLABEL | SEG6HDR ]
SEG6HDR := [ mode SEGMODE ] segs ADDR1,ADDRi,ADDRn [hmac HMACKEYID] [cleanup]
SEGMODE := [ encap | inline ]
ROUTE_GET_FLAGS := [ fibmatch ]
ROUTE := NODE_SPEC [ INFO_SPEC ]
NODE_SPEC
说明
NODE_SPEC := [ TYPE ] PREFIX [ tos TOS ]
[ table TABLE_ID ] [ proto RTPROTO ]
[ scope SCOPE ] [ metric METRIC ]
[ ttl-propagate { enabled | disabled } ]
参数 | 说明 |
---|---|
TYPE |
unicast : 由路由前缀覆盖的目的地址的真实路径local : 目的地已分配给此主机。数据包被环回并在本地传递broadcast : 目的路由是广播地址。数据包作为链接广播发送multicast : 用于多播路由的特殊类型。 它在常规路由表中不存在unreachable : 目的路由无法到达。丢弃数据包并生成ICMP消息主机不可访问。本地发件人收到一个EHOSTUNREACH错误prohibit : 目的路由无法到达。数据包将被丢弃,并生成管理上禁止的ICMP消息通信。 本地发件人收到EACCES错误blackhole : 目的路由无法到达。数据包被悄悄丢弃。本地发件人收到EINVAL错误。nat : 一条特殊的NAT路由。 前缀所覆盖的目的地被认为是虚拟(或外部)地址,在转发之前需要将其转换为真实(或内部)地址。 使用属性via选择要转换为的地址throw : 与策略规则一起使用的特殊控制路径。 如果选择了这样的路由,则会在未找到路由的情况下终止此表中的查找。 如果没有策略路由,则等同于路由表中没有路由。 数据包被丢弃,并生成ICMP消息net unreachable。 本地发件人收到ENETUNREACH错误 |
PREFIX |
路由的目标前缀,省略前面 TYPE ,则 ip 采用 unicast 类型 |
tos TOS |
服务类型(TOS)密钥。这个密钥没有相关的掩码,最长的匹配被理解为:首先,比较路由和包的 TOS。如果它们不相等,则分组仍然可以匹配具有零 TOS 的路由。TOS 是8位十六进制数或 /etc/iproute2/rt_dsfield 中的标识符 |
table TABLE_ID |
要将此路由添加到的表。 参数: local 、main 、default 、all 、NUMBER
|
proto RTPROTO |
该路由的路由协议标识符 参数: kernel : 路由是在自动配置期间由内核安装的boot : 路由是在启动过程中安装的。如果路由守护进程启动,它将清除所有这些守护进程 static : 该路由由管理员安装,以覆盖动态路由NUMBER : /etc/iproute2/rt_protos 中的数字或字符串 |
scope SCOPE |
路由前缀所覆盖的目的地范围 参数: host 、link 、global 、NUMBER
|
metric METRIC |
跳数,该条路由记录的质量,一般情况下,如果有多条到达相同目的地的路由记录,路由器会采用 metric 值小的那条路由 |
ttl-propagate { enabled | disabled } |
-
INFO_SPEC
说明
INFO_SPEC := NH OPTIONS FLAGS [ nexthop NH ]...
NH
说明
NH := [ encap ENCAPTYPE ENCAPHDR ] [ via [ FAMILY ] ADDRESS ]
[ dev STRING ] [ weight NUMBER ] NHFLAGS
参数 | 说明 |
---|---|
dev STRING |
输出设备名称 |
via ADDRESS |
下一跳路由器的地址 |
via FAMILY |
inet inet6 ipx dnet mpls bridge link
|
weight NUMBER |
下一跳的权重 |
NHFLAGS |
onlink pervasive
|
-
OPTIONS
说明
OPTIONS := FLAGS [ mtu NUMBER ] [ advmss NUMBER ] [ as [ to ] ADDRESS ]
[ rtt TIME ] [ rttvar TIME ] [ reordering NUMBER ]
[ window NUMBER ] [ cwnd NUMBER ] [ initcwnd NUMBER ]
[ ssthresh NUMBER ] [ realms REALM ] [ src ADDRESS ]
[ rto_min TIME ] [ hoplimit NUMBER ] [ initrwnd NUMBER ]
[ features FEATURES ] [ quickack BOOL ] [ congctl NAME ]
[ pref PREF ] [ expires TIME ] [ fastopen_no_cookie BOOL ]
参数 | 说明 |
---|---|
mtu NUMBER |
到达目的地的路径上的MTU |
advmss NUMBER |
在建立 TCP 连接时向这些目标播发的 MSS(“最大段大小”)。如果没有给定,Linux 将使用从第一跳设备 MTU 计算的默认值 |
rtt TIME |
初始 RTT(“往返时间”)估算值。 如果未指定后缀,则这些单位是直接传递到路由代码的原始值,以保持与先前版本的兼容性。 否则,如果使用后缀s,sec或secs来指定秒数,而使用 ms,msec 或 msecs 的后缀来指定毫秒。 |
rttvar TIME |
初始RTT方差估算值。 与上面的rtt一样指定值 |
reordering NUMBER |
到此目的地的路径上的最大重新排序。 如果未给出,则 Linux 使用通过 sysctl 变量 net/ipv4/tcp_reordering 选择的值 |
window NUMBER |
TCP 播发到这些目的地的最大窗口,以字节为单位。它限制了允许 TCP 对等方发送给我们的最大数据突发 |
cwnd NUMBER |
锁定标志,如果不使用锁定标志,则忽略该选项 |
initcwnd NUMBER |
到此目标的连接的初始拥塞窗口大小 |
ssthresh NUMBER |
初始慢启动阈值的估计值 |
realms REALM |
|
src ADDRESS |
发送到路由前缀所覆盖的目的地时首选的源地址 |
rto_min TIME |
与此目标通信时要使用的最小TCP重新传输超时 |
hoplimit NUMBER |
|
initrwnd NUMBER |
到此目标的连接的初始接收窗口大小 |
features FEATURES |
启用或禁用每路由功能, 此时唯一可用的特性是 ecn ,它可以在启动到给定目标网络的连接时启用显式拥塞通知 |
quickack BOOL |
|
congctl NAME |
仅针对给定的目的地设置特定的 TCP 拥塞控制算法 |
pref PREF |
参数:low 、medium 、high
|
expires TIME |
到期时间 |
- 示例:
添加路由示例
添加路由到路由表 id 为 100 的路由表中
ip route add 192.168.122.0/24 dev eth1 table 100
添加默认路由到指定路由表
ip route add default via 192.168.99.1 table 10
添加到指定网络的路由
ip route add 192.168.99.0/24 via 192.168.99.1 metric 10 table 10
添加到指定主机的路由
ip route add 192.168.99.1 dev ens33
2. ip route change
修改路由
示例
ip route change 192.168.99.0/24 via 192.168.99.2
3. ip route del
删除路由
示例:
删除指定路由表的默认路由
ip route del default table 100
删除指定网络的路由
ip route del 192.168.99.0/24 via 192.168.99.1
4. ip route
其他命令
Usage: ip route { list | flush } SELECTOR
ip route save SELECTOR
ip route restore
ip route showdump
ip route get [ ROUTE_GET_FLAGS ] ADDRESS
[ from ADDRESS iif STRING ]
[ oif STRING ] [ tos TOS ]
[ mark NUMBER ] [ vrf NAME ]
[ uid NUMBER ]
参数 | 说明 | 示例 |
---|---|---|
show |
显示系统路由表 | 某一条:ip route show 10.3.0.0/22 匹配: ip route show match 10.3 原地址前缀: ip route show src 10.3.0.0/22 路由缓存的统计信息: ip -s route show cache 10.3.0.123 本地路由表: ip route show table local
|
list |
显示系统路由表 | |
restore |
从 stdin 恢复路由表信息该命令希望读取从 ip route save 返回的数据流 |
|
flush |
将清空路由表或删除特定目标的路由 |
ip route flush 192.168.99.0/24 ip route flush table 100
|
get |
ADDRESS : 目标 IP 地址from ADDRESS :源地址iif STRING : 此数据包预期从中到达的设备oif STRING : 强制将此数据包路由到的输出设备tos TOS : 服务类型 |
ip route get 169.254.0.0/16 |
三、 其他
命令 | 作用 | 示例 |
---|---|---|
address |
设置与 IP 有关的参数,如:netmask,broadcast等show : 显示接口 IP 信息 |
ip address show |
address add |del [IP] |
对设备(ethX)进行添加和删除操作;dev :IP参数生效的接口(ethX)broadcast : 设置广播地址 + 表示系统自动计算labe :设备别名 eht0:0scope :global :允许来自所有来源的连接site :仅支持IPv6 仅支持本主机的连接link :仅允许本设备自我连接host :仅允许本主机内部的连接 |
ip address add 192.168.50.50/24 broadcast + dev eth0 label eth0:vbird ip address del 192.168.50.50/24 dev eth0
|
addrlabel |
协议地址选择的标签配置 | |
neighbour |
ARP或NDISC缓存条目 | |
rule |
路由策略数据库中的规则 | |
maddress |
组播地址 | |
mroute |
组播路由缓存条目 | |
netns |
网络命名空间 |
ip netns list ip netns add xxxxx ip netns delete xxxx ip netns set xxxxx netns_id 给网络命名空间分配id |
tunnel |
IP隧道 | |
xfrm |
IPSec协议框架 |
示例:
查看 ip
root@kvm:~# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default
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
查看网卡信息
root@kvm:~# ip -s link show eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bgp state UP mode DEFAULT group default qlen 1000
link/ether 00:0c:29:cb:b6:28 brd ff:ff:ff:ff:ff:ff
RX: bytes packets errors dropped overrun mcast
24549176 68378 0 0 0 0
TX: bytes packets errors dropped carrier collsns
5847 76 0 0 0 0