微信优化

weixinyouhua

Linux修改网卡配置怎么做?Linux网卡配置怎么修改?

2026-09-29 10:18:20

Linux修改网卡配置,最稳妥、最通用的做法是直接编辑网卡配置文件,配合nmcli或systemctl重启网络服务生效,不建议在无图形界面的生产环境使用ifconfig临时修改。 这篇文章会把配置文件改法、命令改法、常见坑一次说清,无论你用的是Ubuntu还是CentOS,都能找到对应的路子。

为什么你改了网卡配置却不生效

很多朋友在Linux上折腾网络,最郁闷的就是明明照着教程改了IP,ping一下却还是旧地址。多数情况下,问题出在没分清“临时修改”和“永久修改”的区别。ifconfig eth0 192.168.1.10这种命令直接作用在内核网络栈上,重启网络服务或者重启机器,改动立马归零,而永久修改必须落到配置文件里,让网络服务启动时去读取。

另一个常见坑是NetworkManager和systemd-networkd在抢地盘,现在的Linux发行版,有的默认用NetworkManager管理网络,有的用systemd-networkd,还有的纯粹靠/etc/network/interfaces(Debian系)或者/etc/sysconfig/network-scripts/(RHEL系)里的脚本,你改了配置文件,但服务没重启,或者你改的是A配置,系统实际读的是B配置,自然不生效,业内专家指出,排查这类问题,第一步永远是确认当前系统用的什么网络管理工具。

Linux修改网卡配置的主流方法

临时修改,网络测试用

适合你只是临时改个IP试试连通性,或者调整路由表。

  • 修改IP地址:sudo ifconfig eth0 192.168.1.100 netmask 255.255.255.0 up
  • 修改网关:sudo route add default gw 192.168.1.1
  • 修改DNS:临时修改DNS的话,直接改/etc/resolv.conf文件,但很多系统这个文件被NetworkManager接管,改了也会被覆盖。

这种改法重启网络服务或重启机器后就失效,别指望它做持久化配置。

永久修改,编辑配置文件

这是生产环境推荐的做法,不同发行版路径不一样,先认准你的系统类型。

Debian/Ubuntu系统

配置文件在/etc/network/interfaces

Linux修改网卡配置怎么做?Linux网卡配置怎么修改?

,如果你用的是Ubuntu 18.04以上的桌面版或服务器版,大概率还会涉及Netplan。

传统interfaces文件写法:

# 网卡lo回环,别动
auto lo
iface lo inet loopback
# 配置eth0为静态IP
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 114.114.114.114

改完执行sudo systemctl restart networking或者sudo /etc/init.d/networking restart。

Netplan写法(Ubuntu 18.04+):
配置文件在/etc/netplan/.yaml,修改后必须执行sudo netplan apply才能生效。

network:
  version: 2
  ethernets:
    eth0:
      dhcp4: no
      addresses:
        - 192.168.1.100/24
      routes:
        - to: default
          via: 192.168.1.1
      nameservers:
        addresses: [223.5.5.5, 114.114.114.114]

CentOS/RHEL/Fedora系统

配置文件路径:/etc/sysconfig/network-scripts/ifcfg-eth0

静态IP配置示例:

TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
NAME=eth0
DEVICE=eth0
ONBOOT=yes
IPADDR=192.168.1.100
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=223.5.5.5
DNS2=114.114.114.114

改完执行sudo systemctl restart network(CentOS 7)或sudo nmcli connection reload。

用nmcli命令行修改

对于CentOS 8+和较新的Ubuntu系统,行业共识认为nmcli是唯一不需要记配置文件路径,也能做到永久生效的命令行工具,它直接跟NetworkManager交互,改完立刻生效且写入配置。

查看网络连接名称:

nmcli connection show

修改IP配置:

# 修改连接名为eth0的IP地址为静态
nmcli connection modify eth0 ipv4.method manual ipv4.addresses 192.168.1.100/24 ipv4.gateway 192.168.1.1 ipv4.dns "223.5.5.5 114.114.114.114"
# 重新激活连接
nmcli connection up eth0

