我使用了两块主板,一块运行 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/卡洛