☰
ifconfig命令详解:Ubuntu安装net-tools与ip迁移
2026/10/2 5:15:27 网站建设 项目流程

做运维的人大概都有过这种肌肉记忆:登上服务器,手指先敲ifconfig,回车等着看网卡信息。结果屏幕上冷冷地回一句-bash: ifconfig: command not found。尤其是 Ubuntu 18.04 以后的机器,这个场景几乎人人踩过一次。ifconfig属于 net-tools 工具集,而 net-tools 在主流发行版里已经默认不装了,取而代之的是 iproute2 里的ip命令。但你要说ifconfig就此退休,那也不对——大量老教程、老脚本、老的机房现场操作手册还在用它,而且它输出的可读性对新手确实友好。这篇内容我打算把ifconfig从字段拆解到实操配置完整讲一遍,包括它在新系统上装不上怎么办、怎么看懂那些 RX/TX 数字、怎么临时激活网卡、怎么排查有 UP 状态却没 IP 的怪问题。不管你是刚接触 Linux 网络的新手,还是想把手头老脚本迁移到ip命令的老手,下面这些内容应该都能用得上。

1. 先搞清楚 ifconfig 到底处在什么位置

1.1 它做的事比你想的要多

很多人把ifconfig当成一个"看 IP 的工具",其实它的全称是 interface configuration,职责分两大块:一是查询,把内核里网卡的状态、地址、统计信息读出来展示;二是配置,临时修改网卡的地址、状态、MTU、MAC 等参数。

它的实现方式很直接,通过系统调用向内核的网络设备层发 ioctl 请求,用SIOCGIFCONF拿到接口列表,用SIOCGIFADDR、SIOCGIFFLAGS、SIOCGIFHWADDR这类请求拿到具体的地址和标志位。换句话说,ifconfig自己不维护任何状态,它只是内核信息的一个"翻译层",真正干活的是内核。

理解这一点很关键,因为它解释了一个常见困惑:为什么我用ifconfig配的 IP,重启就没了?答案很简单,你只是改动了内核运行时的内存数据,没写进任何配置文件。想让它持久,得靠 netplan、NetworkManager 或者传统的 interfaces 文件,那是另外一套机制。

另外还有一层:ifconfig看的是内核视角的网络设备,包括物理网卡、回环、虚拟接口、容器网桥、VLAN 子接口等等,只要是内核认得的网络设备,它都列得出来。所以有时候你会在一台 Docker 主机上看到docker0、br-xxxxxxxx、vethxxxx一大堆,那不是有人乱建东西,而是容器运行时自己拉起来的。

1.2 Ubuntu 上敲不出来,原因不复杂

"net-tools 停止维护"这句话你可能在不少地方看到过,但具体是怎么回事值得说清楚。net-tools 这套工具的代码在上世纪九十年代成型,2000 年之后基本处于静止状态,而 Linux 内核网络子系统这二十年变化很大,很多新特性它根本不支持,比如策略路由、网络命名空间、多地址管理、流量控制这些。

与此同时,iproute2 这个项目从 Linux 2.2 内核时代就开始发力,把ifconfig、route、arp、netstat的功能全部重新实现了一遍,并且和内核新特性保持同步。主流发行版在 2010 年前后陆续切换:

发行版 / 版本ifconfig 默认情况备注
CentOS 7自带net-tools 仍在基础包内
CentOS 8 / RHEL 8 及以后不带需要手动装 net-tools
Ubuntu 16.04自带过渡期
Ubuntu 18.04 及以后不带官方推荐 ip 命令
Debian 10 及以后不带同上
Alpine不带基础镜像很小,默认只有 busybox 版

所以在 Ubuntu 上遇到command not found,不是你操作有问题,是时代变了。要装回来也简单:

# Debian / Ubuntu 系 sudo apt update sudo apt install net-tools # RHEL / CentOS / Rocky / Alma 系 sudo yum install net-tools # 或者 sudo dnf install net-tools

装完再敲ifconfig就有了。我个人建议是:生产环境尽量统一到ip命令,但把 net-tools 装上没坏处,很多第三方脚本和监控采集器还在依赖它,尤其是老一代的巡检脚本。两者共存完全没问题,不会冲突。

1.3 ifconfig、ip、nmcli 该怎么选

