Ubuntu改变了网络。拥抱YAML。
如果说实话,我仍然不喜欢从切换eth0, eth1, eth2
为enp3s0, enp4s0, enp5s0
。当我输入不熟悉的接口名称时,我学会了接受它并喃喃自语。然后,我安装了新的LTS版本的Ubuntu并输入vi /etc/network/interfaces
。kes。在一个简单的文本文件中输入服务器的IP信息的技术寿命之后,就不再需要做这些事情了。叹。好消息是,在弄清楚适用于台式机和服务器环境的Netplan时,我解决了多年以来一直困扰着DNS的问题(稍后再介绍)。
配置基于Debian的网络接口的旧方法基于该 ifupdown
软件包。新的默认名称称为Netplan,尽管使用起来并不难,但是却大不相同。Netplan是用于配置实际配置接口的后端守护程序的接口。目前,支持的后端是NetworkManager和networkd
。
如果您告诉Netplan使用NetworkManager,则所有接口配置控制都将移交给桌面上的GUI界面。NetworkManager程序本身未更改;它与您可能已经使用多年的基于GUI的界面配置系统相同。
如果您告诉Netplan使用networkd
,则systemd本身将处理接口配置。配置仍然是使用Netplan文件完成的,但是一旦“应用”,Netplan将创建systemd所需的后端配置。Netplan文件与旧的/ etc / network / interfaces文件有很大的不同,但是它使用YAML语法,很容易弄清楚。
如果安装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解析将不再有问题。这是一个三步过程:
做sudo systemctl disable systemd-resolved.service
。
然后sudo rm /etc/resolv.conf
(摆脱符号链接)。
编辑/etc/NetworkManager/NetworkManager.conf文件,然后在该 [main]
部分中添加一行,内容为DNS=default
。
完成这些步骤后,NetworkManager本身将创建/etc/resolv.conf文件,并且将使用通过DHCP或静态条目提供的DNS服务器,而不是127.0.0.53条目。我不确定为什么 resolved
dæmon会为我错误地解析内部地址,但是即使使用笔记本电脑在网络之间进行切换,上述方法也是万无一失的。
如果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
如果禁用了resolved
dæ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-backup
,balance-xor
, broadcast
,802.3ad
,balance-tlb
和 balance-alb
)的支持。
桥接:
network: version: 2 renderer: networkd bridges: br0: dhcp4: yes interfaces: - enp4s0 - enp3s0
桥接甚至更容易设置。此配置使用列出的两个接口创建桥接设备。设备(br0
)通过DHCP获取地址信息。
如果您是像我这样顽固的老系统管理员,则可能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
行进行简单的更改即可 将配置信息发送到新的后端。
关于新的命令行网络工具(ip
vs. ifconfig
),它的行为实际上更像其他网络设备(路由器等),因此这可能也是一个不错的更改。作为技术人员,我们需要准备好并渴望学习新事物。如果我们不总是尝试下一个最好的方法,我们都将配置Trumpet Winsock以便在Windows 95机器上拨入Internet。我很高兴尝试了新的Linux,尽管它还不那么引人注目,但我也很高兴也尝试了Netplan!
评论专区