Debian 12 使用Netplan配置静态IP

snail 归档Debian 12 使用Netplan配置静态IP已关闭评论阅读模式

介绍

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

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

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

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

工作原理

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

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

  • NetworkManager
  • Systemd-networkd

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

使用指引

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

netplan初始DHCP配置

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

备注:

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

  1. sudo netplan generate

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

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

配置

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

  1. network:
  2. version: 2
  3. renderer: NetworkManager

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

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

  1. network:
  2. ethernets:
  3. enp0s3:
  4. addresses: []
  5. dhcp4: true
  6. optional: true
  7. enp0s8:
  8. addresses: [192.168.56.3/24]
  9. dhcp4: no
  10. optional: true
  11. version: 2

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

命令

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

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

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

  1. $ netplan apply

配置示例

DHCP

  1. network:
  2. ethernets:
  3. enp0s3:
  4. addresses: []
  5. dhcp4: true
  6. version: 2

静态配置

  1. network:
  2. ethernets:
  3. enp0s8:
  4. addresses: [10.0.0.2/24]
  5. gateway4: 10.0.0.1
  6. nameservers:
  7. addresses: [8.8.8.8,8.8.4.4]
  8. dhcp4: no
  9. version: 2

或者

netplan 静态IPP配置

  1. network:
  2. version: 2
  3. renderer: networkd
  4. ethernets:
  5. ens2:
  6. dhcp4: no
  7. dhcp6: no
  8. addresses: [192.168.122.11/24, ]
  9. gateway4: 192.168.122.1
  10. nameservers:
  11. addresses: [192.168.122.1, ]

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

  1. sudo netplan apply

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

netplan配置一个网卡多个IP

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

  1. network:
  2. version: 2
  3. renderer: networkd
  4. ethernets:
  5. enp3s0:
  6. addresses:
  7. - 10.100.1.38/24
  8. - 10.100.1.39/24
  9. gateway4: 10.100.1.1

或者:

  1. ethernets:
  2. enp3s0:
  3. addresses: [ 10.100.1.38/24, 10.100.1.39/24 ]

执行 netplan apply 可以看到系统网卡:

  1. enp3s0
  2. enp3s0:1

分配了IP地址 10.100.1.38 和 10.100.1.39

静态IPV4+静态IPV6配置

  1. network:
  2. ethernets:
  3. eth0:
  4. addresses:
  5. - 2a04:xxxx:xxxx:xxxx::1/64
  6. - x.x.x.x/24
  7. #dhcp4: true
  8. gateway4: x.x.x.1
  9. gateway6: fe80::1
  10. nameservers:
  11. addresses:
  12. - 8.8.8.8
  13. - 2001:4860:4860::8888
  14. #match:
  15. #macaddress: 00:20:47:bf:aa:24
  16. #set-name: eth0
  17. version: 2

动态IPV4+静态IPV6配置

  1. network:
  2. ethernets:
  3. eth0:
  4. addresses:
  5. - 2a04:xxxx:xxxx:xxxx::1/64
  6. dhcp4: true
  7. gateway6: fe80::1
  8. #match:
  9. #macaddress: 00:20:47:bf:aa:24
  10. #set-name: eth0
  11. version: 2

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

  • network:这是Netplan配置文件的顶级部分,表示这是一个网络配置。
  • version:指定Netplan配置文件的版本。在这个示例中,版本为2,这是Netplan的第二个主要版本。
  • ethernets:这个部分包含了以太网接口的配置信息。在这里,我们正在配置一个名为eth0的以太网接口。

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

  • addresses:这里指定了以太网接口的IPv6地址。在示例中,IPv6地址是2a04:bdc7:100:2d47::1/64,这是一个IPv6地址及其子网掩码的表示。
  • dhcp4:这一行指定以太网接口是否应该使用IPv4 DHCP协议来获取IP地址。在这个示例中,设置为true,表示启用IPv4 DHCP。
  • 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

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