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 : 由路由前缀覆盖的目的地址的真实路径
|
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 : 路由是在自动配置期间由内核安装的
|
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
|
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
|
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