安装配置了一台开发板环境,系统使用debian12桌面版,使用设置功能配置静态ip后,还是会dhcp自动获取到其他地址。
分析原因为桌面版的NetworkManager和server模式的网络配置在互相干扰,导致ip会被自动替换为自动获取
统一使用 NetworkManager (推荐用于桌面):
打开系统设置 -> 网络。
选择你的有线连接(通常显示为“有线”或接口名)。
点击齿轮图标或“设置”按钮。
在“IPv4”选项卡下:
关键: 确保勾选了 “对所有用户可用” 和 “自动连接” 选项(通常在连接设置的“常规”选项卡里)。
保存或应用更改。
方法选择 手动(Manual)。
在 Addresses
栏,精确输入你想要的静态 IP 地址和子网掩码(例如 192.168.1.100/24
或 192.168.1.100
+ 子网掩码 255.255.255.0
)。
输入默认网关(例如 192.168.1.1
)。
输入 DNS 服务器(例如 8.8.8.8, 8.8.4.4
或你的路由器地址 192.168.1.1
)。
停止并禁用服务:
sudo systemctl stop systemd-networkdsudo systemctl disable systemd-networkdsudo systemctl mask systemd-networkd # 可选,更彻底防止启动
移除或重命名 /etc/systemd/network/
目录下可能存在的针对该网卡的 .network
配置文件(或者确保里面没有 DHCP=yes
的配置)。
编辑 /etc/network/interfaces
:
sudo nano /etc/network/interfaces
确保只保留 lo
(环回接口) 的配置,对于你的物理有线网卡(如 eth0
, enpXsY
),注释掉或删除其配置块。最终看起来应该像:
# The loopback network interface auto lo iface lo inet loopback # 注释掉或删除 eth0/enpXsY 的配置 # auto eth0 # iface eth0 inet dhcp
保存文件。
编辑 /etc/NetworkManager/NetworkManager.conf
:
sudo nano /etc/NetworkManager/NetworkManager.conf
找到 [ifupdown]
部分(如果不存在就添加),确保设置为:
[ifupdown] managed=true
保存文件 (Ctrl+O
, Enter
, Ctrl+X
)。
这个设置告诉 NetworkManager 接管 /etc/network/interfaces
中列出的接口的管理权。
a. 让 NetworkManager 完全管理接口:
b. 简化 /etc/network/interfaces
:
c. 禁用 systemd-networkd
(如果它正在运行且不需要):
d. 重启 NetworkManager 并应用配置:
sudo systemctl restart NetworkManager
e. 在 NetworkManager 图形界面重新配置静态 IP:
f. 测试: 拔掉网线再插回去,或者重启系统。使用 ip addr show
或 ifconfig
检查 IP 地址是否保持为你设置的静态地址。
统一使用 systemd-networkd (可选,通常用于服务器或精简桌面):
a. 禁用 NetworkManager:
sudo systemctl stop NetworkManagersudo systemctl disable NetworkManagersudo systemctl mask NetworkManager # 可选
b. 启用 systemd-networkd:
sudo systemctl unmask systemd-networkd # 如果之前mask过sudo systemctl enable --now systemd-networkd
c. 配置静态 IP: 在 /etc/systemd/network/
目录下创建一个配置文件,例如 10-eth0-static.network
(替换 eth0
为你的接口名):
sudo nano /etc/systemd/network/10-eth0-static.network
内容示例:
[Match] Name=eth0 # 替换为你的接口名,如 enp3s0 [Network] Address=192.168.1.100/24 Gateway=192.168.1.1 DNS=8.8.8.8 DNS=8.8.4.4
d. 重启服务:
sudo systemctl restart systemd-networkd
e. 测试: 同样检查 IP 是否生效且稳定。