V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
Koril
V2EX  ›  Linux

Debian12 的网络用什么配置?

  •  
  •   Koril · 31 天前 · 2869 次点击

    背景

    我下载了 Debian12 的 iso 镜像(版本:debian-12.7.0-amd64-DVD-1.iso ,无桌面),在 virtualbox7 中安装好后,我发现默认使用的网络配置服务是 networing.service

    然后,我阅读了这个官方的文档: https://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 。

    24 条回复    2025-02-14 11:15:15 +08:00
    huangmingyou
        1
    huangmingyou  
       31 天前
    我已经用/etc/rc.local 写 ip a 命令来管理网络了。受不了 netplan,systemd 乱搞
    wjl1019547485
        2
    wjl1019547485  
       31 天前
    我是编辑 /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
    tianguozhong1
        3
    tianguozhong1  
       31 天前
    debian 网络配置是有点蠢,第一次用研究半天
    jasonyang9
        4
    jasonyang9  
       31 天前 via Android
    和你是否装了 de 有关
    EVANGELIONAir
        5
    EVANGELIONAir  
       31 天前
    这是我给课题组配 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
    busier
        6
    busier  
       31 天前 via iPhone   ❤️ 9
    其实非常简单 记住一个原则就好了

    默认 /etc/network/interfaces 配置,且具有最高优先级。
    如果配置了,其他网络管理器程序不能接管网卡。

    但这个方式太古老,也不够灵活好用。

    所以,安装 NetworkManager 后,需要清空 /etc/network/interface 才能被 NetworkManager 接管。
    接管后就可以用 NetworkManager 的管理工具 nmcli nmtui 配置。

    安装 DE 默认就会安装 NetworkManager 。
    danbai
        7
    danbai  
       31 天前
    我也用 systemd-networkd
    SenLief
        8
    SenLief  
       31 天前
    虚拟机可能有干扰了 dhcp ,networking.service 是遗留问题,systemd 以前是利用它来管理的,读取 interface 文件来启动和关闭,networkd 就是 systemd 的网络配套服务。

    不过 debian 12 一般配置网络会采用 netplan 来配置网络。配置文件在/etc/netplan 下面
    zouqiang
        9
    zouqiang  
       31 天前
    netplan 吧
    5xX4U5sUwdELgdQ3
        10
    5xX4U5sUwdELgdQ3  
       31 天前   ❤️ 5
    Debian 12 的网络配置工具是有点混乱, 稍不留神就会冲突.

    简单来说, 现在有三种网络配置工具,

    1. networking.service
    在 ifupdown 包中, 包含了 ifupdown 命令和 networking.service, 配置文件为/etc/network/interfaces, 通常会配合上 net-tools 包中的 ifconfig 等命令来配置, 已经不推荐使用了.

    2. systemd-networkd.service
    配置文件在/etc/systemd/network/, 主要用于 headless 的服务器, 虽然也有个前端命令 networkctl, 不过主要还是直接修改文件来配置

    3. NetworkManager
    配置文件在/etc/NetworkManager/system-connections, 一般不直接修改文件, 而是通过 nmcli 和 nmtui 命令以及各个桌面环境的 GUI 程序来配置. 主要用于桌面环境. 缺点是资源占用多.

    第二个问题: Debian 12, 默认依然使用第一种网络管理方式. 阿里云上的 Debian 应该是修改过的.

    至于第一个问题: 需要查看是否有冲突的服务.

    个人使用经验, 我现在不管什么发行版都会统一使用 NetworkManager 来管理, nmtui 很方便, 不用去记忆配置文件语法.
    jasonyang9
        11
    jasonyang9  
       31 天前 via Android
    如果你装了 de ,它就假设你在用台式机工作站或笔记本,那么 networkmanager 会接管,如果主机从一个网络环境移动到另一个,nm 会自动处理。。。
    RobinHuuu
        12
    RobinHuuu  
       31 天前 via iPhone
    nm 好用,实在不行,装个 desktop ,用 gui 设置后关掉 desktop
    cdlnls
        13
    cdlnls  
       31 天前 via Android
    @5xX4U5sUwdELgdQ3 op 贴出来的文档是没错的,一般云上都是用的云镜像 cloud-init 初始化的系统,云镜像 debian 是用的 netplan 。
    cdlnls
        14
    cdlnls  
       31 天前 via Android
    一般云上 debian 系的都是 netplan 配置,桌面的大多都是 NetworkManager 来配置(可能是因为 NetworkManager 有 gui 前端吧)
    hwdq0012
        15
    hwdq0012  
       31 天前
    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
    yinmin
        16
    yinmin  
       31 天前
    用指令 nmtui 会出现一个界面直接修改 ip 地址
    fox0001
        17
    fox0001  
       31 天前 via Android   ❤️ 4
    /etc/network/interfaces ,古老但好用
    flyqie
        18
    flyqie  
       31 天前 via Android   ❤️ 1
    @fox0001 #17

    是的,/etc/network/interfaces 这种古老的方式相比于 netplan 和 systemd 来说是最通用且最可简单可控的了。
    BeforeTooLate
        19
    BeforeTooLate  
       30 天前
    如果 op 想要固定 ip ,其实搭配 vagrant 使用最简单。
    adoal
        20
    adoal  
       30 天前
    手装的系统是 ifupdown ,官方 cloud image 是 netplan
    easy88866
        21
    easy88866  
       30 天前
    @5xX4U5sUwdELgdQ3 感谢你的整理,非常实用。

    这里再 append 一些内容。

    根据 Debian 文档 [4 ways to configure the network]( https://wiki.debian.org/NetworkConfiguration#A4_ways_to_configure_the_network) 目前 Debian 支持 4 种方式配置网络。

    > - The interfaces configuration file at /etc/network/interfaces (this page): for basic or simple configurations (e.g. workstation)
    > - [NetworkManager]( https://wiki.debian.org/NetworkManager): This is the default for Laptop configuration
    > - Systemd: [Debian reference Doc Chapter 5]( https://www.debian.org/doc/manuals/debian-reference/ch05.en.html#_the_modern_network_configuration_without_gui)
    > - [Netplan]( https://wiki.debian.org/Netplan): [Debian reference Doc Chapter 5]( https://www.debian.org/doc/manuals/debian-reference/ch05.en.html#_the_modern_network_configuration_for_cloud)



    之前站内有讨论过不同工具间关系,可以参考 [Linux 下的网络管理服务太乱了,我现在都没搞明白之间的关系]( https://v2ex.com/t/834317)



    我个人偏好 systemd , 一般会在配置网络前,把不同工具的配置文件清理一遍,防止互相影响。具体路径如下

    - /etc/network/interfaces
    - /etc/network/interfaces.d
    - /etc/systemd/network
    - /etc/netplan

    NetworkManager 的配置文件在 /etc/NetworkManager ,我没动过好像也没影响。
    julyclyde
        22
    julyclyde  
       29 天前
    @jasonyang9 networking 为什么和 desktop environment 相关呢?
    julyclyde
        23
    julyclyde  
       29 天前
    @flyqie netplay try 功能我觉得比 ifupdown 安全一些,万一改坏了似乎还有诈尸的可能性
    julyclyde
        24
    julyclyde  
       29 天前
    @easy88866 关系,就是阿猫阿狗都想当别人的 frontend
    古代曾经在 sound 界就出过类似的事,oss 和 alsa 各自可以代理对方
    现在 netplan 也是可以代理 networkmanager (和一个别的啥?)的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2373 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 00:19 · PVG 08:19 · LAX 17:19 · JFK 20:19
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.