一、前言
从Ubuntu 17.10 Artful开始,Netplan取代ifupdown成为默认的配置实用程序,网络管理改成 netplan 方式处理,不在再采用从/etc/network/interfaces 里固定 IP 的配置 ,配置写在 /etc/netplan/01-network-manager-all.yaml 或者类似名称的 yaml 文件里;Ubuntu 18.04发布后,Ubuntu和Debian又移除了以前的ifup/ifdown命令和/etc/network/interfaces配置文件,转而使用ip link set或者/etc/netplan/01-netcfg.yaml模板和sudo netplan apply命令实现网络管理。
Netplan 是抽象网络配置描述器的简称,是Ubuntu 17.10及更高版本中默认的网络配置工具。它是一个命令行工具,可以帮助用户轻松地配置网络接口,包括静态或动态IP地址、网关、DNS等,用于配置Linux网络。 它采用YAML格式的配置文件,这使得配置文件易于阅读和编辑,并且可以通过版本控制系统进行管理。此外,Netplan还支持基于渲染器的网络配置,这意味着它可以根据不同的网络配置需求,通过netplan命令,只需用一个 YAML文件描述每个网络接口所需配置,就可以应用该配置的生效网络,Netplan目前支持以下两种网络管理工具/引擎 :NetworkManager和Systemd-networkd,在YAML文件中通过renderer关键字进行描述,networkd和NetworkManager,但实际它并不关心底层管理工具是NetworkManager还是networkd。如果安装的是服务器版本,则默认使用networkd进行管理,并且不会安装NetworkManager和提供nmcli接口。如果安装的是桌面版本,则默认使用NetworkManager进行管理。
Netplan的一个主要优势是它可以帮助用户减少一些常见的网络配置问题,例如网络命名约定不一致、网络接口名称的变化等等。Ubuntu开发人员决定引入Netplan的主要原因是为了提高Ubuntu系统的网络配置体验和一致性,主要它提供了一个现代化的、易于阅读和编辑的YAML格式的配置文件,可以轻松地管理多个网络接口和配置参数,并支持多种配置引擎。使用Netplan,用户可以轻松地配置多个网络接口,并可以指定其默认路由,从而提高网络性能和安全性。Ubuntu系统可自动检测网络接口和硬件变化,并自动更新配置文件,避免了用户手动修改网络配置文件所带来的错误和不便。
附件:官方文档、网络介绍、Netplan、Netplan Design、Netplan
二、网络配置
2.1 Netplan
netplan从/etc/netplan/文件夹中读取YAML配置文件,并按照其中的配置更新到后端网络映射文件;在系统启动阶段早期,netplan会读取配置文件,根据“network renderer”的指定,读取/{lib,etc,run}/netplan/*.yaml,所有的都会读到,在/run目录生成好配置文件并将设备控制权交给相关后台程序(网络守护进程)。/run/netplan下的yml文件会映射到/etc/netplan,其他目录下的文件会映射到/lib/netplan下。
配置项说明:
network: 该标签是配置文件的根标签,表示整个网络的配置。可以在该标签下定义多个网络接口的配置,以及一些全局设置。
version: 该标签用于指定 Netplan 的版本号。目前版本为 2。
renderer: 该标签用于指定网络接口的配置方式,支持 networkd 和 NetworkManager 两种渲染器。
ethernets: 该标签用于定义以太网接口的配置。
bridges: 该标签用于定义桥接接口的配置。
vlans: 该标签用于定义 VLAN 接口的配置。
bonds: 该标签用于定义网卡绑定接口的配置。
wifis: 该标签用于定义 Wi-Fi 接口的配置。
access-points: 该标签用于定义 Wi-Fi 接口的可访问点配置。
nameservers: 该标签用于定义 DNS 解析器的配置。
routes: 该标签用于定义路由表的配置。
dhcp4 和 dhcp6: 该标签用于定义 DHCP 的配置,包括是否使用 DHCP 和 DHCP 的选项。
更多参看或执行netplan help
:netplan、yaml配置说明、netplan-dbus、netplan-get、netplan-try
注:也可使用NM,再/etc/NetworkManager/NetworkManager.conf配置文件的managed = true,在重启NetworkManager服务:sudo service network-manager restart。
2.2 网络配置常用命令
1)网络基本信息查看
sudo ipconfig #ip a s
#或lshw命令会提供对指定设备更详细的信息
sudo lshw -class network
sudo apt-get install netplan.io
sudo apt-get install net-tools
2)网络状态及配置参数查看
sudo ethtool eth4
//输出如下,该命令可查看到:自动写上,全双工,port,开机自唤起等属性
sudo ethtool eth4
Settings for eth4:Supported ports: [ FIBRE ]Supported link modes: 10000baseT/FullSupported pause frame use: NoSupports auto-negotiation: NoSupported FEC modes: Not reportedAdvertised link modes: 10000baseT/FullAdvertised pause frame use: NoAdvertised auto-negotiation: NoAdvertised FEC modes: Not reportedSpeed: 10000Mb/sDuplex: FullPort: FIBREPHYAD: 0Transceiver: internalAuto-negotiation: offSupports Wake-on: dWake-on: dCurrent message level: 0x00000014 (20)link ifdownLink detected: yes
3)ip地址配置
sudo ip addr add 10.1.2.5/24 dev enp0s25
#对指定网卡配置静态ip,配置后立即生效,多临时用户配置网络
ip link set dev enp0s25 up
#启用网卡
ip link set dev enp0s25 down
#关停网卡
ip address show dev enp0s25
#验证
sudo ip route add default via 10.1.2.1
#配置默认网关
ip route show
#验证路由
ip addr flush eth0
#重置网卡配置,该命令不会清楚/etc/resolv.conf内容,
ip route add <IP段>/<掩码> via <网关> dev <网卡名>
#配置静态路由,临时生效
4)网卡DHCP配置,借助于/etc/netplan/99_config.yaml配置文件来进行,如下所示,完成后sudo netplan apply生效即可。
network:version: 2renderer: networkd #初始指定底层使用的网络管理工具,这里使用networkdethernets:enp3s0:dhcp4: true
注:如果是带有无线网络的移动设备,推荐使用NetworkManager,可以通过NetworkManager切换环境网络以及修改WiFi密码;如果是非移动的设备(或无需无线网络的虚拟机),更推荐network。
5)通过/etc/netplan/99_config.yaml进行静态ip配置:注意缩进不能用tab
network:version: 2renderer: networkdethernets:eth0:addresses:- 10.10.10.2/24routes:- to: defaultvia: 10.10.10.1nameservers:search: [mydomain, otherdomain]addresses: [10.10.10.1, 1.1.1.1]
注:Ubuntu Bionic 18.04 LTS中的netplan不理解上述指定默认路由的“to:default”语法,这时可使用旧的gateway4:10.10.10.1这种方式指定,而不是整个routes:语句块。
6)无线wifi配置
2.3 Netplan yml配置
1)针对特定网卡自定义网卡名称:使用match字段进行筛选,set-name字段进行网卡名称设定
network:version: 2renderer: networkdethernets:eth_lan0:dhcp4: truematch:macaddress: 00:11:22:33:44:55set-name: eth_lan0
2.4 NSS:Name Service Switch
系统里将主机名解析为IP地址的方法的顺序选择由名称服务交换机(NSS)配置文件/etc/nsswitch.conf控制的。/etc/nsswitch.conf示例如下:
hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4