Debian12 的网络用什么配置?
背景
我下载了 Debian12 的 iso 镜像(版本:debian-12.7.0-amd64-DVD-1.iso ,无桌面),在 virtualbox7 中安装好后,我发现默认使用的网络配置服务是 networing.service
然后,我阅读了这个官方的文档: www.debian.org/doc/manuals/debian-reference/ch05.zh-cn.html
在 5.3 小结中,文档给出了如何配置静态 IP 的方案,使用的是 systemd-networkd 。
我在 virtualbox 给这个 debian 系统网络设置了桥接模式,然后根据文档配置了静态地址:
sudo vim /etc/systemd/network/static.network
[Match]
Name=en*
[Network]
DHCP=no
Address=192.168.0.201/24
Gateway=192.168.0.1
DNS=192.168.0.1
我的疑问
我把 networking.service 直接关掉了,开启了 systemd-networkd.service ,执行的是以下命令:
# 关闭 networking.service
sudo systemctl disable networking.service
sudo systemctl stop networking.service
# 开启 systemd-networkd.service
sudo systemctl enable systemd-networkd
sudo systemctl start systemd-networkd
第一个问题
平稳运行了一段时间后,我发现重启服务器或者重启路由器,服务器的 ip 又会变成一个不是我指定的地址,我在配置文件指定的是 192.168.0.201 ,但是它会变成 192.168.0.106 之类的,我猜测和 DHCP 有关,请问这是为什么?
第二个问题
在安装了 Debian12 系统的服务器中,我该使用哪一个配置网络,networking.service 还是 systemd-networkd.service ?
我在阿里云上买的云服务装的也是 debian12 ,它默认用的是 systemd-networkd.service 。
而我本地虚拟机安装 debian12 ,默认用的是 networking.service 。
我已经用/etc/rc.local 写 ip a 命令来管理网络了。受不了 netplan,systemd 乱搞
我是编辑 /etc/network/interfaces ,然后用 systemctl restart networking.service 重启网络
配置如下:
auto enp0s3
iface enp0s3 inet static
address 192.168.1.240/24
gateway 192.168.1.1
dns-nameservers 192.168.1.1 180.76.76.76
debian 网络配置是有点蠢,第一次用研究半天
和你是否装了 de 有关
这是我给课题组配 Debian 服务器的时候写的交接文档
无 GUI 界面 Debian 服务器,没有使用 NetworkManager ,通过编辑以下文件实现网络配置
# 网络配置文件
sudo vim /etc/network/interfaces
# 本地回环部分
# The loopback network interface
auto lo
iface lo inet loopback
# 外网访问部分
# 这里例举了 IPv4 固定 IP 地址,IPv6 通过 SLAAC 自动分配 IP 地址
# 可用 ls /sys/class/net 找到接口名称,如 enp5s0
# The primary network interface
auto enp5s0
iface enp5s0 inet static
address X.X.X.X
netmask X.X.X.X
gateway X.X.X.X
iface enp5s0 inet6 auto
# DNS 设置 (在 Linux 系统上,通常最多使用前三个 DNS 服务器)
sudo vim /etc/resolv.conf
nameserver 119.29.29.29
nameserver 223.5.5.5
nameserver 2402:4e00::
nameserver 2400:3200::1
#重启网络服务
sudo systemctl restart networking
其实非常简单 记住一个原则就好了
默认 /etc/network/interfaces 配置,且具有最高优先级。
如果配置了,其他网络管理器程序不能接管网卡。
但这个方式太古老,也不够灵活好用。
所以,安装 NetworkManager 后,需要清空 /etc/network/interface 才能被 NetworkManager 接管。
接管后就可以用 NetworkManager 的管理工具 nmcli nmtui 配置。
安装 DE 默认就会安装 NetworkManager 。
我也用 systemd-networkd
虚拟机可能有干扰了 dhcp ,networking.service 是遗留问题,systemd 以前是利用它来管理的,读取 interface 文件来启动和关闭,networkd 就是 systemd 的网络配套服务。
不过 debian 12 一般配置网络会采用 netplan 来配置网络。配置文件在/etc/netplan 下面
netplan 吧
Debian 12 的网络配置工具是有点混乱, 稍不留神就会冲突.
简单来说, 现在有三种网络配置工具,
- networking.service
在 ifupdown 包中, 包含了 ifupdown 命令和 networking.service, 配置文件为/etc/network/interfaces, 通常会配合上 net-tools 包中的 ifconfig 等命令来配置, 已经不推荐使用了. - systemd-networkd.service
配置文件在/etc/systemd/network/, 主要用于 headless 的服务器, 虽然也有个前端命令 networkctl, 不过主要还是直接修改文件来配置 - NetworkManager
配置文件在/etc/NetworkManager/system-connections, 一般不直接修改文件, 而是通过 nmcli 和 nmtui 命令以及各个桌面环境的 GUI 程序来配置. 主要用于桌面环境. 缺点是资源占用多.
第二个问题: Debian 12, 默认依然使用第一种网络管理方式. 阿里云上的 Debian 应该是修改过的.
至于第一个问题: 需要查看是否有冲突的服务.
个人使用经验, 我现在不管什么发行版都会统一使用 NetworkManager 来管理, nmtui 很方便, 不用去记忆配置文件语法.
如果你装了 de ,它就假设你在用台式机工作站或笔记本,那么 networkmanager 会接管,如果主机从一个网络环境移动到另一个,nm 会自动处理。。。
nm 好用,实在不行,装个 desktop ,用 gui 设置后关掉 desktop
op 贴出来的文档是没错的,一般云上都是用的云镜像 cloud-init 初始化的系统,云镜像 debian 是用的 netplan 。
一般云上 debian 系的都是 netplan 配置,桌面的大多都是 NetworkManager 来配置(可能是因为 NetworkManager 有 gui 前端吧)
sudo nmcli con mod "Ethernet connection 1" ipv4.method manual ipv4.addr 192.168.1.10/24
sudo nmcli con mod "Ethernet connection 1" ipv4.gateway 192.168.1.1 ipv4.dns 114.114.114.114
sudo nmcli device reapply eth0
用指令 nmtui 会出现一个界面直接修改 ip 地址
/etc/network/interfaces ,古老但好用
#17
是的,/etc/network/interfaces 这种古老的方式相比于 netplan 和 systemd 来说是最通用且最可简单可控的了。
如果 op 想要固定 ip ,其实搭配 vagrant 使用最简单。
手装的系统是 ifupdown ,官方 cloud image 是 netplan
为什么不能全部用 static 快进到全民面向过程编程(误 因为 java 是面向对象的, 比如我有个猫类, 里面有个喵喵叫方法. 你要写成全局静态的, 然后给狗狗调用嘛? …
在互联网上,需要我们输入用户名口令的地方实在是太多了,多得都让人记不过来了,N个电子邮件帐号,QQ, MSN,校内,开心,facebook,Blog,各种论坛,网银,淘宝,电子…
正常开发中,我们会从 main->new branch feature 分支,当我的 feature 开发完毕后,origin/main 可能已经更新了很多个 commit(从…