二维码

制定Netplan计划

1888 人阅读 | 时间:2020年01月03日 13:58

Ubuntu改变了网络。拥抱YAML。

如果说实话,我仍然不喜欢从切换eth0, eth1, eth2enp3s0, enp4s0, enp5s0当我输入不熟悉的接口名称时,我学会了接受它并喃喃自语。然后,我安装了新的LTS版本的Ubuntu并输入vi /etc/network/interfaceskes。在一个简单的文本文件中输入服务器的IP信息的技术寿命之后,就不再需要做这些事情了。叹。好消息是,在弄清楚适用于台式机和服务器环境的Netplan时,我解决了多年以来一直困扰着DNS的问题(稍后再介绍)。

Netplan的基础

配置基于Debian的网络接口的旧方法基于该 ifupdown软件包。新的默认名称称为Netplan,尽管使用起来并不难,但是却大不相同。Netplan是用于配置实际配置接口的后端守护程序的接口。目前,支持的后端是NetworkManager和networkd

如果您告诉Netplan使用NetworkManager,则所有接口配置控制都将移交给桌面上的GUI界面。NetworkManager程序本身未更改;它与您可能已经使用多年的基于GUI的界面配置系统相同。

如果您告诉Netplan使用networkd,则systemd本身将处理接口配置。配置仍然是使用Netplan文件完成的,但是一旦“应用”,Netplan将创建systemd所需的后端配置。Netplan文件与旧的/ etc / network / interfaces文件有很大的不同,但是它使用YAML语法,很容易弄清楚。

桌面和DNS

如果安装GUI版本的Ubuntu,则默认情况下将Netplan配置为NetworkManager作为后端。您的系统应该通过DHCP或通过GUI添加的静态条目获取IP信息。通常这不是问题,但是我使用split-DNS设置和经历了一段糟糕的时光 systemd-resolved我敢肯定,配置文件是一种神奇的组合,可以使一切正常运行,但是我已经花了很多时间,而且总是表现得有些奇怪。由于我的内部DNS服务器与外部DNS服务器(即split-DNS)使用不同的域名解析方式,因此出现了随机查找失败的情况。有时ping会解决,但dig不会解决 有时内部A记录会解决,但CNAME将不会。有时我从外部DNS服务器(从Internet)获得解析,即使我从未配置内部DNS以外的任何东西!

我决定禁用systemd-resolved这有可能破坏VPN中的DNS查找,但我对此没有任何疑问。通过 resolved 处理DNS信息,/ etc / resolv.conf文件将127.0.0.53指向名称服务器。禁用systemd-resolved将停止自动创建文件。幸运的是,NetworkManager本身可以处理/etc/resolv.conf的创建和修改。进行更改后,拆分DNS解析将不再有问题。这是一个三步过程:

  1. sudo systemctl disable systemd-resolved.service

  2. 然后sudo rm /etc/resolv.conf(摆脱符号链接)。

  3. 编辑/etc/NetworkManager/NetworkManager.conf文件,然后在该 [main] 部分中添加一行,内容为DNS=default

完成这些步骤后,NetworkManager本身将创建/etc/resolv.conf文件,并且将使用通过DHCP或静态条目提供的DNS服务器,而不是127.0.0.53条目。我不确定为什么 resolved dæmon会为我错误地解析内部地址,但是即使使用笔记本电脑在网络之间进行切换,上述方法也是万无一失的。

Netplan CLI配置

如果Ubuntu以服务器模式安装,则几乎可以肯定将其配置为networkd用作后端。要检查,请查看/etc/netplan/config.yaml文件。renderer应设置 networkd 才能使用的systemd-networkd后端。该文件应如下所示:

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

重要说明:请记住,对于YAML文件,空格很重要,因此缩进很重要。这也是 重要的是要记住,在进行任何更改后,你需要运行sudo netplan apply这样的后端配置文件填充。

默认渲染器为networkd,因此您可能在配置文件中没有该行。您的配置文件也可能在/ etc / netplan文件夹中被命名为其他名称。读取所有.conf文件,因此只要以.conf结尾,调用什么都没有关系。静态配置非常容易设置:

network:
  version: 2
  renderer: networkd
  ethernets:
    enp2s0:
      dhcp4: no
      addresses:
        - 192.168.1.10/24
        - 10.10.10.10/16
      gateway4: 192.168.1.1
      nameservers:
        addresses: [192.168.1.1, 8.8.8.8]

注意,我已经为接口分配了多个IP地址。Netplan不支持像这样的虚拟接口enp3s0:0,而是可以将多个IP地址分配给单个接口。

