使用Netplan建立Linux网络,简便的声明性方法

news2024/12/26 10:35:28

在这里插入图片描述
除了周围网络环境的复杂性之外,由于使用的技术堆栈和工具范围很广,Linux 网络可能会令人困惑。网桥、绑定、VRF 或路由的配置可以通过编程、声明、手动或自动化方式使用 ifupdown、ifupdown2、ifupdown-ng、iproute2、NetworkManager、systemd-networkd 等工具完成。这些工具中的每一个都使用不同的格式和位置来存储其配置文件。Netplan 是一种用于在 Linux 系统上轻松配置网络的实用程序,旨在统一和标准化管理员与这些底层技术的交互方式。从所需网络接口的 YAML 描述以及每个接口应配置的功能开始,Netplan 将为您选择的工具生成所有必要的配置。

在本文中,我们将概述 Ubuntu 如何使用 Netplan 以统一的方式管理 Linux 网络。通过跨两个不同的技术堆栈创建通用界面,IT 管理员可以从跨桌面和服务器的统一体验中受益,同时保留底层技术的独特优势。

但首先,让我们从一些历史开始,然后详细介绍我们今天所处的位置。

Netplan 在 Ubuntu 中的历史

从 Ubuntu 16.10 开始,由于需要以通用方式跨云元数据和其他安装程序系统表达网络配置,我们有机会切换到与基于依赖项的引导模型更好地集成的网络堆栈。我们在服务器安装上选择了systemd-networkd,因为它的上游社区活跃,因为它已经是Systemd的一部分,因此包含在任何Ubuntu基本安装中。与我们之前使用的ifupdown工具相比,它使用现代开发技术,良好的测试覆盖率和CI集成,对未来有更好的前景。在桌面安装中,我们继续使用NetworkManager,因为它与用户界面的集成非常好。

根据所使用的 Ubuntu 变体,必须管理和配置两个单独的网络堆栈可能会令人困惑,我们希望在任何版本的 Ubuntu 中提供简化的用户体验。因此,我们引入了 Netplan.io 作为 systemd-networkd 和 NetworkManager 之上的控制层。Netplan 将 /etc/netplan/ 中的声明式 YAML 文件作为输入,并根据系统配置在 /run/systemd/network/ 或 /run/NetworkManager/ 中为相关网络堆栈后端生成相应的网络配置。同时保持充分的灵活性,在需要时以本机方式控制底层网络堆栈。
在这里插入图片描述

谁在使用Netplan?

最新版本的Netplan已经可用并准备好安装在许多发行版上,例如Ubuntu,Fedora,Red Hat Enterprise Linux,Debian和Arch Linux。

乌班图

如上所述,Netplan 自 2016 年以来默认安装在 Ubuntu 系统上,因此每天在 Ubuntu 的多个长期支持版本(18.04、20.04、22.04)中被数百万用户使用。这主要涵盖了 Ubuntu 服务器场景,例如网桥、绑定、VLAN、VXLAN、VRF、IP 隧道或 WireGuard 隧道,使用 systemd-networkd 作为后端渲染器。

在 Ubuntu 桌面系统上,Netplan 可以通过其声明性 YAML 配置文件手动使用,它将处理这些文件以配置 NetworkManager 堆栈。继续阅读以了解将来如何通过自动化和与桌面堆栈的集成来改进这一点。

这可能不那么明显,但是许多人在通过cloud-init在AWS,Google Cloud或其他地方配置公共云实例时一直在使用Netplan而不知情。这是因为 cloud-init 的“网络配置版本 2”是 Netplan 的直通配置,然后 Netplan 将在给定的云实例上设置底层网络堆栈。这就是为什么Netplan也是Debian发行版上的一个关键软件包,因为它也默认用于Debian云映像。

我们对 Linux 网络的愿景

我们知道 Linux 网络可能是一头野兽,我们希望让简单的事情变得简单。但也允许任何复杂的自定义设置。使用 Netplan,日常网络需求通过易于理解且文档很好的 YAML 文件来满足,这些文件描述了本地网络接口的所需状态,这些文件将被渲染到相关网络堆栈的相应配置文件中,并在(重新)启动或运行时使用“netplan apply”CLI 应用。例如 /etc/netplan/lan.yaml:

network:
  version: 2
  renderer: networkd
  ethernets:
    enp3s0:
      dhcp4: true

拥有网络配置的单一事实来源对于管理员来说也很重要,因此他们不需要了解多个网络堆栈,而是可以依靠 /etc/netplan/ 中给出的声明性数据来配置系统,独立于底层网络配置后端。这对于为新的Linux安装提供初始网络配置也非常有帮助,例如通过安装系统,如Subiquity,Ubuntu的桌面安装程序或跨公共云和私有云的cloud-init。

除了描述和应用网络配置外,“netplan status”CLI 还可用于从底层网络堆栈(例如 systemd-networkd、NetworkManager 或 iproute2)查询相关数据,并以统一的方式呈现它们。
在这里插入图片描述
在Netplan项目中,我们努力实现非常高的测试自动化和覆盖率,在多个Linux发行版中进行大量的单元测试,集成测试和linting步骤,这为支持更高级的网络用例提供了很高的信心,例如Open vSwitch或SR-IOV网络虚拟化,以及正常的有线(静态IP,DHCP,路由), 无线(例如 WWAN 调制解调器、WPA2/3 连接、WiFi 热点、控制监管域等)和常见服务器场景。

