Linux ip命令
from–https://www.jianshu.com/p/776959b649b9
ip [ OPTIONS ] OBJECT { COMMAND | help }

OPTIONS:

命令作用
-V,-Version显示指令版本信息
-f [family]指定要使用的协议。
协议标识可以是inetinet6ipxdnetbridgelink 之一。
如果此选项不存在,则从其他参数中推测协议族。
如果命令行的其余部分没有提供足够的信息来推测该族,则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:bond
ipoib
ip6tnl: 虚拟隧道接口 IPv4 | IPv6 over IPv6
ipip: 基于 IPv4 的虚拟隧道接口 IPv4
sit: 基于 IPv4 的虚拟隧道接口 IPv6
vxlan:vxlan
gre: 基于 IPv4 的虚拟隧道接口 GRE
gretap: 基于 IPv4 的虚拟 L2 隧道接口 GRE
ip6gre: 基于 IPv6 的虚拟隧道接口 GRE
ip6gretap: 基于 IPv6 的虚拟 L2 隧道接口 GRE
vti: 虚拟隧道接口
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 DEVGROUPL: 如果同时存在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 } ]
参数说明
TYPEunicast: 由路由前缀覆盖的目的地址的真实路径

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要将此路由添加到的表。
参数:localmaindefaultallNUMBER
proto RTPROTO该路由的路由协议标识符
参数:
kernel: 路由是在自动配置期间由内核安装的

boot: 路由是在启动过程中安装的。如果路由守护进程启动,它将清除所有这些守护进程

static: 该路由由管理员安装,以覆盖动态路由

NUMBER/etc/iproute2/rt_protos 中的数字或字符串

scope SCOPE路由前缀所覆盖的目的地范围
参数:hostlinkglobalNUMBER
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 FAMILYinet
inet6
ipx
dnet
mpls
bridge
link
weight NUMBER下一跳的权重
NHFLAGSonlink

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 NUMBERTCP 播发到这些目的地的最大窗口,以字节为单位。它限制了允许 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参数:lowmediumhigh
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
getADDRESS: 目标 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:0
scope
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协议地址选择的标签配置
neighbourARP或NDISC缓存条目
rule路由策略数据库中的规则
maddress组播地址
mroute组播路由缓存条目
netns网络命名空间ip netns list
ip netns add xxxxx
ip netns delete xxxx
ip netns set xxxxx netns_id 给网络命名空间分配id
tunnelIP隧道
xfrmIPSec协议框架

示例:
查看 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
上一篇
下一篇