不幸的是,networkd如果禁用了resolveddæmon 则不会创建/etc/resolv.conf文件如果您在无头计算机上使用分割DNS时遇到问题,我想出的最佳解决方案是禁用 systemd-resolved然后手动创建/etc/resolv.conf文件。由于无头电脑通常不会像笔记本电脑那样移动,因此/etc/resolv.conf文件很可能不需要更改。不过,我还是希望 networkd 可以像NetworkManager一样管理resolv.conf文件。

高级网络配置

配置格式是不同的,但是仍然可以使用Netplan进行更高级的网络配置:

粘接:

network:
  version: 2
  renderer: networkd
  bonds:
    bond0:
      dhcp4: yes
      interfaces:
        - enp2s0
        - enp3s0
      parameters:
        mode: active-backup
        primary: enp2s0

的各种结合模式(balance-rr, active-backupbalance-xor, broadcast802.3adbalance-tlb和 balance-alb)的支持。

桥接:

network:
  version: 2
  renderer: networkd
  bridges:
    br0:
      dhcp4: yes
      interfaces:
        - enp4s0
        - enp3s0

桥接甚至更容易设置。此配置使用列出的两个接口创建桥接设备。设备(br0)通过DHCP获取地址信息。

CLI网络命令

如果您是像我这样顽固的老系统管理员,则可能ifconfig根本不考虑就输入 查看IP信息。不幸的是,这些工具通常不是默认安装的。这实际上不是Ubuntu和Netplan的错。旧的ifconfig工具集已被弃用。如果要使用旧ifconfig工具,可以安装软件包:

sudo apt install net-tools

但是,如果您想以“正确”的方式进行操作,则新的“ ip”工具是执行此操作的正确方法。以下是一些我通常会做的事情 ifconfig

显示网络接口信息。

旧方法:

ifconfig

新的方法:

ip address show

(或者您可以这样做ip a,实际上键入的次数少于 ifconfig。)

打开界面。

旧方法:

ifconfig enp3s0 up

新的方法:

ip link set enp3s0 up

分配IP地址。

旧方法:

ifconfig enp3s0 192.168.1.22

新的方法:

ip address add 192.168.1.22 dev enp3s0

分配完整的IP信息。

旧方法:

ifconfig enp3s0 192.168.1.22 net mask 255.255.255.0 broadcast
 ↪192.168.1.255

新的方法:

ip address add 192.168.1.22/24 broadcast 192.168.1.255
 ↪dev enp3s0

添加别名界面。

旧方法:

ifconfig enp3s0:0 192.168.100.100/24

新的方法:

ip address add 192.168.100.100/24 dev enp3s0 label enp3s0:0

显示路由表。

旧方法:

route

新的方法:

ip route show

添加路线。

旧方法:

route add -net 192.168.55.0/24 dev enp4s0

新的方法:

ip route add 192.168.55.0/24 dev enp4s0

老狗和新技巧

第一次安装Ubuntu 18.04时,我讨厌Netplan。实际上,在我要安装的特定服务器上,我实际上重新安装了16.04,因为它“很舒服”。一段时间后,好奇心变得更好了,我调查了这些变化。我对旧的/ etc / network / interfaces文件仍然比较满意,但是我不得不承认,Netplan更具意义。有一个用于配置网络的“前端”,并且使用不同的后端进行繁重的工作。现在,唯一的后端是GUI NetworkManager和systemd-networkd dæmon。但是,使用模块化系统,有一天可能会发生变化,而无需学习配置接口的新方法。对该renderer行进行简单的更改即可 将配置信息发送到新的后端。

关于新的命令行网络工具(ipvs. ifconfig),它的行为实际上更像其他网络设备(路由器等),因此这可能也是一个不错的更改。作为技术人员,我们需要准备好并渴望学习新事物。如果我们不总是尝试下一个最好的方法,我们都将配置Trumpet Winsock以便在Windows 95机器上拨入Internet。我很高兴尝试了新的Linux,尽管它还不那么引人注目,但我也很高兴也尝试了Netplan!


©著作权归作者所有:来自ZhiKuGroup博客作者没文化的原创作品,如需转载,请注明出处,否则将追究法律责任 来源:ZhiKuGroup博客,欢迎分享。

评论专区
  • 昵 称必填
  • 邮 箱选填
  • 网 址选填
◎已有 0 人评论
搜索
作者介绍
30天热门
×
×
本站会员尊享VIP特权,现在就加入我们吧!登录注册×
»
会员登录
新用户注册
×
会员注册
已有账号登录
×