放弃 ifconfig,拥抱 ip 命令
创始人
2024-03-02 06:37:25
0

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

在很长一段时间内,ifconfig 命令是配置网络接口的默认方法。它为 Linux 用户提供了很好的服务,但是网络很复杂,所以配置网络的命令必须健壮。ip 命令是现代系统中新的默认网络命令,在本文中,我将向你展示如何使用它。

ip 命令工作在 OSI 网络栈 的两个层上:第二层(数据链路层)和第三层(网络 或 IP)层。它做了之前 net-tools 包的所有工作。

安装 ip

ip 命令包含在 iproute2util 包中,它可能已经在你的 Linux 发行版中安装了。如果没有,你可以从发行版的仓库中进行安装。

ifconfig 和 ip 使用对比

ipifconfig 命令都可以用来配置网络接口,但它们做事方法不同。接下来,作为对比,我将用它们来执行一些常见的任务。

查看网口和 IP 地址

如果你想查看主机的 IP 地址或网络接口信息,ifconfig (不带任何参数)命令提供了一个很好的总结。

$ ifconfig
                                                                                                
eth0: flags=4099  mtu 1500                                                                 
       ether bc:ee:7b:5e:7d:d8  txqueuelen 1000  (Ethernet)                                                       
       RX packets 0  bytes 0 (0.0 B)
       RX errors 0  dropped 0  overruns 0  frame 0
       TX packets 0  bytes 0 (0.0 B)
       TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73  mtu 65536
       inet 127.0.0.1  netmask 255.0.0.0
       inet6 ::1  prefixlen 128  scopeid 0x10
       loop  txqueuelen 1000  (Local Loopback)
       RX packets 41  bytes 5551 (5.4 KiB)
       RX errors 0  dropped 0  overruns 0  frame 0
       TX packets 41  bytes 5551 (5.4 KiB)
       TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

wlan0: flags=4163  mtu 1500
       inet 10.1.1.6  netmask 255.255.255.224  broadcast 10.1.1.31
       inet6 fdb4:f58e:49f:4900:d46d:146b:b16:7212  prefixlen 64  scopeid 0x0
       inet6 fe80::8eb3:4bc0:7cbb:59e8  prefixlen 64  scopeid 0x20
       ether 08:71:90:81:1e:b5  txqueuelen 1000  (Ethernet)
       RX packets 569459  bytes 779147444 (743.0 MiB)
       RX errors 0  dropped 0  overruns 0  frame 0
       TX packets 302882  bytes 38131213 (36.3 MiB)
       TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

新的 ip 命令提供了类似的结果,但命令是 ip address show,或者简写为 ip a:

$ ip a

1: lo:  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:  mtu 1500 qdisc pfifo_fast state DOWN group default qlen 1000
   link/ether bc:ee:7b:5e:7d:d8 brd ff:ff:ff:ff:ff:ff
3: wlan0:  mtu 1500 qdisc noqueue state UP group default qlen 1000
   link/ether 08:71:90:81:1e:b5 brd ff:ff:ff:ff:ff:ff
   inet 10.1.1.6/27 brd 10.1.1.31 scope global dynamic wlan0
      valid_lft 83490sec preferred_lft 83490sec
   inet6 fdb4:f58e:49f:4900:d46d:146b:b16:7212/64 scope global noprefixroute dynamic  
      valid_lft 6909sec preferred_lft 3309sec
   inet6 fe80::8eb3:4bc0:7cbb:59e8/64 scope link  
      valid_lft forever preferred_lft forever

添加 IP 地址

使用 ifconfig 命令添加 IP 地址命令为:

$ ifconfig eth0 add 192.9.203.21

ip 类似:

$ ip address add 192.9.203.21 dev eth0

ip 中的子命令可以缩短,所以下面这个命令同样有效:

$ 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.21

ip 命令的语法是:

$ 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 命令使用 updown 关键字来实现:

# ifconfig eth0 up

或者你可以使用一个专用命令:

# ifup eth0

ip 命令使用 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中国 荣誉推出

相关内容

Momenta港股IPO证...
在新能源汽车市场中,速度曾经一度被认为是新势力的专属标签。谁能更快...
2026-06-23 10:53:44
某国家机关工作人员使用开源...
今天, “保密观”发文—— 近年来,人工智能技术飞速发展,各类AI...
2026-06-23 07:52:51
【一周连连看】推动大模型从...
Hi,假期快乐。 本周,你将看到: 1、AI暑期营火了 2、硅谷,...
2026-06-21 20:19:17
苹果iOS / macOS...
IT之家 6 月 9 日消息,在今天的 WWDC26 上,苹果正式...
2026-06-20 16:53:15
KernelScript ...
IT之家 5 月 26 日消息,科技媒体 Linuxiac 昨日(...
2026-05-26 14:39:31
这次我真心推荐苹果 AI
今年的「全球无障碍宣传日」,苹果照例抢先官宣了将在下随 iOS 2...
2026-05-25 15:58:36

热门资讯

“Linux 中国” 开源社区... 这是一个艰难的决定 —— 这不是调侃,而是当你真正做出改变了你十几年生活轨迹的决定时,你就会明白这个...
硬核观察 #1263 德国铁路... #1 德国铁路公司招聘 Windows for Workgroups 3.11 管理员该职位要求了解...
人工智能教程(七):Sciki... 在本系列的 上一篇文章 中,我们用 TensorFlow 构建了第一个神经网络,然后还通过 Kera...
关闭 WSL 中正在运行的 L... 以下是使用 WSL 关闭在 Windows 内运行的 Linux 系统的不同方法。你使用 WSL 在...
MX Linux 23.2 “... 最新的 MX Linux 23.2 小版本更新带来了基本的改进和新增功能。MX Linux 推出了 ...
硬核观察 #1262 网络上最... #1 网络上最古老的软件存档库之一即将关闭美国新墨西哥州立大学(NMSU)最近宣布,即将于 2024...
如何在 RHEL 上通过绑定配... 在 Linux 中,你可以根据自己的需要创建高级网络设置,如 网络绑定 Network Bondin...
Linux Matrix 消息... Matrix 用户可以升级 Fractal 6 了!Fractal 是目前 最好的 Matrix 客...
如何通过 VLC 使用字幕 使用 VLC 媒体播放器播放和管理字幕的新手指南。我是一个超级动漫迷,如果你想观看最新的剧集,那么你...
硬核观察 #1261 X 计划... #1 X 计划在奥斯汀建立内容审核总部据报道,该部门将招聘 100 名全职员工,将主要关注 CSE ...