美文网首页
Linux ip命令

Linux ip命令

作者: 河码匠 | 来源:发表于2021-11-21 14:33 被阅读0次

    ip [ OPTIONS ] OBJECT { COMMAND | help }

    OPTIONS:

    命令 作用
    -V,-Version 显示指令版本信息
    -f [family] 指定要使用的协议。
    协议标识可以是inetinet6ipxdnetbridgelink 之一。
    如果此选项不存在,则从其他参数中推测协议族。
    如果命令行的其余部分没有提供足够的信息来推测该族,则ip会退回到默认值,通常是 inetany
    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 } ]
    
    参数 说明
    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 要将此路由添加到的表。
    参数: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 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 参数: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
    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: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 协议地址选择的标签配置
    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
    

    相关文章

      网友评论

          本文标题:Linux ip命令

          本文链接:https://www.haomeiwen.com/subject/swaruqtx.html