如果存在Netplan本机未涵盖的场景,除了通过Netplan控制的接口并行进行手动配置外,它还允许完全灵活地直接通过systemd覆盖配置或NetworkManager直通设置控制底层网络堆栈。

Netplan 桌面集成的未来

在工作站上,最常见的情况是最终用户通过其用户界面工具配置 NetworkManager,而不是通过 Netplan 的声明性 YAML 文件(使用 NetworkManager 的本机配置文件)对其进行驱动。为了避免Netplan只是将控制权移交给此类系统上的NetworkManager,我们正在研究NetworkManager和Netplan之间的双向集成,以进一步改进Ubuntu桌面安装上的“单一事实来源”用例。

Netplan 正在发布一个“libnetplan”库,该库提供了一个 API 来访问 Netplan 的解析器和验证内部,NetworkManager 可以使用该库来写回网络接口配置。例如,通过NetworkManager的UI工具或D-Bus API给出的配置可以导出为Netplan的本机YAML格式,位于/etc/netplan/的公共位置。这样,管理员在管理桌面安装队列时只需要关心Netplan。该解决方案目前用于更受限的环境,如 Ubuntu Core,当使用 NetworkManager snap 时,我们将以 24.04 LTS 将其交付给通用 Ubuntu 桌面系统。

除了 NetworkManager 之外,libnetplan 还可用于与网络空间中的其他工具集成,例如 cloud-init,用于在播种新 Linux 映像时改进用户数据或安装系统的验证。

结论

总体而言,Netplan 可以被认为是网络环境中的良好公民,它与其他网络工具携手合作,可以轻松地以通用、简化和声明的方式控制现代网络堆栈,例如 systemd-networkd 或 NetworkManager。它为网络管理员提供了有关网络状态的“单一事实来源”,同时保持简单的事情简单,但允许任意复杂的自定义设置。
https://ubuntu.com/blog/a-declarative-approach-to-linux-networking-with-netplan

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/916706.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python土力学与基础工程计算.PDF-土的三项组成

5.3 Python求解 Python 求解代码如下: 1. # 定义已知参数 2. G_s 2.7 # 比重 3. w 0.2 # 含水量 4. e 0.6 # 孔隙比 5. gamma_w 9.81 # 水的重度 6. 7. # 根据公式计算饱和度 8. S_r G_s * w / e 9. print("饱和度为", S_r) 10. 11.…

UbuntuDDE 23.04发布,体验DeepinV23的一个新选择

UbuntuDDE 23.04发布,体验DeepinV23的一个新选择 昨晚网上搜索了一圈,无意看到邮箱一条新闻,UbuntuDDE 23.04发布了 因为前几天刚用虚拟机安装过,所以麻溜的从网站下载了ISO文件,安装上看看。本来没多想,…

亚信科技AntDB数据库通过GB 18030-2022最高实现级别认证,荣膺首批通过该认证的产品之列

近日,亚信科技AntDB数据库通过GB 18030-2022《信息技术 中文编码字符集》最高实现级别(级别3)检测认证,成为首批通过该认证的数据库产品之一。 图1:AntDB通过GB 18030-2022最高实现级别认证 GB 18030《信息技术 中文编…

得帆信息合伙人——张少伟:使用低代码就像逛宜家,总会有不期而至的小惊喜等着你

随着数字化、智能化、网络化、自动化阶段不断跃升,新技术不断涌现,数字化转型成了大多数企业的发展趋势。在这个背景下,以下问题是被提起次数较多的: 企业要不要买低代码?低代码到底能做什么系统?低代码适合…

Memtester的使用(xilinx zc706)

1.1:测试概述 Memtester主要是针对内存压测的工具,官方的解释:testing the memory subsystem for faults。主要是捕获内存错误和一直处于很高或者很低位的坏位,测试随机值、异或比较、减法、乘法、除法、与或运算等。memtester 是…

情感书单背景素材分享,轻松把书单制作成视频

在互联网时代,我们可以通过各种方式来分享自己的想法和创意。其中,视频是一种非常受欢迎的方式,它可以将图像、声音和文字有机地结合在一起,形成一个丰富多彩的信息载体。如果你想分享自己的情感书单,那么将其制作成视…

【自用】无法通过ESP32创建HomeAssistant实体问题解决(MQTT对ESP32创建实体请求无应答)

一、问题描述 1.使用 MQTTX 测试客户端能够创建实体 当通过 MQTTX 发送注册实体请求的时候,实体能够在 MQTT 服务器中注册成功。 2.使用 ESP32 无法创建实体 在ESP32中通过 publish() 函数发送注册请求的时候,并不会报任何错误,但 MQTT 服…

谷粒商城环境搭建二:开发环境统一

