51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

Debian 12 使用Netplan配置静态IP

目录

介绍 {#i}

刚把小鸡玩炸了,索性重装了个Debian 12系统,想要配置下静态IP,发现找不到/etc/network/interfaces了,便去查了了Debian 12 的官方文档,发现其不再使用/etc/network/interfaces,在服务器版已经采用Netplan了。

桌面版本使用NetworkManager (NetworkManager适合桌面GUI使用)

服务器版本使用 netplan网络配置 来配置 systemd-networkd (不过netplan也支持NetworkManager作为后端)

网上也有教程可以切换位传统的那种配置方法,但我们总得与时俱进不是,我们今天就来看下如何使用Netplan配置静态IP。

工作原理 {#i-2}

Netplan 从 /etc/netplan/*.yaml 读取配置,配置可以是管理员或者系统安装人员配置; 也可以是云镜像或者其他操作系统部署设施自动生成。 在系统启动阶段早期, Netplan 在 /run 目录生成好配置文件并将设备控制权交给相关后台程序。

Netplan 目前支持以下两种 网络管理工具

  • NetworkManager
  • Systemd-networkd

一言以蔽之,从前你需要根据不同的管理工具编写网络配置,现在 Netplan 将管理工具差异性给屏蔽了。 你只需按照 Netplan 规范编写 YAML 配置,不管底层管理工具是啥,一份配置走天下!

使用指引 {#i-3}

默认在 /etc/netplan 目录下有一个 01-netcfg.yaml 内容如下:
netplan初始DHCP配置

# This file describes the network interfaces available on your system
# For more information, see netplan(5).
network:
  version: 2
  renderer: networkd
  ethernets:
    ens2:
      dhcp4: yes

备注:

如果安装操作系统的时耦没有自动创建一个 YAML 配置文件,可以通过以下命令先生成一个:

sudo netplan generate

不过,对于Ubuntu的desktop, server, cloud版本,自动生成的配置文件会采用不同的名字,例如 01-network-manager-all.yaml 或 01-netcfg.yaml 。

  • 编辑 /etc/netplan/01-netcfg.yaml

配置 {#i-4}

很显然,没有配置, Netplan 啥都做不了。 最简单有用的配置片段如下:

network:
    version: 2
    renderer: NetworkManager

这个配置让 NetworkManager 管理所有网络设备 (默认,只要检测到以太网设备接线,便以 DHCP 模式启动该设备)。

使用 Systemd-networkd ,则不会自动启动网络设备; 每个需要启用的网卡均需要在 /etc/netplan 配置文件中指定配置。 网络配置示例如下:

network:
    ethernets:
        enp0s3:
            addresses: []
            dhcp4: true
            optional: true
        enp0s8:
            addresses: [192.168.56.3/24]
            dhcp4: no
            optional: true
    version: 2

这个配置为 enp0s3 网卡开启 DHCP 自动获取地址; 为 enp0s8 网卡配置了一个静态 IP 192.168.56.3 ,掩码是 24 位。

命令 {#i-5}

netplan 操作命令提供两个子命令:

  • netplan generate :以 /etc/netplan 配置为管理工具生成配置;
  • netplan apply :应用配置(以便生效),必要时重启管理工具;

因此,调整 /etc/netplan 配置后,需要执行以下命令方能生效:

$ netplan apply

配置示例 {#i-6}

DHCP {#DHCP}

network:
    ethernets:
        enp0s3:
            addresses: []
            dhcp4: true
    version: 2

静态配置 {#i-7}

network:
    ethernets:
        enp0s8:
            addresses: [10.0.0.2/24]
            gateway4: 10.0.0.1
            nameservers:
                addresses: [8.8.8.8,8.8.4.4]
            dhcp4: no
    version: 2

或者
netplan 静态IPP配置

 network:
   version: 2
   renderer: networkd
   ethernets:
     ens2:
       dhcp4: no
       dhcp6: no
       addresses: [192.168.122.11/24, ]
       gateway4: 192.168.122.1
      nameservers:
         addresses: [192.168.122.1, ]

行以下命令生效(注意在控制台执行,否则网络会断开):

sudo netplan apply

验证检查 ifconfig-a 可以看到IP地址已经修改成静态配置IP地址

netplan配置一个网卡多个IP {#netplanIP}

有时候需要在一个网卡上配置多个IP地址,实现单臂网桥路由,netplan也支持 interface alias 。配置方法很简单:

network:
  version: 2
  renderer: networkd
  ethernets:
    enp3s0:
     addresses:
       - 10.100.1.38/24
       - 10.100.1.39/24
     gateway4: 10.100.1.1

或者:

ethernets:
  enp3s0:
   addresses: [ 10.100.1.38/24, 10.100.1.39/24 ]

执行 netplanapply 可以看到系统网卡:

enp3s0
enp3s0:1

分配了IP地址 10.100.1.38 和 10.100.1.39

静态IPV4+静态IPV6配置 {#IPV4IPV6}

network:
    ethernets:
        eth0:
            addresses:
            - 2a04:xxxx:xxxx:xxxx::1/64
            - x.x.x.x/24
            #dhcp4: true
            gateway4: x.x.x.1
            gateway6: fe80::1
            nameservers:
                addresses:
                - 8.8.8.8
                - 2001:4860:4860::8888
            #match:
                #macaddress: 00:20:47:bf:aa:24
            #set-name: eth0
    version: 2

动态IPV4+静态IPV6配置 {#IPV4IPV6-2}

network:
    ethernets:
        eth0:
            addresses:
            - 2a04:xxxx:xxxx:xxxx::1/64
            dhcp4: true
            gateway6: fe80::1
            #match:
                #macaddress: 00:20:47:bf:aa:24
            #set-name: eth0
    version: 2

这是一个Netplan配置文件的示例,用于配置Debian或基于Ubuntu的系统的网络接口。以下是对这个配置文件的详细解释:
network:
version:2

  • network:这是Netplan配置文件的顶级部分,表示这是一个网络配置。
  • version:指定Netplan配置文件的版本。在这个示例中,版本为2,这是Netplan的第二个主要版本。

ethernets:
eth0:

  • ethernets:这个部分包含了以太网接口的配置信息。在这里,我们正在配置一个名为eth0的以太网接口。

addresses:
-2a04:bdc7:100:2d47::1/64

  • addresses:这里指定了以太网接口的IPv6地址。在示例中,IPv6地址是2a04:bdc7:100:2d47::1/64,这是一个IPv6地址及其子网掩码的表示。

dhcp4:true

  • dhcp4:这一行指定以太网接口是否应该使用IPv4 DHCP协议来获取IP地址。在这个示例中,设置为true,表示启用IPv4 DHCP。

gateway6:fe80::1

  • gateway6:这里指定了IPv6的网关地址。在示例中,IPv6网关是fe80::1

match:
macaddress:00:20:47:bf:aa:35

  • match:这个部分用于配置匹配规则,以便将此配置应用于特定的网络接口。在示例中,我们使用MAC地址来匹配接口。只有当接口的MAC地址与00:20:47:bf:aa:35匹配时,才会应用这个配置。

set-name:eth0

  • set-name:这里指定了以太网接口的名称。在示例中,将接口名称设置为eth0

这个配置文件的目的是将以太网接口eth0配置为使用IPv4 DHCP获取IP地址,并分配一个IPv6地址和网关。它还包括一个匹配规则,以确保这个配置只适用于具有特定MAC地址的接口,并将接口名称设置为eth0。你可以根据需要进行修改,以适应你的网络配置需求。

References {#References}

https://linux.fasionchan.com/zh_CN/latest/administration/network/netplan.html

https://cloud-atlas.readthedocs.io/zh_CN/latest/linux/ubuntu_linux/network/netplan.html

https://cloud-atlas.readthedocs.io/zh_CN/latest/linux/ubuntu_linux/network/switch_nm.html


赞(2)
未经允许不得转载:工具盒子 » Debian 12 使用Netplan配置静态IP