原文:http://blog.csdn.net/kevin3101/article/details/52368860

Linux的ip命令和ifconfig类似,但前者功能更强大,并旨在取代后者。使用ip命令,只需一个命令,你就能很轻松地执行一些网络管理任务。ifconfig是net-tools中已被废弃使用的一个命令,许多年前就已经没有维护了。iproute2套件里提供了许多增强功能的命令,ip命令即是其中之一。

Net tools vs Iproute2

要安装ip,请点击这里下载iproute2套装工具 。不过,大多数Linux发行版已经预装了iproute2工具。

你也可以使用Git命令来下载最新源代码来编译:

  1. $ git clone https://kernel.googlesource.com/pub/scm/linux/kernel/git/shemminger/iproute2.git

iproute2 git clone

设置和删除Ip地址

一、ifconfig与IP

1、ifconfig添加或修改原IP

ifconfig eth0 192.168.10.199  或
ifconfig eth0 192.168.10.199 netmask 255.255.255.0 up
ifconfig eth0:1 192.168.10.198 netmask 255.255.255.0 up

注:以上两台效果是一样的,上面一种写法是下面一种写法的减缩版。如果eth0上之前已经配置这IP,该配置会将原来的IP清掉,换成上面配置的IP,但在远程ssh时最好不要使用该方法,因为网络环境不同。一旦更改不生效,就要跑到机房再进行配置。

2、禁用启用网卡

ifconfig eth0 down
ifconfig eth0 up

该用法,是不是和ifup eth0、ifdown eth0:1很像?

注:当一块网卡上配置多个IP时,如eth0、eth0:1时,如果禁掉eth0:1时,eth0上的网卡配置依然生效。但禁掉直接物理网卡口时(即eth0)时,其后面配置的IP (eth0:1等)都将被删除掉。另外,ifconfig 还可以用于设置mtu和设置网卡的混杂模式:

ifconfig eth0 mtu 1472
利用netstat -i查看
将eth0设置成混杂模式
ifconfig eth0 promisc
取消混杂
ifconfig eth0 -promisc 

3、修改网卡mac地址:

ifconfig eth0 hw ether xx:xx:xx:xx:xx:xx

ifconfig查看的信息里,经常被我们忽视的第三行非常有用,如在没有mii-tool工具时,可以通过其查看网卡连接状态。

UP(代表网卡开启状态)RUNNING(代表网卡的网线被接上)MULTICAST(支持组播)MTU:1500(最大传输单元):1500字节

二、ip命令与IP

ip是iproute2软件包里面的一个强大的网络配置工具,它能够替代一些传统的网络管理工具,例如ifconfig、route等,使用权限为超级用户。

1、ip命令添加一个IP地址:

[root@localhost ~]# ip addr add 192.168.10.198/24 dev eth0:1
[root@localhost ~]# ip addr add 192.168.10.199/24 dev eth0
[root@localhost ~]# ip -f inet addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueueinet 127.0.0.1/8 scope host lo
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000inet 192.168.10.26/24 brd 192.168.10.255 scope global eth0inet 192.168.10.198/24 scope global secondary eth0inet 192.168.10.199/24 scope global secondary eth0
[root@localhost ~]# ip addr add 192.168.10.200/24 dev eth0:3
[root@localhost ~]# ip -f inet addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueueinet 127.0.0.1/8 scope host lo
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000inet 192.168.10.26/24 brd 192.168.10.255 scope global eth0inet 192.168.10.198/24 scope global secondary eth0inet 192.168.10.199/24 scope global secondary eth0inet 192.168.10.200/24 scope global secondary eth0

当然,上面的增加地址的写法,我们也可以使用以下两种方式增加,不过由于没有上面的写法容易记,我平时很少会用下面的方式增加:

ip addr add local 192.168.4.1/28 brd + label eth0:1 dev eth0
ip addr add 192.168.4.2/24 brd + dev eth1 label eth1:1

由上面的操作命令不难看出,随便我们怎么去添加IP,后面的设备名无论是eth0、eth0:1、eth0:100也好,其都不会将原网卡上绑定的地址给清掉。其通过ip addr show 显示的出的结果都是secondary eth0 。