开发环境配置统一 Maven配置 查看maven信息 修改配置文件&#xff1a;apache-maven-3.3.9\conf\settings.xml# 配置阿里云镜像 <mirrors><mirror><id>nexus-aliyun</id><mirrorOf>central</mirrorOf><name>Nexus aliyun</name&…

行为型(十) - 解释器模式

一、概念 解释器模式&#xff08;Interpreter Pattern&#xff09;&#xff1a;解释器模式为某个语言定义它的语法&#xff08;或者叫文法&#xff09;表示&#xff0c;并定义一个解释器用来处理这个语法。实际应用中较少用到的行为模式。 二、实现 举个常见的面试题&#x…

基于开源IM即时通讯框架MobileIMSDK:RainbowChat-iOS端v7.0版已发布

关于MobileIMSDK MobileIMSDK 是一套专门为移动端开发的开源IM即时通讯框架&#xff0c;超轻量级、高度提炼&#xff0c;一套API优雅支持 UDP 、TCP 、WebSocket 三种协议&#xff0c;支持 iOS、Android、H5、标准Java、小程序、Uniapp&#xff0c;服务端基于Netty编写。 工程…

WebDAV之π-Disk派盘 + Cloud Player

Cloud Player云媒体播放器是存储在常见云平台中的内容的通用播放器,无需将其下载到设备。支持以下云平台:Google Drive、DropBox、One Drive、WebDav等。此外,在播放或查看文件时,您可以将其下载到本地设备中,以便在未连接到互联网时稍后进行检查。 π-Disk派盘 – 知识管…

Docker容器:docker-compose管理创建LNMP服务并运行Wordpress网站平台

文章目录 一&#xff0e;项目环境1. 环境描述2.项目需求 二&#xff0e;部署过程1.安装Docker2.安装Docker加速器3.Docker-Compose安装部署4.准备依赖文件、配置nginx5.配置mysql6.配置php7.编写docker-compose.yml8.验证 三.容器快照&#xff0c;然后将Docker镜像打包成tar包备…

快速上手Linux核心命令:网络相关命令

前言 这期呢主要说一说Linux中与网络相关命令&#xff0c;一共包含19个命令 测试主机之间网络是否联通 1、简介 ping 命令不管是在Windows还是Linux都是比较常用的命令。命令用于测试主机之间的网络连通性 2、语法格式 ping [参数选项] [目标主机] 3、参数说明 参数参数说明…

jsp 毕业生信息系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 JSP毕业生信息系统是一套完善的java web信息管理系统&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为 TOMCAT7.0,Myeclipse8.5开发&#xff0c;数据库为Mysql5.0&am…

【STM32RT-Thread零基础入门】 7. 线程创建应用(多线程运行机制)

硬件&#xff1a;STM32F103ZET6、ST-LINK、usb转串口工具、4个LED灯、1个蜂鸣器、4个1k电阻、2个按键、面包板、杜邦线 文章目录 前言一、RT-Thread相关接口函数1. 获取当前运行的线程2. 设置调度器钩子函数 二、程序设计1. 头文件包含及宏定义2. 线程入口函数定义3. main函数设…

【面试经典150题】合并两个有序数组-JavaScript版

题目来源 初始思路&#xff1a;同时循环遍历两个数组&#xff0c;选出较小元素放入新数组。剩下一个没有被遍历完的数组的剩余元素直接拼接到新数组后。 错误示例&#xff1a; var merge function (nums1, m, nums2, n) {let i 0,j 0,nums3 [];while (i < m &&am…

会计如何使用ChatGPT提高工作效率

文章目录 ChatGPT改变了会计行业微软重新定义了PC交互应对ChatGPT带来的冲击给财务人员的建议总结 ✍创作者&#xff1a;全栈弄潮儿 &#x1f3e1; 个人主页&#xff1a; 全栈弄潮儿的个人主页 &#x1f3d9;️ 个人社区&#xff0c;欢迎你的加入&#xff1a;全栈弄潮儿的个人社…

在Linux搭建GitLab私有仓库配置实现远程访问私有仓库Gitlab ——【内网穿透】

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏: 《高效编程技巧》《cpolar》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 文章目录 前言1. 下载Gitlab2. 安装Gitlab3. 启动Gitlab4. 安装cpolar5. 创建隧道配置访问地址6. 固定GitLab访问地址6.1 保留…

人工智能AI时代:全栈程序员的人生规划

标题 人工智能AI时代&#xff1a;全栈程序员的人生规划1. AI时代的背景1.1 技术的快速发展1.2 全栈程序员面临的挑战 2. 全栈程序员的新技能要求2.1 机器学习与深度学习基础2.2 数据处理与分析2.3 云计算与边缘计算 3. 人生规划的建议3.1 持续学习3.2 拥抱变化3.3 寻找与AI结合…

Map和Set详解

一、二叉搜索树搜索树 1.二叉搜索树的概念 二叉搜索树又称二叉排序树&#xff0c;它或者是一棵空树&#xff0c;或者是具有以下性质的二叉树: 若它的左子树不为空&#xff0c;则左子树上所有节点的值都小于根节点的值 若它的右子树不为空&#xff0c;则右子树上所有节点的值都…