首先确定网络是用什么工具管理:
1
2
| $ systemctl is-active NetworkManager
active
|
说明 网络由 NetworkManager 管理,这种情况修改 IP 通常使用 nmcli:
修改静态 IP
看当前连接名
输出类似:
1
2
| NAME UUID TYPE DEVICE
Wired connection 1 2d3e1f6a-4e87-4a76-8f23-2f459c8c112b ethernet enp60s0
|
这里的 NAME(如 Wired connection 1)就是连接名,后面命令要用到。
修改为静态 IP
假设你想把 IP 设置为:
- IP:
192.168.1.100/24 - 网关:
192.168.1.1 - DNS:
8.8.8.8, 1.1.1.1
执行:
1
2
3
4
| sudo nmcli con mod "Wired connection 1" ipv4.addresses 192.168.1.100/24
sudo nmcli con mod "Wired connection 1" ipv4.gateway 192.168.1.1
sudo nmcli con mod "Wired connection 1" ipv4.dns "8.8.8.8,1.1.1.1"
sudo nmcli con mod "Wired connection 1" ipv4.method manual
|
注意 "Wired connection 1" 需要替换为你自己的连接名。
如果名字里有空格,必须加引号。
应用修改(立即生效)
1
2
| sudo nmcli con down "Wired connection 1"
sudo nmcli con up "Wired connection 1"
|
验证
1
2
| ip addr show enp60s0
ip route
|
你应该能看到:
1
2
| inet 192.168.1.100/24 ...
default via 192.168.1.1 ...
|
改回 DHCP 自动获取
如果想恢复为 DHCP:
1
2
| sudo nmcli con mod "Wired connection 1" ipv4.method auto
sudo nmcli con up "Wired connection 1"
|
DHCP 重新获取 IP
检查是否是固定分配 IP
1
2
3
4
| sudo nmcli device disconnect enp60s0
sudo dhclient -r enp60s0 # 释放旧租约(告诉 DHCP 我不要这个 IP 了)
sudo pkill dhclient # 确保没有旧 dhclient 残留
sudo nmcli device connect enp60s0 # 重新请求新 IP
|
如果上面的操作无法获得新的 IP,那就说明 DHCP 服务器端 是按 MAC 地址固定分配。
获取原本的 MAC 地址
可以临时更改 MAC 来解决,首先获取一下原本的 MAC:
1
2
3
4
| ip link show enp60s0
# 或者
nmcli device show enp60s0 | grep -i hwaddr
|
修改临时 MAC
修改为临时 MAC:
1
2
3
| sudo nmcli connection modify "Wired connection 1" 802-3-ethernet.cloned-mac-address random
sudo nmcli connection down "Wired connection 1"
sudo nmcli connection up "Wired connection 1"
|
这会让 DHCP 服务器以为是一个新设备,从而分配新 IP。 完成后可以恢复原 MAC:
1
| sudo nmcli connection modify "Wired connection 1" 802-3-ethernet.cloned-mac-address "YOUR_MAC"
|
实测可以获取到新的 IP。