您的位置:

Ubuntu Netplan:如何配置网络

一、什么是Netplan

Netplan是Ubuntu 17.10版本及以后版本的网络配置工具,目的是简化和统一Linux网络配置的方式,能够简化网络配置文件的编写并增强网络配置的可读性和可管理性。它是用YAML格式编写的,易于阅读和理解,更加灵活、易于扩展和维护,也支持多种网卡驱动程序和网络协议。

Netplan的主要特点有:

  • 采用YAML格式,语法简单易懂、可读性高
  • 可以管理各种网络设备,包括ethernet、wifi、bonding、VLAN、bridge等
  • 支持IPv4、IPv6、DHCP、静态IP等多种IP配置方式
  • 可以在系统启动时自动执行配置

二、Netplan如何使用

Netplan包含两个主要的配置文件:

  1. Netplan配置文件:/etc/netplan/*.yaml
  2. Network配置文件:/etc/network/interfaces

作为Netplan的实现,systemd-networkd服务已经默认开启并运行在Ubuntu 17.10或更高版本。

默认情况下,Netplan工具会在以下的文件中搜索配置文件并按照字典序依次处理:

  • /etc/netplan/* .yaml
  • /lib/netplan/* .yaml

如果配置文件都是有效的,那么Netplan将会在系统启动时自动执行这些配置。

三、Netplan配置样例

network:
  version: 2
  renderer: networkd
  ethernets:
    eno1:
      dhcp4: no
      dhcp6: no
      addresses: [192.168.1.10/24]
      gateway4: 192.168.1.1
      nameservers:
        addresses: [8.8.8.8, 8.8.4.4]
    eno2:
      dhcp4: yes

以上是一个简单的Netplan配置样例,具体内容说明如下:

  • 版本号:当前仅支持version: 2
  • renderer:指定网络渲染器,可以使用networkd或network-manager,默认是networkd
  • ethernets:指定以太网网卡的名称,可以添加多个以太网网卡的配置
  • dhcp4/dhcp6:指定是否启用DHCP来获取IPv4/IPv6地址
  • addresses:分配到该网卡的IPv4/IPv6地址,可以指定多个地址
  • gateway4:指定IPv4网关
  • nameservers.addresses:指定DNS服务器的IP地址

四、Netplan常用命令

常用Netplan命令如下:

sudo netplan generate    # 生成配置
sudo netplan apply       # 应用配置
sudo netplan try         # 尝试执行配置,如果有错误,则恢复原来的配置,并给出错误提示
sudo netplan --debug apply   # 应用配置并打印调试信息

五、Netplan实例:静态IP、DHCP、VLAN、Bonding

1. 静态IP

下面的示例中,我们为enp2s0f0网卡分配静态IP地址

network:
  version: 2
  renderer: networkd
  ethernets:
    enp2s0f0:
      addresses:
        - 192.168.1.100/24
        - 2001:db8::1000/64
      gateway4: 192.168.1.1
      gateway6: "2001:db8::1"
      nameservers:
        addresses:
          - 192.168.1.1
          - "2001:4860:4860::8888"
        search: [mydomain, otherdomain]

2. DHCP

下面的示例中,我们为enp2s0f0网卡启用DHCP分配IP地址

network:
  version: 2
  renderer: networkd
  ethernets:
    enp2s0f0:
      dhcp4: yes
      dhcp6: yes

3. VLAN

下面的示例中,我们将enp2s0f0网卡分配到VLAN 100,并分配静态IP地址

network:
  version: 2
  renderer: networkd
  vlans:
    vlan.100:
      id: 100
      link: enp2s0f0
      addresses:
        - 192.168.1.100/24
        - 2001:db8::1000/64
      gateway4: 192.168.1.1
      gateway6: "2001:db8::1"
      nameservers:
        addresses:
          - 192.168.1.1
          - "2001:4860:4860::8888"
        search: [mydomain, otherdomain]

4. Bonding

下面的示例中,我们将enp2s0f0和enp2s0f1网卡进行绑定,并分配静态IP地址

network:
  version: 2
  renderer: networkd
  bonds:
    bond0:
      dhcp4: no
      interfaces:
        - enp2s0f0
        - enp2s0f1
      addresses:
        - 192.168.1.100/24
        - 2001:db8::1000/64
      gateway4: 192.168.1.1
      gateway6: "2001:db8::1"
      nameservers:
        addresses:
          - 192.168.1.1
          - "2001:4860:4860::8888"
        search: [mydomain, otherdomain]
      parameters:
        mode: balance-rr
        lacp-rate: fast
        primary: enp2s0f0

六、总结

这篇文章我们介绍了Ubuntu Netplan的基本概念和使用方法,并通过实例对静态IP、DHCP、VLAN和Bonding等常见场景进行了说明。Netplan的YAML配置方式让Linux网络配置更加简单、易于扩展和管理,值得广大Linux爱好者学习和使用。