Linux 中如何使用 IP 命令
老版本的 Linux 中都是使用 ifconfig
命令检查和配置网络接口,但是该命令目前已经没有维护了,取而代之的是 ip
命令
ip
命令和 ifconfig
命令很相似,但是 相比起来,ip
命令的功能更强大,它能执行多种 ifconfig
命令无法执行的任务
本文将介绍 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
命令, 这个在排除网络故障时经常用到
小结
本文介绍了ip
命令的常见用法,更多的用法请使用 man ip
命令查看
Linux 中如何使用 IP 命令的更多相关文章
- Linux:Day11(下) ip命令及配置文件方式
配置Linux网络属性:ip命令 ip [ OPTIONS ] OBJECT { COMMAND | help } OBJECT := { link | addr | route } link OBJ ...
- Linux中如何配置IP相关文件
Linux中如何配置IP 与网络相关的文件:1) /etc/sysconfig/network 设置主机名称及能否启动Network2) /etc/sysconfig/network-script ...
- [转帖]「日常小记」linux中强大且常用命令:find、grep
「日常小记」linux中强大且常用命令:find.grep https://zhuanlan.zhihu.com/p/74379265 在linux下面工作,有些命令能够大大提高效率.本文就向大家介绍 ...
- 在linux中设置静态ip地址
在linux中设置静态ip地址1.在终端中输入:vi /etc/sysconfig/network-scripts/ifcfg-eth0 2.开始编辑,填写ip地址.子网掩码.网关.DNS等[root ...
- 【日常小记】linux中强大且常用命令:find、grep【转】
转自:http://www.cnblogs.com/skynet/archive/2010/12/25/1916873.html 在linux下面工作,有些命令能够大大提高效率.本文就向大家介绍fin ...
- Linux 中强大且常用命令:find、grep
在linux下面工作,有些命令能够大大提高效率.本文就向大家介绍find.grep命令,他哥俩可以算是必会的linux命令,我几乎每天都要用到他们.本文结构如下: find命令 f ...
- 【转载】Linux中强大且常用命令:find、grep
转载自:http://www.linuxeden.com/html/softuse/20130804/142065.html 在linux下面工作,有些命令能够大大提高效率.本文就向大家介绍find. ...
- Linux中mod相关的命令 内核模块化 mod相关命令都是用来动态加载内核模块/驱动程序模块
Linux中mod相关的命令 内核模块化 mod相关命令都是用来动态加载内核模块/驱动程序模块 http://baike.baidu.com/link?url=lxiKxFvYm-UfJIxMjz ...
- linux中强大且常用命令:find、grep
在linux下面工作,有些命令能够大大提高效率.本文就向大家介绍find.grep命令,他哥俩可以算是必会的linux命令,我几乎每天都要用到他们. 本文结构如下: find命令 find命令的一般形 ...
随机推荐
- python对一个文本的解析
# 定义Tag的签注 controlAreaStart ="<ControlArea::黄冈>" controlAreaEnd = "</Control ...
- Vue ElementUI表格table中使用select下拉框组件时获取改变之前的值
目前项目中有一个场景,就是表格中显示下拉框,并且下拉框的值可以更改,更改后提交后台更新.因为这个操作比较重要,所以切换时会有一个提示框,提示用户是否修改,是则走提交逻辑,否则直接返回,什么也不做. 之 ...
- 为 .NET 打 Call,为国产平台 Gitee 打 Call,我的 .NET/C# 开源项目清单,同步维护于 Github 和 Gitee
所有项目遵循 MIT 开源协议.可以随意使用,但是需在源代码和产品关于画面保留版权声明和我的网站链接,谢谢. Sheng.Winform.IDE Github:https://github.com/i ...
- DataTable.SELECT日期类型筛选处理
初始化: public DataTable1() { InitializeComponent(); Init(); } private void Init() { dt = new DataTable ...
- 用jar命令打包war远程部署
最近在看jboss的相关漏洞,用jmx-console进行war远程部署的时候碰到一个jsp转war的问题,研究了半天,记录一下免得搞忘了. 一开始网上是说的直接把jsp文件压缩成zip,再把后缀名改 ...
- (原创)在Linux上安装运行Python3(CentOS7为例)
在win10上开发好的python项目要部署在Linux上要面对的问题:怎么在Linux上跑py文件呢? 以Lunix CentOS7.x平台为例,CentOS系统上自带的已有python2.x 的版 ...
- HashMap源码个人解读
HashMap的源码比较复杂,最近也是结合视频以及其余大佬的博客,想着记录一下自己的理解或者当作笔记 JDK1.8后,HashMap底层是数组+链表+红黑树.在这之前都是数组+链表,而改变的原因也就是 ...
- Elasticsearch集群升级指引
目录 背景 第一部分 版本升级指引 第二部分 升级方法和具体步骤 总结 参考文献及资料 背景 Elasticsearch集群的版本升级是一项重要的集群维护工作.本篇文章参考官方文档,将详细介绍相关细节 ...
- 【Python学习笔记】-虚拟环境virtualenv
在开发python应用程序的时候,系统安装的python3只有一个版本:3.4.所有的第三方的包都回被pip安装到python3的site-packages目录下. 如果我们要要同时开发多个应用程序, ...
- python2爬取国家统计局全国省份城市区街道信息
工作中,再次需要python,发现python用得好 ,真的可以节省很多人力,先说我的需求,需要做一个类似像支付宝添加收货地址时,选择地区的功能,需要详细到街道信息,也就是4级联动,如右图.首先需要的 ...