• ip命令的使用


    显示所有网络接口信息

    输入 ip addr 或者 ip a 命令可以显示所有的网络接口信息

    [root@ecs-centos-7 ~]# ip addr
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
        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
    2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
        link/ether fa:16:3e:e0:4f:b8 brd ff:ff:ff:ff:ff:ff
        inet 192.168.0.9/24 brd 192.168.0.255 scope global noprefixroute dynamic eth0
           valid_lft 74409sec preferred_lft 74409sec
        inet6 fe80::f816:3eff:fee0:4fb8/64 scope link 
           valid_lft forever preferred_lft forever
    [root@ecs-centos-7 ~]# 
    

    上面的输出中,可以看出系统目前的网络接口分别是 lo 和 eth0, 前者是网络环回接口,后者是常规的网络接口

    输出接口信息的 字段详解

    <BROADCAST,MULTICAST,UP,LOWER_UP>: BROADCAST 表示支持广播, MULTICAST 表示支持多播
    
    UP 网络接口处于开启状态
    
    LOWER_UP 表示网络电缆已插入并且已连上网络
    
    mtu 1500: 最大传输的单位1500字节
    
    qdisc pfifo_fast: 数据包排队
    
    state UP: 接口状态已开启
    
    qlen 1000: 传输队列长度
    
    link/ether fa:16:3e:e0:4f:b8 Mac地址
    
    brd ff:ff:ff:ff:ff:ff 广播地址
    
    inet 192.168.0.9/24 : IPV4
    
    scope global: 全局有效
    
    dynamic eth0: 动态分配地址
    
    valid_lft 74409sec: IPV4有效期
    
    preferred_lft 74409sec: IPV4首选生存期
    
    inet6 fe80::f816:3eff:fee0:4fb8/64  IPV6
    
    scope link: 仅在此接口上生效
    

    除了输出所有的网络接口信息外,还可以按照以下方式个性化输出网络接口信息

    • 按照是否支持 IPV4 或 IPV6输出

    命令 ip -4 a 会输出只支持IPV4的接口信息

    同样,命令 ip -6 a 会输出只支持IPV6的接口信息

    • 按照接口名字输出

    命令 ip a show eth0会输出 eth0接口的信息

    [root@ecs-centos-7 ~]# ip a show eth0
    2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
        link/ether fa:16:3e:e0:4f:b8 brd ff:ff:ff:ff:ff:ff
        inet 192.168.0.9/24 brd 192.168.0.255 scope global noprefixroute dynamic eth0
           valid_lft 73494sec preferred_lft 73494sec
        inet6 fe80::f816:3eff:fee0:4fb8/64 scope link 
           valid_lft forever preferred_lft forever
    
    • 按照网络接口开启和关闭状态输出

    命令 ip link ls up 会输出所有处于开启状态的网络接口信息

    那么,ip link ls down就会输出所有处于关闭状态的网络接口信息

    为网络接口 添加、移除 IP地址

    • 添加IP

    为指定网络接口分配IP地址的命令格式: ip a add ip地址 dev 接口名字

    比如:现在要为eth0 网络接口分配一个网络掩码为 20 的IP 192.168.1.10, 具体的输入请看下面的实例

    [root@ecs-centos-7 ~]# ip a add 192.168.1.10/20  dev eth0
    [root@ecs-centos-7 ~]# ip a show eth0
    2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
        link/ether fa:16:3e:e0:4f:b8 brd ff:ff:ff:ff:ff:ff
        inet 192.168.0.9/24 brd 192.168.0.255 scope global noprefixroute dynamic eth0
           valid_lft 71787sec preferred_lft 71787sec
        inet 192.168.1.10/20 scope global eth0
           valid_lft forever preferred_lft forever
        inet6 fe80::f816:3eff:fee0:4fb8/64 scope link 
           valid_lft forever preferred_lft forever
    

    从上面例子的输出结果可以看出,网络接口eth0上多了一个192.168.1.10的 IP

    命令 ip a add 192.168.1.10/20 dev eth0 执行成功的话,是没有任何输出,如果网络接口 eth0 不存在的话,会输出 Cannot find device "eth0" 的错误信息

    其实,还可以通过执行 ping 192.168.1.10 命令来测试网络接口上IP是否分配成功,如果能 ping 通IP的话,表示分配成功,否则表示失败

    说明:192.168.1.10/20 中 20 是 CIDR 表示法的网络掩码,想详细了解的可以自行查阅网络掩码的资料

    • 移除IP

    网络接口上添加了IP之后,可使用 ip a del ip地址 dev 接口名字 命令从指定的接口移除指定的IP,移除的时候IP后面需要携带网络掩码

    [root@ecs-centos-7 ~]# ip a del 192.168.1.10/20 dev eth0
    [root@ecs-centos-7 ~]# ip a show eth0
    2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
        link/ether fa:16:3e:e0:4f:b8 brd ff:ff:ff:ff:ff:ff
        inet 192.168.0.9/24 brd 192.168.0.255 scope global noprefixroute dynamic eth0
           valid_lft 71414sec preferred_lft 71414sec
        inet6 fe80::f816:3eff:fee0:4fb8/64 scope link 
           valid_lft forever preferred_lft forever
    

    修改网络接口状态

    要关闭或者开启网络接口,可以使用 ip link set dev 接口名字 up/down 命令

    例如:有 lo 和 eth0 两个网络接口, 具体接口信息如下

    [root@ecs-centos-7 ~]# ip a
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
        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
    2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
        link/ether fa:16:3e:e0:4f:b8 brd ff:ff:ff:ff:ff:ff
        inet 192.168.0.9/24 brd 192.168.0.255 scope global noprefixroute dynamic eth0
           valid_lft 59216sec preferred_lft 59216sec
        inet6 fe80::f816:3eff:fee0:4fb8/64 scope link 
           valid_lft forever preferred_lft forever
    

    通过 ping -w 3 127.0.0.1 命令测试,结果表明 lo 接口目前是开启状态,具体的测试输出如下所示

    [root@ecs-centos-7 ~]# ping -w 3 127.0.0.1
    PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.
    64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.014 ms
    64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.026 ms
    64 bytes from 127.0.0.1: icmp_seq=3 ttl=64 time=0.022 ms
    64 bytes from 127.0.0.1: icmp_seq=4 ttl=64 time=0.023 ms
    
    --- 127.0.0.1 ping statistics ---
    4 packets transmitted, 4 received, 0% packet loss, time 2999ms
    rtt min/avg/max/mdev = 0.014/0.021/0.026/0.005 ms
    

    现在关闭 lo 网络接口,并再次测试该接口的状态,具体命令如下:

    [root@ecs-centos-7 ~]# ip link set dev lo down
    [root@ecs-centos-7 ~]# ip link show lo
    1: lo: <LOOPBACK> mtu 65536 qdisc noqueue state DOWN mode DEFAULT group default qlen 1000
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    
    [root@ecs-centos-7 ~]# ping -w 3 127.0.0.1
    PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.
    
    --- 127.0.0.1 ping statistics ---
    4 packets transmitted, 0 received, 100% packet loss, time 2999ms
    
    

    执行 ip link set dev lo down 命令之后,关闭了网络接口lo,通过 ip link show lo 命令查看该接口的信息,结果表明接口是关闭状态,再次通过 ping -w 3 127.0.0.1测试接口的状态,再一次确认了接口是关闭状态

    修改网络接口传输队列长度

    通过 p l set txqueuelen 长度 dev 接口名字 命令可以设置网络接口的传输队列长度

    [root@ecs-centos-7 ~]# ip l show eth0
    2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1200
        link/ether fa:16:3e:e0:4f:b8 brd ff:ff:ff:ff:ff:ff
        
    [root@ecs-centos-7 ~]# ip l set txqueuelen 1000 dev eth0
    [root@ecs-centos-7 ~]# ip l show eth0
    2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
        link/ether fa:16:3e:e0:4f:b8 brd ff:ff:ff:ff:ff:ff
    

    上面的例子中,字符串 qlen 1200 表示传输队列长度是 1200

    从例子中可以看出,修改传输队列长度之前,传输队列长度是 1200

    执行 ip l set txqueuelen 1000 dev eth0 命令把传输队列长队修改为 1000, 然后再执行 ip l show eth0 命令查询 eth0网络接口的信息,查询结果中 default qlen 1000 说明修改成功

    修改网络接口的MTU(最大传输单元)

    通过 p l set mtu 长度 dev 接口名字 命令可以设置网络接口的最大传输单元

    [root@ecs-centos-7 ~]# ip l show eth0
    2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1600 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1200
        link/ether fa:16:3e:e0:4f:b8 brd ff:ff:ff:ff:ff:ff
    
    
    [root@ecs-centos-7 ~]# ip l set set mtu 1500 dev eth0
    [root@ecs-centos-7 ~]# ip l show eth0
    2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1200
        link/ether fa:16:3e:e0:4f:b8 brd ff:ff:ff:ff:ff:ff
    

    上面的例子中,字符串 mtu 1600 表示最大传输单元是 1600

    从例子中可以看出,修改传输队列长度之前,最大传输单元是 1600

    执行 ip l set set mtu 1500 dev eth0 命令把最大传输单元修改为 1500, 然后再执行 ip l show eth0 命令查询 eth0网络接口的信息,查询结果中 mtu 1500 说明修改成功

    查看IP路由表

    下面几条命令都可以查看 IP 路由表

    ip r
    ip route
    ip r list
    ip route list
    
    • 查看路由表
    [root@ecs-centos-7 ~]# ip r
    default via 192.168.0.1 dev eth0 proto dhcp metric 100 
    169.254.169.254 via 192.168.0.254 dev eth0 proto dhcp metric 100 
    192.168.0.0/24 dev eth0 proto kernel scope link src 192.168.0.9 metric 100
    
    • 查看指定IP以及网络掩码的路由表
    [root@ecs-centos-7 ~]# ip r list 192.168.0.0/24
    192.168.0.0/24 dev eth0 proto kernel scope link src 192.168.0.9 metric 100 
    

    查看ARP缓存

    ARP是 Address Resolution Protocol 的缩写, 全称是地址解析协议,它是用于实现从IP地址到Mac地址的映射,也就是询问目标IP的Mac地址

    在本地存储了一份IP对应Mac地址的映射表,这张表叫做 ARP缓存表,可以使用 ip n 命令查看缓存表

    [root@ecs-centos-7 ~]# ip n
    192.168.0.1 dev eth0 lladdr fa:16:3e:64:38:a8 REACHABLE
    192.168.0.254 dev eth0 lladdr fa:fa:fa:fa:fa:01 STALE
    

    更改网卡Mac地址

    大部分场景中是不需要修改Mac地址的,但有时你可能想隐藏真实的Mac地址(物理地址),这时可以修改Mac地址,修改Mac地址的命令如下

    ip link set dev 接口名 address 新的Mac地址
    

    下面以修改 lo 网络接口的Mac地址为例来说明

    [root@ecs-centos-7 ~]# ip l list lo
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    
    [root@ecs-centos-7 ~]# ip l set lo address fa:16:3e:e0:4f:b4
    [root@ecs-centos-7 ~]# ip l list lo
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
        link/loopback fa:16:3e:e0:4f:b4 brd 00:00:00:00:00:00
    

    从上面的例子中可以看出,lo接口初始的Mac地址是 00:00:00:00:00:00

    执行 ip l set lo address fa:16:3e:e0:4f:b4 命令修改Mac地址,然后再执行 ip l list lo 查看 lo接口的信息,输出的结果信息表明Mac地址修改成功

    注意:如果当前网络接口上执行上面的命令,当前会话会中断,需要重启机器才能恢复,所以最好是在其他的网络接口上测试

    查看网络统计信息

    通过 ip -s link 命令可以查看网络接口上的一些统计数据,比如接口上传输的字节数、报文数,错误或者丢弃的报文数等等

    [root@ecs-centos-7 ~]# ip -s link
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
        RX: bytes  packets  errors  dropped overrun mcast   
        272        2        0       0       0       0       
        TX: bytes  packets  errors  dropped carrier collsns 
        272        2        0       0       0       0       
    2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
        link/ether fa:16:3e:e0:4f:b8 brd ff:ff:ff:ff:ff:ff
        RX: bytes  packets  errors  dropped overrun mcast   
        47949      531      0       0       0       0       
        TX: bytes  packets  errors  dropped carrier collsns 
        50816      492      0       0       0       0       
    [root@ecs-centos-7 ~]# 
    

    想查看更详细的信息可以使用 ip -s -s link 命令, 这个在排除网络故障时经常用到

    不积跬步,无以至千里;不积小流,无以成江海。
  • 相关阅读:
    SQLAlchemy(2) -- SQLAlchemy的安装
    SQLAlchemy(1) -- Python的SQLAlchemy和ORM
    http-proxy-middleware及express实现反向代理
    Vue项目中的http请求统一管理
    vue.js中如何使用scss
    Vue 相关开源项目库汇总
    Vue UI组件库
    route按需加载的3种方式:vue异步组件、es提案的import()、webpack的require.ensure()
    Npoi Web 项目中(XSSFWorkbook) 导出出现无法访问已关闭的流
    vuejs 和 element 搭建的一个后台管理界面
  • 原文地址:https://www.cnblogs.com/xuezhimin-esage-2020/p/14767911.html
Copyright © 2020-2023  润新知