Linux修改网卡配置怎么做?Linux网卡配置怎么修改?

想从DHCP改回静态,或者反过来,nmcli都支持。 这套命令逻辑清晰,不需要记忆不同发行版的配置文件差异,对新手相当友好。

对比表格:不同修改方式的适用场景

修改方式 生效方式 持久性 适合场景 风险等级
ifconfig命令 立即生效 临时 测试连通性 低
直接编辑配置文件 重启网络服务 永久 生产环境静态IP 中(改错连不上)
nmcli命令 立即生效并写入配置 永久 远程服务器管理 低
TUI图形化(nmtui) 立即生效 永久 有交互界面的服务器 低

远程操作建议:如果你通过SSH连接服务器修改网卡配置,强烈建议先写个crontab定时任务,或者用screen会话执行命令,防止配置写错导致断网后连不回去,改完配置后,不要立刻断开当前SSH连接,先开个新终端尝试连接新IP,确认能连上再断旧连接。

网卡配置文件改了不生效?排查步骤

第一反应是看报错,执行sudo systemctl status network或者journalctl -xe,看看网络服务有没有报错,很多情况下是配置文件里多了个空格、少了引号导致解析失败。

第二步确认网卡名称,现在的系统网卡名早就不是eth0了,而是ens33、ens160或者eno1这种,跑一下ip addr看看你的网卡到底叫什么名字,然后去配置文件里改对应的名称。改错网卡名是新手最常见的问题来源。

第三步查NetworkManager是不是接管了,如果你的系统装了NetworkManager,而你又在/etc/network/interfaces里配了静态IP,这时候可能会冲突,解决思路二选一:要么让NetworkManager管理,要么禁用它,Ubuntu上你可以跑sudo systemctl stop NetworkManager试试效果。

还有个大坑是DNS缓存

Linux修改网卡配置怎么做?Linux网卡配置怎么修改?

,改了DNS配置不生效,可能是systemd-resolved在缓存,执行sudo systemd-resolve --flush-caches清一下缓存,排查DNS问题不用重启机器。

Q&A:关于Linux修改网卡配置常见疑问

修改Linux网卡配置后网关ping不通是什么原因?

网卡配置和网关不通是两层问题,先确认同一网段内其他机器能ping通网关,排除物理链路故障,然后看路由表,执行ip route show,确认default路由指向的是新网关地址,如果路由没问题,检查防火墙规则,systemctl stop firewalld或iptables -L看看是否拦截了ICMP请求,网卡配置文件里GATEWAY项写错是另一个常见原因,确保网关地址和IP地址在同一网段,且没有多余的空格。

Ubuntu和CentOS修改网卡配置文件的命令一样吗?

不一样,两个系统的网卡配置路径和服务管理方式有较大区别。

操作 Ubuntu CentOS 7+
配置文件路径 /etc/netplan/.yaml 或 /etc/network/interfaces /etc/sysconfig/network-scripts/ifcfg-
重启网络命令 sudo netplan apply sudo systemctl restart network
网卡命名规则 09:00.0的PCI位置命名 biosdevname或一致性设备命名

如果你需要修改网卡配置,建议先确认系统版本再选择对应命令,避免照搬错误命令导致配置失败,Ubuntu 20.04以后默认用Netplan,CentOS 8以后推荐用nmcli,这些差异在写自动化脚本时特别容易踩坑。

用nmcli修改IP后为什么ifconfig看到的还是旧地址

因为ifconfig在某些系统上已经不直接显示NetworkManager管理的连接了,推荐用ip addr show检查IP地址,或者跑nmcli device status看设备状态。ifconfig显示的是内核接口信息,而NetworkManager的配置需要激活才会写入内核,执行nmcli connection up [连接名]激活一次,再看ip addr应该就是新地址了,如果还是旧地址,检查有没有多个connection配置指向同一块物理网卡,删掉多余的配置再试。

相关文章

2024年,SaaS软件行业碰到获客难、增长慢等问题吗?

我们努力让每一次邂逅总能超越期待