Ubuntu 固定 IP 改为自动获取 IP(DHCP)实操笔记
一、目标
将 Ubuntu 主机原来的固定 IP,改成由路由器自动分配 IP,也就是 DHCP 自动获取。
一、目标
将 Ubuntu 主机原来手动设置的固定 IP,改成由路由器自动分配 IP,也就是 DHCP 自动获取 IP。
二、两种常见情况
Ubuntu 里常见有两种网络管理方式:
1. Netplan + networkd
常见于 Ubuntu Server。
判断特征:
- netplan 配置里通常没有
renderer: NetworkManager - 应用后常从
ip a里看到dynamic ip route里可能看到proto dhcp
2. Netplan + NetworkManager
常见于 Ubuntu Desktop。
判断特征:
- netplan 配置里有:
renderer: NetworkManager
- 实际网络连接由
nmcli管理 - 是否 DHCP 要结合
nmcli和ip route一起判断
第一部分:OpenClaw 那台 Ubuntu 的操作过程
三、原始固定 IP 配置
原来的配置是:
network:
version: 2
ethernets:
enp4s0:
dhcp4: no
addresses:
- 192.168.2.65/24
gateway4: 192.168.2.3
nameservers:
addresses:
- 8.8.8.8
这表示:
dhcp4: no:关闭自动获取 IPaddresses:手动固定 IPgateway4:手动固定网关nameservers:手动固定 DNS
四、改为 DHCP 的正确配置
将配置改成:
network:
version: 2
ethernets:
enp4s0:
dhcp4: yes
含义:
dhcp4: yes:开启 IPv4 DHCP 自动获取- 不再手动写
addresses - 不再手动写
gateway4 - 不再手动写
nameservers
五、编辑配置文件
先查看 netplan 文件:
ls /etc/netplan/
编辑对应文件:
sudo nano /etc/netplan/00-installer-config.yaml
把内容改成:
network:
version: 2
ethernets:
enp4s0:
dhcp4: yes
六、应用配置
先试运行:
sudo netplan try
系统会提示:
Do you want to keep these settings?
Press ENTER before the timeout to accept the new configuration
这时必须按 Enter 回车 确认。
如果没有按回车,系统会在倒计时结束后自动回滚。
确认后可正式应用:
sudo netplan apply
七、第一次遇到的问题
第一次执行 sudo netplan try 时,没有及时按回车,出现了:
Changes will revert in 1 seconds
Reverting.
这说明:
- 配置本身没有错
- 只是没有在超时前确认
- 所以系统自动回滚了
八、最终成功标志
重新执行并及时按回车后,再检查:
ip a
ip route
得到关键结果:
inet 192.168.2.65/24 ... scope global dynamic enp4s0
default via 192.168.2.1 dev enp4s0 proto dhcp
其中:
dynamic:IP 是动态分配的proto dhcp:默认路由由 DHCP 下发
结论
这台 OpenClaw 主机已经成功从固定 IP 改为自动获取 IP。
第二部分:Z390-UD 这台 Ubuntu Desktop 的操作过程
九、发现 netplan 使用的是 NetworkManager
配置文件内容为:
network:
version: 2
renderer: NetworkManager
这说明:
- netplan 仍然存在
- 但实际网络由 NetworkManager 管理
- 所以仅改 netplan 文件不一定够,还需要检查 NetworkManager 当前连接
十、补充 DHCP 配置
将 netplan 文件改为:
network:
version: 2
renderer: NetworkManager
ethernets:
enp4s0:
dhcp4: yes
编辑命令:
sudo nano /etc/netplan/01-network-manager-all.yaml
十一、修复 netplan 配置文件权限
执行 sudo netplan try 和 sudo netplan apply 时出现警告:
Permissions for /etc/netplan/01-network-manager-all.yaml are too open.
意思是:
- netplan 配置文件权限太宽
- 其他用户可能也能读
- 需要把权限收紧
修复命令:
sudo chown root:root /etc/netplan/01-network-manager-all.yaml
sudo chmod 600 /etc/netplan/01-network-manager-all.yaml
检查权限:
ls -l /etc/netplan/01-network-manager-all.yaml
正常结果:
-rw------- 1 root root ...
含义:
- 只有 root 可以读写
- 满足 netplan 的安全要求
然后重新应用:
sudo netplan apply
无报错无警告即表示正常。
十二、为什么 netplan 写对了,还是像静态 IP?
虽然 netplan 文件里写了:
dhcp4: yes
但检查结果里仍看到:
default via 192.168.2.3 dev enp4s0 proto static
这说明:
- netplan 文件写法是对的
- 但当前真正启用的连接仍是 NetworkManager 里的旧连接
- 旧连接还保留着手动静态 IPv4 配置
所以必须进一步处理 NetworkManager 当前连接。
十三、查看当前连接
执行:
nmcli con show
得到结果中关键项:
有线连接 1 ... ethernet enp4s0
netplan-enp4s0 ... ethernet --
说明:
- 当前真正正在使用的是
有线连接 1 netplan-enp4s0虽然存在,但没有启用
因此需要修改的是:
有线连接 1
十四、将当前连接改为自动获取 IPv4
执行:
sudo nmcli con mod "有线连接 1" ipv4.method auto
sudo nmcli con down "有线连接 1"
sudo nmcli con up "有线连接 1"
中间如果清空 gateway 时出现类似报错:
ipv4.gateway: 如果没有配置地址,网关会无法设置
通常只是修改顺序导致的小提示,不代表整体失败。
关键是后面如果出现:
成功停用连接
连接已成功激活
就说明连接已经重新启用。
十五、最终检查 DHCP 是否成功
执行:
ip route
nmcli con show "有线连接 1" | grep ipv4.method
最终得到:
default via 192.168.2.1 dev enp4s0 proto dhcp
ipv4.method: auto
这是最关键的两个判断依据。
含义
proto dhcp:默认网关由 DHCP 下发ipv4.method: auto:连接方式是自动获取 IP
结论
这台 zhq-Z390-UD 也已经成功从固定 IP 改成 DHCP 自动获取。
十六、为什么 IP 数字没变也算成功?
例如最终仍然拿到:
192.168.2.175
这不代表还是固定 IP。
因为 DHCP 完全可能再次把同一个地址分给这台机器。
所以判断是否改成功,不要只看 IP 数字有没有变化,而要看:
ip route里有没有proto dhcpnmcli里是不是ipv4.method: auto
十七、实操中最容易犯的错误
1. 没有按回车确认 netplan try
执行:
sudo netplan try
后,系统会等你确认。
如果没按回车,就会自动回滚。
2. 把“输出结果”当成“命令”输入
例如下面这些:
proto dhcp
default via 192.168.2.1 dev enp4s0 proto dhcp
ipv4.method: auto
这些都不是命令,而是命令执行后的输出结果。
真正应该输入的是:
ip route
nmcli con show "有线连接 1" | grep ipv4.method
然后去看输出中有没有:
proto dhcpipv4.method: auto
3. cat 提示权限不够
当 netplan 配置文件权限被改成 600 以后,普通用户直接:
cat /etc/netplan/01-network-manager-all.yaml
会提示权限不够,这是正常的。
应改为:
sudo cat /etc/netplan/01-network-manager-all.yaml
十八、最终判断口诀
情况 1:Netplan / networkd
检查:
ip a
ip route
成功标志常见为:
dynamicproto dhcp
情况 2:NetworkManager
检查:
ip route
nmcli con show "有线连接 1" | grep ipv4.method
成功标志为:
proto dhcp
ipv4.method: auto
十九、最终可复用模板
服务器常见模板
network:
version: 2
ethernets:
enp4s0:
dhcp4: yes
桌面版常见模板
network:
version: 2
renderer: NetworkManager
ethernets:
enp4s0:
dhcp4: yes
二十、最短实操流程总结
A. 如果是普通 Netplan
ip a
ls /etc/netplan/
sudo nano /etc/netplan/文件名.yaml
写入:
network:
version: 2
ethernets:
enp4s0:
dhcp4: yes
应用:
sudo netplan try
sudo netplan apply
ip a
ip route
B. 如果是 NetworkManager
编辑:
sudo nano /etc/netplan/01-network-manager-all.yaml
写入:
network:
version: 2
renderer: NetworkManager
ethernets:
enp4s0:
dhcp4: yes
修权限:
sudo chown root:root /etc/netplan/01-network-manager-all.yaml
sudo chmod 600 /etc/netplan/01-network-manager-all.yaml
应用:
sudo netplan apply
查看连接:
nmcli con show
将当前连接改为 DHCP:
sudo nmcli con mod "有线连接 1" ipv4.method auto
sudo nmcli con down "有线连接 1"
sudo nmcli con up "有线连接 1"
检查结果:
ip route
nmcli con show "有线连接 1" | grep ipv4.method
成功标志:
proto dhcp
ipv4.method: auto
二十一、最终总结
本次一共处理了两台 Ubuntu 主机:
1. OpenClaw 主机
- 原来是静态固定 IP
- 修改 netplan 后成功切换为 DHCP
- 关键标志:
dynamic、proto dhcp
2. Z390-UD 主机
- 使用
renderer: NetworkManager - 除了改 netplan 外,还需要改 NetworkManager 当前连接
- 同时修复了 netplan 文件权限
- 关键标志:
proto dhcp、ipv4.method: auto
更多推荐
所有评论(0)