注:ip addr命令增加的IP ,不能通过ifconfig查看到,也不能通过ifconfig eth0:1 down 或ifdown eth0:1 这样的方式停掉。

2、ip命令删除一个IP

[root@localhost ~]# ip addr del 192.168.10.200
Not enough information: "dev" argument is required.
[root@localhost ~]# ip addr del 192.168.10.200 dev eth0
Warning: Executing wildcard deletion to stay compatible with old scripts.Explicitly specify the prefix length (192.168.10.200/32) to avoid this warning.This special behaviour is likely to disappear in further releases,fix your scripts!
[root@localhost ~]# ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueuelink/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host loinet6 ::1/128 scope hostvalid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000link/ether 40:61:86:98:95:05 brd ff:ff:ff:ff:ff:ffinet 192.168.10.26/24 brd 192.168.10.255 scope global eth0inet 192.168.10.198/24 scope global secondary eth0inet 192.168.10.199/24 scope global secondary eth0inet6 fe80::4261:86ff:fe98:9505/64 scope linkvalid_lft forever preferred_lft forever
3: sit0: <NOARP> mtu 1480 qdisc nooplink/sit 0.0.0.0 brd 0.0.0.0
[root@localhost ~]# ip addr del 192.168.10.199/24 dev eth0 

在不加掩码删除时,其会提示警告,但还是可以将其地址删掉。

要给你的机器设置一个IP地址,可以使用下列ip命令:

  1. $ sudo ip addr add 192.168.0.193/24 dev wlan0

请注意IP地址要有一个后缀,比如/24。这种用法用于在无类域内路由选择(CIDR)中来显示所用的子网掩码。在这个例子中,子网掩码是255.255.255.0。

在你按照上述方式设置好IP地址后,需要查看是否已经生效。

  1. $ ip addr show wlan0

set ip address

你也可以使用相同的方式来删除IP地址,只需用del代替add。

  1. $ sudo ip addr del 192.168.0.193/24 dev wlan0

delete ip address

列出路由表条目

ip命令的路由对象的参数还可以帮助你查看网络中的路由数据,并设置你的路由表。第一个条目是默认的路由条目,你可以随意改动它。

在这个例子中,有几个路由条目。这个结果显示有几个设备通过不同的网络接口连接起来。它们包括WIFI、以太网和一个点对点连接。

  1. $ ip route show

ip route show

假设现在你有一个IP地址,你需要知道路由包从哪里来。可以使用下面的路由选项(译注:列出了路由所使用的接口等):

  1. $ ip route get 10.42.0.47

ip route get

更改默认路由

要更改默认路由,使用下面ip命令:

  1. $ sudo ip route add default via 192.168.0.196

default route

显示网络统计数据

使用ip命令还可以显示不同网络接口的统计数据。

ip statistics all interfaces

当你需要获取一个特定网络接口的信息时,在网络接口名字后面添加选项ls即可。使用多个选项-s会给你这个特定接口更详细的信息。特别是在排除网络连接故障时,这会非常有用。

  1. $ ip -s -s link ls p2p1

ip link statistics

ARP条目

地址解析协议(ARP)用于将一个IP地址转换成它对应的物理地址,也就是通常所说的MAC地址。使用ip命令的neigh或者neighbour选项,你可以查看接入你所在的局域网的设备的MAC地址。

  1. $ ip neighbour

ip neighbour

监控netlink消息

也可以使用ip命令查看netlink消息。monitor选项允许你查看网络设备的状态。比如,所在局域网的一台电脑根据它的状态可以被分类成REACHABLE或者STALE。使用下面的命令:

  1. $ ip monitor all

ip monitor all

激活和停止网络接口

你可以使用ip命令的up和down选项来激某个特定的接口,就像ifconfig的用法一样。

在这个例子中,当ppp0接口被激活和在它被停止和再次激活之后,你可以看到相应的路由表条目。这个接口可能是wlan0或者eth0。将ppp0更改为你可用的任意接口即可。

  1. $ sudo ip link set ppp0 down
  2. $ sudo ip link set ppp0 up

ip link set up and down

获取帮助

