linux 的 ip 命令和 ifconfig 类似,但前者功能更强大,并旨在取代后者。使用 ip 命令,只需一个命令,你就能很轻松地执行一些网络管理任务。ifconfig 是 net-tools 中已被废弃使用的一个命令,许多年前就已经没有维护了。iproute2 套件里提供了许多增强功能的命令,ip 命令即是其中之一。
Net tools vs Iproute2
要安装 ip,请 点击这里 下载iproute2 套装工具。不过,大多数 Linux 发行版已经预装了 iproute2 工具。
你也可以使用 git 命令来下载最新源代码来编译:
- $ git clone https://kernel.googlesource.com/pub/scm/linux/kernel/git/shemminger/iproute2.git
iproute2 git clone
设置和删除 Ip 地址
要给你的机器设置一个 IP 地址,可以使用下列 ip 命令:
- $ sudo ip addr add 192.168.0.193/24 dev wlan0
请注意 IP 地址要有一个后缀,比如 /24。这种用法用于在无类域内路由选择(CIDR)中来显示所用的子网掩码。在这个例子中,子网掩码是 255.255.255.0。
在你按照上述方式设置好 IP 地址后,需要查看是否已经生效。
- $ ip addr show wlan0
set ip address
你也可以使用相同的方式来删除 IP 地址,只需用 del 代替 add。
- $ sudo ip addr del 192.168.0.193/24 dev wlan0
delete ip address
列出路由表条目
ip 命令的路由对象的参数还可以帮助你查看网络中的路由数据,并设置你的路由表。第一个条目是默认的路由条目,你可以随意改动它。
在这个例子中,有几个路由条目。这个结果显示有几个设备通过不同的网络接口连接起来。它们包括 WIFI、以太网和一个点对点连接。
- $ ip route show
ip route show
假设现在你有一个 IP 地址,你需要知道路由包从哪里来。可以使用下面的路由选项(译注:列出了路由所使用的接口等):
- $ ip route get 10.42.0.47
ip route get
更改默认路由
要更改默认路由,使用下面 ip 命令:
- $ sudo ip route add default via 192.168.0.196
default route
显示网络统计数据
使用 ip 命令还可以显示不同网络接口的统计数据。
ip statistics all interfaces
当你需要获取一个特定网络接口的信息时,在网络接口名字后面添加选项 ls 即可。使用多个选项 -s 会给你这个特定接口更详细的信息。特别是在排除网络连接故障时,这会非常有用。
- $ ip –s –s link ls p2p1
ip link statistics
ARP 条目
地址解析协议(ARP)用于将一个 IP 地址转换成它对应的物理地址,也就是通常所说的 MAC 地址。使用 ip 命令的 neigh 或者 neighbour 选项,你可以查看接入你所在的局域网的设备的 MAC 地址。
- $ ip neighbour
ip neighbour
监控 netlink 消息
也可以使用 ip 命令查看 netlink 消息。monitor 选项允许你查看网络设备的状态。比如,所在局域网的一台电脑根据它的状态可以被分类成 REACHABLE 或者 STALE。使用下面的命令:
- $ ip monitor all
ip monitor all
激活和停止网络接口
你可以使用 ip 命令的 up 和 down 选项来激某个特定的接口,就像 ifconfig 的用法一样。
在这个例子中,当 ppp0 接口被激活和在它被停止和再次激活之后,你可以看到相应的路由表条目。这个接口可能是 wlan0 或者 eth0。将 ppp0 更改为你可用的任意接口即可。
- $ sudo ip link set ppp0 down
- $ sudo ip link set ppp0 up
ip link set up and down
获取帮助
当你陷入困境,不知道某一个特定的选项怎么用的时候,你可以使用 help 选项。man 页面并不会提供许多关于如何使用 ip 选项的信息,因此这里就是获取帮助的地方。
比如,想知道关于 route 选项更多的信息:
- $ ip route help
ip route help
小结
对于网络管理员们和所有的 Linux 使用者们,ip 命令是必备工具。是时候抛弃 ifconfig 命令了,特别是当你写脚本时。