将可用的 /etc/network/interface 集移植到 /etc/netplan/name.yml

将可用的 /etc/network/interface 集移植到 /etc/netplan/name.yml

我使用了两块主板,一块运行 ubuntu 桌面版 18.04,另一块运行 ubuntu 服务器版 18.04。桌面板上,我已经通过写入文件设置了一个 vlan /etc/network/interfaces,如下所述(我知道先设置自动然后设置静态地址是不正确的,但无论如何它都能工作,而且这不是我的问题主题):

auto eno1

iface eno1 inet dhcp

auto eno1.1

iface eno1.1 inet static

 address XX.XX.XX.91/23

 netmask 255.255.254.0

 gateway XX.XX.XX.1

 vlan-raw-device eno1


auto lo

iface lo inet loopback

我需要做同样的设置:使用 vlan 在唯一物理端口上设置两个地址,命名为 eno1 和 eno1.1,其中只有 eno1.1 定义为静态地址,用于加载 ubuntu 服务器的主板。我看到 根本/etc/network/interface没有使用,必须使用 设置网络/etc/netplan/50-cloud-init.yaml。我无法让主板正常工作,只是按照netplan.io/示例用于 vlan 设置。因此,如果您能帮我展示一下 NN-cloud-init.yaml 应该如何实现/etc/network/interfaces与我的文件中相同的功能,我将不胜感激desktop

答案1

尝试一下这个框架。可能需要进行一些调整。填写适当的 MAC、IP 和 DNS。保留缩进、空格,并且不使用制表符。

network:
  version: 2
  renderer: networkd
  ethernets:
    mainif:
      match:
        macaddress: xx:xx:xx:xx:xx:xx
      set-name: mainif
      dhcp4: false
      dhcp6: false
      optional: true
  vlans: 
    en01: 
      id: 01
      link: mainif
      dhcp4: true
      dhcp6: false
    en01.1:
      id: 11
      link: mainif
      addresses: XX.XX.XX.91/23
      gateway4: XX.XX.XX.1
      nameservers:
        addresses: [8.8.8.8,8.8.4.4]
        search: [ domain1.example.com, domain2.example.com ]

sudo netplan --debug generate# 生成配置文件

sudo netplan apply# 应用配置

reboot# 验证操作正确

答案2

我试图重写你的框架来提供我需要的设置。50-cloud-init.yaml 文件如下所示:

network:
version: 2
renderer: networkd
  ethernets:
    eno1:
      dhcp4: true
  vlan:
    eno1.1:
      id: 1
      link: eno1
      addresses: [XX.YY.ZZ.91/23]

该文件生成的设备正是我所需要的,但有一个问题:电路板仍然处于隔离状态。从电路板,我可以 ping 通 localhost、eno1 和 eno1.1,但不能 ping 通网络中的另一个电路板,而且无论如何,网络中的另一个电路板也无法 ping 通该电路板。当时我决定使用 ifupdown 作为解决问题的捷径,但也许 50-cloud-init.yaml 中真的没有任何问题。我的猜测是,由于缺少 VLAN 标记,数据包(很可能以正确的行为)被丢弃。为了让电路板与外部世界通信,我应该将 50-cloud-init.yaml 更改为以下内容:

network:
version: 2
renderer: networkd
  ethernets:
    eno1:
      dhcp4: true
  vlan:
    eno1.1:
      accept-ra: true
      id: 1
      link: eno1
      addresses: [XX.YY.ZZ.91/23]

我猜应该可以。不幸的是,我无法删除已安装的 ifupdown,所以我不能 100% 确定我的猜测。

还有一个信息可以完善这个图景:即使你使用 ifupdown,也不能删除标准的 50-cloud-init.yaml。事实上,如果你删除标准的 50-cloud-init.yaml,它看起来就像这样:

network:
  ethernets:
    eno1:
      dhcp4: true
version: 2

dhcp4 将改变动态分配给主板的 IP 地址。

再次感谢您付出的时间和宝贵的支持,并再次为我的迟到答复感到抱歉。

BR/卡洛

相关内容