当你陷入困境,不知道某一个特定的选项怎么用的时候,你可以使用help选项。man页面并不会提供许多关于如何使用ip选项的信息,因此这里就是获取帮助的地方。

比如,想知道关于route选项更多的信息:

  1. $ ip route help

ip route help

小结

对于网络管理员们和所有的Linux使用者们,ip命令是必备工具。是时候抛弃ifconfig命令了,特别是当你写脚本时。

iproute2 对决 net-tools

https://linux.cn/article-4326-1.html

显示所有已连接的网络接口

下面的命令显示出所有可用网络接口的列表(无论接口是否激活)。

使用net-tools:

  1. $ ifconfig -a

使用iproute2:

  1. $ ip link show

激活或停用网络接口

使用这些命令来激活或停用某个指定的网络接口。

使用net-tools:

  1. $ sudo ifconfig eth1 up
  2. $ sudo ifconfig eth1 down

使用iproute2:

  1. $ sudo ip link set down eth1
  2. $ sudo ip link set up eth1

为网络接口分配IPv4地址

使用这些命令配置网络接口的IPv4地址。

使用net-tools:

  1. $ sudo ifconfig eth1 10.0.0.1/24

使用iproute2:

  1. $ sudo ip addr add 10.0.0.1/24 dev eth1

值得注意的是,可以使用iproute2给同一个接口分配多个IP地址,ifconfig则无法这么做。使用ifconfig的变通方案是使用IP别名。

  1. $ sudo ip addr add 10.0.0.1/24 broadcast 10.0.0.255 dev eth1
  2. $ sudo ip addr add 10.0.0.2/24 broadcast 10.0.0.255 dev eth1
  3. $ sudo ip addr add 10.0.0.3/24 broadcast 10.0.0.255 dev eth1

移除网络接口的IPv4地址

就IP地址的移除而言,除了给接口分配全0地址外,net-tools没有提供任何合适的方法来移除网络接口的IPv4地址。相反,iproute2则能很好地完全。

使用net-tools:

  1. $ sudo ifconfig eth1 0

使用iproute2:

  1. $ sudo ip addr del 10.0.0.1/24 dev eth1

显示网络接口的IPv4地址

按照如下操作可查看某个指定网络接口的IPv4地址。

使用net-tools:

  1. $ ifconfig eth1

使用iproute2:

  1. $ ip addr show dev eth1

同样,如果接口分配了多个IP地址,iproute2会显示出所有地址,而net-tools只能显示一个IP地址。

为网络接口分配IPv6地址

使用这些命令为网络接口添加IPv6地址。net-tools和iproute2都允许用户为一个接口添加多个IPv6地址。

使用net-tools:

  1. $ sudo ifconfig eth1 inet6 add 2002:0db5:0:f102::1/64
  2. $ sudo ifconfig eth1 inet6 add 2003:0db5:0:f102::1/64

使用iproute2:

  1. $ sudo ip -6 addr add 2002:0db5:0:f102::1/64 dev eth1
  2. $ sudo ip -6 addr add 2003:0db5:0:f102::1/64 dev eth1

显示网络接口的IPv6地址

按照如下操作可显示某个指定网络接口的IPv6地址。net-tools和iproute2都可以显示出所有已分配的IPv6地址。

使用net-tools:

  1. $ ifconfig eth1

使用iproute2:

  1. $ ip -6 addr show dev eth1

移除网络设备的IPv6地址

使用这些命令可移除接口中不必要的IPv6地址。

使用net-tools:

  1. $ sudo ifconfig eth1 inet6 del 2002:0db5:0:f102::1/64

使用iproute2:

  1. $ sudo ip -6 addr del 2002:0db5:0:f102::1/64 dev eth1

改变网络接口的MAC地址

使用下面的命令可篡改网络接口的MAC地址,请注意在更改MAC地址前,需要停用接口。

使用net-tools:

  1. $ sudo ifconfig eth1 hw ether 08:00:27:75:2a:66

使用iproute2:

  1. $ sudo ip link set dev eth1 address 08:00:27:75:2a:67

查看IP路由表

net-tools中有两个选择来显示内核的IP路由表:route和netstat。在iproute2中,使用命令ip route。

使用net-tools:

  1. $ route -n

  1. $ netstat -rn