这三个工具经常被拿来比较,我的实际用法是:临时看一眼用 ifconfig 或 ip,改配置用 nmcli 或 netplan,写脚本一律用 ip。

  • ifconfig:输出排版直观,字段名英文全称,新手一眼能看懂,适合交互式查看。缺点是不支持策略路由、命名空间等,且配置不持久。
  • ip:功能全,语法是"对象+动作"结构(ip addr、ip link、ip route),输出更紧凑,脚本友好。代价是需要记子命令。
  • nmcli:NetworkManager 的命令行前端,改的是持久化配置,适合桌面和服务器上由 NetworkManager 托管的网络。缺点是输出的信息类型和 ifconfig 完全是两个体系。

提示:如果服务器网卡由 NetworkManager 或 netplan 托管,你用ifconfig或ip手动改的地址会被上层管理工具覆盖回去,甚至引发连接中断。改之前先确认是谁在管这块网卡。

2. 把 ifconfig 的输出字段逐个拆开看

2.1 第一行的标志位,含金量最高

先看一段典型输出:

eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.1.20 netmask 255.255.255.0 broadcast 192.168.1.255 inet6 fe80::a00:27ff:fe4e:66a1 prefixlen 64 scopeid 0x20<link> ether 08:00:27:4e:66:a1 txqueuelen 1000 (Ethernet) RX packets 1024 bytes 856320 (856.3 KB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 512 bytes 65536 (65.5 KB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

第一行里flags=4163后面跟的那串是大写标志名,尖括号里是当前置位的标志。数字 4163 是这些标志的位掩码之和,各位的含义如下:

标志十六进制值含义
UP0x1接口已启用,内核准备接收数据
BROADCAST0x2支持广播
DEBUG0x4调试模式
LOOPBACK0x8回环接口
POINTOPOINT0x10点对点链路(如 PPP)
NOTRAILERS0x20不使用尾部封装
RUNNING0x40物理链路已就绪,驱动已启动
NOARP0x80不做 ARP 解析
PROMISC0x100混杂模式,接收所有帧
ALLMULTI0x200接收所有组播
MASTER0x400是绑定(bond)的主接口
SLAVE0x800是绑定(bond)的从接口
MULTICAST0x1000支持组播

拿 4163 验算一下:4163 = 4096 + 64 + 2 + 1,正好对应 MULTICAST(0x1000) + RUNNING(0x40) + BROADCAST(0x2) + UP(0x1)。所以显示的就是<UP,BROADCAST,RUNNING,MULTICAST>。

这里有个实战中非常有用的判断:UP 和 RUNNING 是两回事。UP 说明管理员把接口启用了,RUNNING 说明底层驱动真的把链路拉起来了。如果只看到 UP 看不到 RUNNING,八成是网线没插好、对端交换机端口没开、或者虚拟机的虚拟网卡还没挂上。这个区别在排查"网卡启用了但就是不通"的时候能帮你省很多时间。

MTU 那 1500 是最大传输单元,标准以太网的值。存储网络、容器网络有时候会调大(比如 9000 的 Jumbo Frame),隧道类接口为了留出封装开销通常会调小到 1400 左右。

2.2 inet、netmask、broadcast 这三行其实在说同一件事

inet行给的是 IPv4 地址、子网掩码和广播地址,看起来是三个信息,本质上是同一份配置的不同表达。拿192.168.1.20和255.255.255.0举例:

  • 掩码255.255.255.0展开成二进制是 24 个 1 后面 8 个 0,所以也写作/24。
  • 地址和掩码做按位与运算,主机位全部清零,得到网络号192.168.1.0。
  • 地址的主机位全部置 1,得到广播地址192.168.1.255。
  • 这个网段能用的主机地址是192.168.1.1到192.168.1.254,一共 254 个。

算一遍二进制更直观:

192.168.1.20 = 11000000.10101000.00000001.00010100 255.255.255.0 = 11111111.11111111.11111111.00000000 按位与 = 11000000.10101000.00000001.00000000 = 192.168.1.0 ← 网络号 主机位全置 1 = 11000000.10101000.00000001.11111111 = 192.168.1.255 ← 广播地址

为什么要搞明白这个?因为ifconfig配地址的时候,如果你只给 IP 不给 netmask,它会按地址类别(A/B/C 类)自动猜一个掩码。比如给10.0.0.5它可能默认按 A 类给255.0.0.0,这在内网分段环境里就是灾难。所以手动配地址时,netmask 和 broadcast 一定要写全。

后面紧跟的inet6行是 IPv6 地址,fe80::开头的是链路本地地址,prefixlen 64相当于 IPv6 的掩码长度,scopeid 0x20<link>表示作用域是链路本地。这是内核自动生成的,不用你配。

2.3 RX/TX 统计里藏着硬件的健康状况

RX和TX两块是收发统计,下面这几个计数字段是排查网络问题的重点:

  • packets / bytes:收发的包数和字节数。注意括号里的单位,老版本按 1024 进制换算是 KB/MB,别当成 1000 进制,看日志对数据时容易差一个数量级。
  • errors:出错包数。非零就要查,可能是驱动、硬件或者双工模式不匹配。
  • dropped:被丢弃的包。缓冲区满、队列溢出都会导致。
  • overruns:环形缓冲区溢出次数。持续增长说明流量超过网卡处理能力,或者是中断处理跟不上。
  • frame:帧错误,通常是物理层问题,网线、水晶头、接口氧化。
  • carrier:载波丢失次数。每次物理链路断开会加一,频繁增长就要查线缆和对端设备。
  • collisions:冲突计数,半双工时代的老指标。现在全双工环境下正常应该是 0,如果一直在涨,说明协商成了半双工。

txqueuelen 1000是发送队列长度,默认 1000 个包。高延迟链路(比如跨城专线)上适当调大能改善突发流量的处理,但也别盲目调,队列太长会加剧缓冲区膨胀。

2.4 lo、docker0 这些接口分别是什么

跑一次不带参数的ifconfig,通常能看到好几个接口,新手容易懵:

  • lo:回环接口,地址固定127.0.0.1,掩码/8。本机进程之间通信走它,永远存在,永远 UP。
  • eth0 / ens33 / enp3s0:物理网卡的常见命名。老系统习惯叫 eth0,新系统按固件位置命名,ens33表示 PCI 插槽位置。这是 systemd 的"可预测网络接口名称"方案干的。
  • docker0:装了 Docker 之后默认创建的网桥,地址通常是172.17.0.1/16。
  • br-xxxxxxxx:Docker Compose 或自定义网络创建的用户网桥。
  • vethxxxx:虚拟以太网对,一头在容器里,一头在宿主机网桥上。
  • tun0 / tap0:隧道类型接口,通常伴随 MTU 调小的配置。

注意:ifconfig默认只显示已启用的接口,想看全部(包括 DOWN 状态的)要加-a参数。很多时候"网卡不见了"其实就是它处于 DOWN 状态,ifconfig -a一敲就现身了。

3. 实战操作:查看、启停、临时配地址

3.1 查看网卡信息的几种姿势

装好 net-tools 之后,先把查看这件事玩熟:

# 只显示已启用的接口 ifconfig # 显示所有接口,包括 DOWN 状态的 ifconfig -a # 只看某一块网卡 ifconfig eth0 # 短格式输出,一行一个接口,适合快速扫一眼 ifconfig -s

ifconfig -s的输出长这样:

Iface MTU RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg eth0 1500 856320 0 0 0 655360 0 0 0 BMRU lo 65536 2048 0 0 0 2048 0 0 0 LRU

这个格式在做批量巡检时特别好用,几十台机器的输出可以直接贴进表格对比。如果你写脚本采集,用ifconfig -s比解析完整输出省事得多。

还有几个不常提但有用的技巧:ifconfig后面可以直接跟接口别名eth0:0;输出里想过滤某个字段可以配合grep,比如只看 IP:

ifconfig eth0 | grep 'inet ' # 或者更精确地取纯地址 ifconfig eth0 | awk '/inet /{print $2}'

3.2 启用和停用网卡(激活網卡的正确姿势)

"激活网卡"这个说法其实是把ifconfig eth0 up的效果讲通俗了。实际操作就是启停接口:

# 启用网卡 sudo ifconfig eth0 up # 停用网卡 sudo ifconfig eth0 down

看起来简单,但坑不少。经典的坑是:你连着 SSH,然后对正在用的那块网卡执行 down。命令一发出,连接立刻断,而且因为网卡已经 down 了,你也连不回去,只能去机房或者走带外管理。这个坑我踩过一次,半夜爬机房拔插网线的滋味不太好受。

正确做法是先用 out-of-band 通道,或者至少用一个带超时兜底的脚本:

# 5 秒后无论如何把网卡拉起来,防止把自己关在门外 sudo sh -c 'sleep 5; ifconfig eth0 up' & sudo ifconfig eth0 down # 在这 5 秒内做完你要做的事

另外,ifconfig的启停和ip link set eth0 up/down效果一样,但和nmcli connection up/down不一样,后者操作的是 NetworkManager 的连接配置,会触发完整的 DHCP 和配置下发流程。如果你在 NetworkManager 托管的机器上用ifconfig eth0 down,可能过一会 NetworkManager 又把它拉起来了,看着像是命令没生效。

用ip命令对照着记:

ip link set eth0 up ip link set eth0 down ip link show eth0

3.3 临时配置 IP 地址与别名

这是ifconfig最常用的配置能力,语法是:

sudo ifconfig eth0 192.168.1.100 netmask 255.255.255.0 broadcast 192.168.1.255

三个参数缺一不可地讲一下为什么:netmask决定这个地址属于哪个网段,broadcast决定同一网段内的广播包发到哪里。如果你只写 IP,ifconfig会按地址类别猜掩码,比如给192.168.1.100它会猜/24,这次恰好对了;但给10.50.1.100它可能猜/8,那就彻底错了。

掩码和广播地址的对应关系:/24对应255.255.255.0和x.x.x.255;/25对应255.255.255.128和x.x.x.127;/26对应255.255.255.192。写脚本时最好按目标网段算好再填,别让工具替你猜。

给一块网卡配多个地址,用接口别名:

sudo ifconfig eth0:0 192.168.1.101 netmask 255.255.255.0 sudo ifconfig eth0:1 192.168.1.102 netmask 255.255.255.0 # 查看别名 ifconfig eth0:0 # 删除别名 sudo ifconfig eth0:0 down

需要说明的是,eth0:0这种写法在ifconfig的语境里只是给地址打了个标签,内核层面地址还是挂在eth0上。用ip addr看的时候会显示成eth0下挂多个inet,标签以eth0:0形式标注。用ip命令的等价写法是:

sudo ip addr add 192.168.1.101/24 dev eth0 label eth0:0 sudo ip addr del 192.168.1.101/24 dev eth0

有一点要提醒:如果目标网段没有对应的路由,光配地址不一定通。配完之后用ip route或者route -n确认一下有没有默认网关,没有的话得手动加:

sudo route add default gw 192.168.1.1 # 或者 sudo ip route add default via 192.168.1.1

3.4 改 MAC 地址和 MTU

这两个操作都属于"临时改一下试试"的性质,重启即失效。

改 MAC 地址,顺序很关键,必须先 down 再改再 up:

sudo ifconfig eth0 down sudo ifconfig eth0 hw ether 00:11:22:33:44:55 sudo ifconfig eth0 up

为什么必须保持 down 状态?因为驱动在接口启用时会读取 MAC 并把自己的过滤表刷进去,热改 MAC 会导致驱动内部状态和内核状态不一致,轻则收不到包,重则直接报错。这个顺序没得商量。

改 MTU:

sudo ifconfig eth0 mtu 1400

MTU 调整的常见场景是隧道或叠加网络,封装会带来额外头部开销,标准 1500 的包穿不过去就会分片,分片又会带来性能损失,所以直接调小更划算。改完可以用ping -M do -s 1472这类方式验证路径上的实际 MTU,-M do表示禁止分片,-s指定的数据部分加上 28 字节的 IP+ICMP 头部就是总长度。

顺带说几个开关型参数,都支持加-前缀取反:

sudo ifconfig eth0 promisc # 开启混杂模式 sudo ifconfig eth0 -promisc # 关闭 sudo ifconfig eth0 -arp # 关闭 ARP sudo ifconfig eth0 multicast # 开启组播 sudo ifconfig eth0 allmulti # 接收所有组播

混杂模式抓包的时候会用,但千万不要在生产网卡上长期开着,一是性能下降,二是所有经过的帧都会往上层送,白白消耗 CPU。

4. 踩过的坑与排查实录

4.1 Ubuntu 上 command not found 之外的连带问题

装完 net-tools 一般就好了,但有两类情况要注意。

一种是装上了还是找不到。检查which ifconfig,如果指向/sbin/ifconfig而你的PATH里没有/sbin,普通用户就会找不到。这是 Debian 系的老问题,/sbin默认只对 root 和 sudo 环境开放。解决办法是用绝对路径,或者把/usr/sbin加进自己的 PATH。Ubuntu 从 19.10 开始把 sbin 合并进了/usr/bin,这个问题在新版本上弱化了。

另一种是自动化脚本在最小镜像里跑不起来。Alpine、distroless 这类镜像为了体积把 net-tools 砍了,busybox 里虽然有个精简版 ifconfig,但输出字段和 GNU 版不完全一样,靠awk按列取值可能对不上。这类场景我建议脚本直接用ip -j输出 JSON,用jq解析,既准确又不受工具版本影响。

4.2 网卡显示 UP 却没有 IP

这个问题的排查顺序我总结成固定套路:

  1. ifconfig -a看接口是否真的存在。不存在就是驱动没加载,lspci或dmesg | grep -i eth查硬件识别情况。
  2. 检查是否由管理工具托管。nmcli device status看接口状态是不是unmanaged,如果是,NetworkManager 根本不管它,自然不会下发地址。
  3. 检查 DHCP 是否正常。journalctl -u NetworkManager或者journalctl -u systemd-networkd看有没有 DHCP 超时。DHCP 拿不到地址时接口是 UP 但不配 IP 的。
  4. 检查配置文件。Ubuntu 上看/etc/netplan/*.yaml,Debian 老版本看/etc/network/interfaces,确认dhcp4: true或者addresses字段写对了。
  5. 手动配一个静态地址测通断。ifconfig eth0 192.168.1.100 netmask 255.255.255.0之后ping网关,能通说明二层链路没问题,问题出在 DHCP 或上层配置。

这套流程走下来,九成的情况能定位到。

4.3 RX errors 或 dropped 不为零怎么办

看到这两个计数非零别慌,先判断是不是历史累计值。执行一次ifconfig eth0记下数字,等五分钟再看一次,只有持续增长才说明当前有问题。历史累计通常来自某次网线松动或者重启前的异常,不影响当前运行。

如果确认在增长,按这个顺序查:

现象可能原因处理方式
RX errors 持续增长网线质量差、水晶头接触不良换线,用ethtool -S eth0看具体错误类型
RX overruns 增长环形缓冲区小、中断合并不当调大 ring buffer,ethtool -G eth0 rx 4096
RX dropped 增长上层处理不过来,CPU 瓶颈看top的中断占用,考虑多队列和 RSS
TX carrier 增长物理链路反复断开查对端交换机端口日志,换端口试
collisions 增长协商成半双工ethtool eth0看 Speed/Duplex,必要时固定全双工

ethtool是配合ifconfig排查的必备工具,ifconfig给你总量,ethtool -S给你分类明细,两个一起看效率最高。

4.4 配完重启就失效

这是最常被抱怨的一点,其实不是 bug 而是设计如此。ifconfig的配置只写进内核运行时,不落盘。想要持久,得写配置文件。Ubuntu 17.10 之后用 netplan,之前用/etc/network/interfaces;RHEL 系用/etc/sysconfig/network-scripts/ifcfg-eth0;NetworkManager 托管的用nmcli改连接。

判断该改哪儿的方法:先看谁在管这块网卡。

# 看网络服务状态 systemctl status systemd-networkd systemctl status NetworkManager # 看接口归属 nmcli device status

哪个服务是 active 并且接口不是 unmanaged,就改哪边的配置。

4.5 常见问题速查表

现象大概率原因快速验证
command not foundnet-tools 未安装apt install net-tools
看不到某块网卡接口处于 DOWNifconfig -a确认
有 UP 无 RUNNING物理链路未就绪查网线、交换机端口
有 IP 但 ping 不通网关缺默认路由ip route检查
重启后 IP 丢失配置未持久化检查 netplan / nmcli 配置
改了 MAC 后不通交换机端口安全绑定查交换机 MAC 绑定策略
MTU 改了不生效对端未同步调整ping -M do -s逐段验证
别名的地址看不到用了ifconfig而非-aip addr直接看

心得:排查网络问题时,永远先确认"物理层通不通",再看"IP 层配得对不对",最后才看"路由和应用层"。顺序反过来会浪费大量时间在三层以上的假设上。

5. 从 ifconfig 迁移到现代配置方式

5.1 netplan:Ubuntu 的现在时

Ubuntu 17.10 之后,网络配置统一走 netplan,配置文件放在/etc/netplan/下,格式是 YAML。一个静态 IP 的典型配置长这样:

network: version: 2 renderer: networkd ethernets: eth0: dhcp4: false addresses: - 192.168.1.100/24 routes: - to: default via: 192.168.1.1 nameservers: addresses: [223.5.5.5, 119.29.29.29] mtu: 1500

改完用sudo netplan apply生效。这里有个大坑:YAML 对缩进极其敏感,而且netplan apply是立即生效的。如果你远程 SSH 改配置,地址一改连接就断。稳妥的做法是先执行sudo netplan try,它会在 120 秒内应用配置,然后让你确认,没确认就自动回滚。这个机制救过我不止一次。

另一个坑是权限。netplan 配置文件如果权限太开放(比如 666),新版本会拒绝加载并提示警告。按官方建议设成 600 比较稳:

sudo chmod 600 /etc/netplan/*.yaml

5.2 传统 interfaces 文件与 RHEL 系写法

Debian 老版本和一部分服务器还在用/etc/network/interfaces:

auto eth0 iface eth0 inet static address 192.168.1.100 netmask 255.255.255.0 gateway 192.168.1.1 dns-nameservers 223.5.5.5

RHEL 系的/etc/sysconfig/network-scripts/ifcfg-eth0:

TYPE=Ethernet BOOTPROTO=static ONBOOT=yes IPADDR=192.168.1.100 NETMASK=255.255.255.0 GATEWAY=192.168.1.1 DNS1=223.5.5.5 MTU=1500

改完重启网络服务:Debian 系用systemctl restart networking,RHEL 系新版本用nmcli connection reload加nmcli connection up eth0。

5.3 ip 命令与 ifconfig 的完整对照

如果你打算彻底转到ip,下面这张表可以直接贴到备忘里:

目的ifconfig 写法ip 写法
查看所有接口ifconfig -aip addr show
查看单接口ifconfig eth0ip addr show eth0
查看统计信息ifconfig eth0ip -s link show eth0
启用接口ifconfig eth0 upip link set eth0 up
停用接口ifconfig eth0 downip link set eth0 down
配 IPifconfig eth0 192.168.1.100/24ip addr add 192.168.1.100/24 dev eth0
删 IPifconfig eth0 0.0.0.0ip addr del 192.168.1.100/24 dev eth0
改 MACifconfig eth0 hw ether xx:xx:...ip link set eth0 address xx:xx:...
改 MTUifconfig eth0 mtu 1400ip link set eth0 mtu 1400
查路由route -nip route show
加默认网关route add default gw 192.168.1.1ip route add default via 192.168.1.1
查 ARParp -nip neigh show

迁移时最容易忘的是ifconfig eth0 0.0.0.0这种删除地址的写法,ip里必须写全地址和掩码,不能省略。另外ip的输出里地址后面直接跟/24,没有单独的 netmask 字段,习惯了ifconfig的人刚开始会不太适应。

5.4 nmcli:需要持久化时更省事的选项

桌面版和一部分服务器上 NetworkManager 是默认管理器,这时候用nmcli改配置比直接编辑文件更安全,因为它有语法校验和事务性。

# 看设备和连接 nmcli device status nmcli connection show # 改静态地址 sudo nmcli connection modify "Wired connection 1" \ ipv4.method manual \ ipv4.addresses 192.168.1.100/24 \ ipv4.gateway 192.168.1.1 \ ipv4.dns "223.5.5.5" # 生效 sudo nmcli connection up "Wired connection 1"

注意连接名里的空格要用引号包起来,中文环境下的连接名经常是"有线连接 1"这种,直接写不带引号会报错。nmcli的好处是改完立刻生效且持久化,不用重启网络服务,也不像 netplan 那样一个缩进错了就整体失败。


最后分享几条我这些年用ifconfig攒下来的实操体会。第一,养成用ifconfig -a而不是ifconfig的习惯,很多"网卡消失了"的报警其实是接口 DOWN,加个-a就看见了。第二,改任何涉及当前连接的网络配置前,先用at或者后台延时任务给自己留一条退路,比如echo "ifconfig eth0 up" | at now + 3 minutes,这条命令救人的次数比你想的多。第三,看 RX/TX 统计一定要做两次采样对比,单次数值基本没有判断价值。第四,如果一台机器你打算长期维护,尽早把脚本里的ifconfig换成ip -j加jq的组合,输出结构化,解析不容易因为系统版本差异而崩。第五,netplan 和 nmcli 这两个工具别混着用,同一个网卡被两套配置同时管理,最后大概率是互相覆盖,查问题的时候能让你怀疑人生。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询