放弃 ifconfig,拥抱 ip 命令

开始使用现代方法配置 linux 网络接口 。

放弃 ifconfig,拥抱 ip 命令

文章插图
在很长一段时间内,ifconfig命令是配置网络接口的默认方法 。它为 Linux 用户提供了很好的服务,但是网络很复杂,所以配置网络的命令必须健壮 。ip命令是现代系统中新的默认网络命令,在本文中,我将向你展示如何使用它 。
ip命令工作在OSI 网络栈的两个层上:第二层(数据链路层)和第三层(网络 或 IP)层 。它做了之前net-tools包的所有工作 。
 
安装 ipip命令包含在iproute2util包中,它可能已经在你的 Linux 发行版中安装了 。如果没有,你可以从发行版的仓库中进行安装 。
 
ifconfig 和 ip 使用对比ipifconfig命令都可以用来配置网络接口,但它们做事方法不同 。接下来,作为对比,我将用它们来执行一些常见的任务 。
 
查看网口和 IP 地址如果你想查看主机的 IP 地址或网络接口信息,ifconfig(不带任何参数)命令提供了一个很好的总结 。
$ ifconfigeth0: flags=4099新的 ip命令提供了类似的结果,但命令是ip address show,或者简写为ip a:
$ ip a1: lo:  
添加 IP 地址使用 ifconfig命令添加 IP 地址命令为:
$ ifconfig eth0 add 192.9.203.21ip类似:
$ ip address add 192.9.203.21 dev eth0ip中的子命令可以缩短,所以下面这个命令同样有效:
$ ip addr add 192.9.203.21 dev eth0你甚至可以更短些:
$ ip a add 192.9.203.21 dev eth0 
移除一个 IP 地址添加 IP 地址与删除 IP 地址正好相反 。
使用 ifconfig,命令是:
$ ifconfig eth0 del 192.9.203.21ip命令的语法是:
$ ip a del 192.9.203.21 dev eth0 
启用或禁用组播使用 ifconfig接口来启用或禁用组播multicast:
# ifconfig eth0 multicast对于 ip,使用set子命令与设备(dev)以及一个布尔值和multicast选项:
# ip link set dev eth0 multicast on 
启用或禁用网络【放弃 ifconfig,拥抱 ip 命令】每个系统管理员都熟悉“先关闭,然后打开”这个技巧来解决问题 。对于网络接口来说,即打开或关闭网络 。
ifconfig命令使用updown关键字来实现:
# ifconfig eth0 up或者你可以使用一个专用命令:
# ifup eth0ip命令使用set子命令将网络设置为updown状态:
# ip link set eth0 up 
开启或关闭地址解析功能(ARP)使用 ifconfig,你可以通过声明它来启用:
# ifconfig eth0 arp使用 ip,你可以将arp属性设置为onoff
# ip link set dev eth0 arp on 
ip 和 ipconfig 的优缺点ip命令比ifconfig更通用,技术上也更有效,因为它使用的是Netlink套接字,而不是ioctl系统调用 。
ip命令可能看起来比ifconfig更详细、更复杂,但这是它拥有更多功能的一个原因 。一旦你开始使用它,你会了解它的内部逻辑(例如,使用set而不是看起来随意混合的声明或设置) 。
最后,ifconfig已经过时了(例如,它缺乏对网络命名空间的支持),而ip是为现代网络而生的 。尝试并学习它,使用它,你会由衷高兴的!
via: https://opensource.com/article/21/1/ifconfig-ip-linux
作者:Rajan Bhardwaj选题:lujun9972译者:MjSeven校对:wxy
本文由 LCTT原创编译,Linux中国荣誉推出




    推荐阅读