使用iproute2:

  1. $ ip route show

添加和修改默认路由

这里的命令用来添加或修改内核IP路由表中的默认路由规则。请注意在net-tools中可通过添加新的默认路由、删除旧的默认路由来实现修改默认路由。在iproute2使用ip route命令来代替。

使用net-tools:

  1. $ sudo route add default gw 192.168.1.2 eth0
  2. $ sudo route del default gw 192.168.1.1 eth0

使用iproute2:

  1. $ sudo ip route add default via 192.168.1.2 dev eth0
  2. $ sudo ip route replace default via 192.168.1.2 dev eth0

添加和移除静态路由

使用下面命令添加或移除一个静态路由。

使用net-tools:

  1. $ sudo route add -net 172.16.32.0/24 gw 192.168.1.1 dev eth0
  2. $ sudo route del -net 172.16.32.0/24

使用iproute2:

  1. $ sudo ip route add 172.16.32.0/24 via 192.168.1.1 dev eth0
  2. $ sudo ip route del 172.16.32.0/24

查看套接字统计信息

这里的命令用来查看套接字统计信息(比如活跃或监听状态的TCP/UDP套接字)。

使用net-tools:

  1. $ netstat
  2. $ netstat -l

使用iproute2:

  1. $ ss
  2. $ ss -l

查看ARP表

使用这些命令显示内核的ARP表。

使用net-tools:

  1. $ arp -an

使用iproute2:

  1. $ ip neigh

添加或删除静态ARP项

按照如下操作在本地ARP表中添加或删除一个静态ARP项。

使用net-tools:

  1. $ sudo arp -s 192.168.1.100 00:0c:29:c0:5a:ef
  2. $ sudo arp -d 192.168.1.100

使用iproute2:

  1. $ sudo ip neigh add 192.168.1.100 lladdr 00:0c:29:c0:5a:ef dev eth0
  2. $ sudo ip neigh del 192.168.1.100 dev eth0

添加、删除或查看多播地址

使用下面的命令配置或查看网络接口上的多播地址。

使用net-tools:

  1. $ sudo ipmaddr add 33:44:00:00:00:01 dev eth0
  2. $ sudo ipmaddr del 33:44:00:00:00:01 dev eth0
  3. $ ipmaddr show dev eth0
  4. $ netstat -g

使用iproute2:

  1. $ sudo ip maddr add 33:44:00:00:00:01 dev eth0
  2. $ sudo ip maddr del 33:44:00:00:00:01 dev eth0
  3. $ ip maddr list dev eth0

via: http://xmodulo.com/2014/09/linux-tcpip-networking-net-tools-iproute2.html

Linux TCP/IP 网络工具对比:net-tools 和 iproute2相关推荐

  1. Linux TCP/IP网络协议栈:IP协议源码分析

    目录 IP协议简介 IP头部 IP数据包的发送 IP数据包的接收 https://mp.weixin.qq.com/s/8WNcTxtD4DBcNtcrR8nz4Q IP协议 是网络的最重要部分,毫不 ...

  2. Linux命令:netstat【监控TCP/IP网络,可以显示路由表、实际的网络连接以及每一个网络接口设备的状态信息】【TCP的11种状态】

    netstat命令是一个监控TCP/IP网络的非常有用的工具,它可以显示路由表.实际的网络连接以及每一个网络接口设备的状态信息. netstat [选项] 选项 描述 -a 显示所有网络连接和监听的所 ...

  3. TCP/IP网络协议栈在Linux内核中的如何使用丨内核开发丨驱动开发丨操作系统丨内核源码

    TCP/IP网络协议栈在Linux内核中的如何使用 视频讲解如下,点击观看: TCP/IP网络协议栈在Linux内核中的如何使用丨内核开发丨驱动开发丨操作系统丨内核源码 C/C++Linux服务器开发 ...

  4. 监控TCP/IP网络的工具netstat介绍

    说明 netstat命令是一个监控TCP/IP网络的非常有用的工具,它可以显示路由表.实际的网络连接以及每一个网络接口设备的状态信息,以及与IP.TCP.UDP和ICMP协议相关的统计数据,一般用于检 ...

  5. TCP/IP网络编程---Linux系统下的TCP套接字编程

    目录 第一章 理解网络编程和套接字 1.1 网络编程和套接字概要 1.2 基于Linux的文件操作 1.2.1 底层文件访问和文件描述符 1.2.2 打开文件 1.2.3 关闭文件 1.2.4 将数据 ...

  6. linux tcp压测工具,02.监控和压测工具 - 2.4.压测工具 - 《Linux性能调优指南》 - 书栈网 · BookStack...

    压测工具其它有用工具 在这里,我们会讨论主要的压力测试工具,选择合适的压测工具,才能准确衡量系统性能.好的压测工具有很多,可能的功能如下: 发起压力 监控性能 监控系统使用率 生成报告 基准测试无非就 ...

  7. TCP/IP网络编程(1)

    1. 套接字 套接字是由操作系统提供的网络数据通信软件设备,即使对网络数据传输原理不了解,也能够使用套接字完成网络数据传输.为了与远程计算机进行数据传输,需要连接到英特网,套接字就是进行网络连接的工具 ...

  8. TCP/IP网络编程(一)

    TCP/IP网络编程读书笔记 第1章 理解网络编程和套接字 1.1 理解网络编程和套接字 1.1.1 构建打电话套接字 1.1.2 编写 Hello World 套接字程序 1.2 基于Linux的文 ...

  9. 《TCP/IP 网络编程》笔记

    本文主要基于<TCP/IP 网络编程>这本书进行总结,主要针对 Linux 网络编程部分进行阐述,Windows 网络编程部分有需要建议阅读原书籍. 一.基础知识 网络编程 网络编程就是编 ...

  10. 【TCP/IP网络协议】(五)传输层UDP协议

    文章目录 传输层协议 一.端口 二.UDP概述 三.UDP报文 四.程序测试 传输层协议 从之前介绍的网络层协议来看,通信的两端是两台主机,IP数据报首部就标明了这两台主机的IP地址,但是从传输层来看 ...

最新文章

  1. 多目标跟踪:监控领域你必须要了解的算法
  2. 新发传染病临床案例研究 Emerging Infectious Diseases. Clinical Case Studies
  3. ubuntu下Anaconda安装gym包
  4. CDN边缘JavaScript敏捷交付实践
  5. ASP.NET Core 源码学习之 Options[3]:IOptionsSnapshot
  6. 产品铭牌要求_AMPULM:电力变压器铭牌有哪些主要技术参数,你都知道吗?
  7. html锚点反向联动,小程序菜单左右联动
  8. Java之IO操作总结
  9. 11gR2 RAC时间同异常导致节点down掉问题处理
  10. 【译】用 Chrome 开发者工具以及 react 16 版本分析性能
  11. 使用nginx做反代时遇到413 Request Entity Too Large的解决方法
  12. 计算机视觉(二)图像分类
  13. 笔试面试题:25匹赛马,5个跑道,每次有5匹马可以同时比赛。问最少比赛多少次可以知道跑得最快的5匹马
  14. 监控工具普罗米修斯(Prometheus)的介绍与安装
  15. 如何使用iAd在应用程序中展示Banne…
  16. 利用线性回归实现股票预测分析
  17. 工具 | Axiom FFmpeg压缩视频教程
  18. 配置文件和yaml语法
  19. CSS:CSS层叠样式表的概述
  20. [Dubbo新闻]--Dubbo正式进入Apache孵化器,开启开源新时代

热门文章

  1. php 生成会员卡号,PHP编程:PHP实现生成唯一会员卡号
  2. 【C语言取反运算符】~2是多少?~-5是多少?
  3. html 重复执行函数,javascript延时重复执行函数 lLoopRun.js
  4. 全球首个用户分享区块链+AI大数据体系,专业跨境医疗机构“海医通”发布XMC“海医链”
  5. 研究生生存指南之论文
  6. 单片机ADC0808,DAC0832信号发生器
  7. 通过命名空间快速定位SAP UI5工程名称
  8. C#:Access数据库的连接、读取,字段的增加、删除、更新、查询操作
  9. cdr通用稳定高性能版本 且兼容win10
  10. 【Windows】treamview完全卸载