我设置了一个新的Ubuntu 18.04 server
,并花了一些时间与之斗争netplan
。我只需要一个非常简单的网络配置,但由于某种原因它不起作用,我不知道哪里出了问题。
我需要一个VLAN
带有的static IP
。
问题是:一旦我配置任何内容static IP
(无论是在物理接口还是VLAN
),我就会失去任何连接。
这是我当前的(不工作) yaml(它是唯一的 yaml,因此没有其他配置干扰)
network:
version: 2
renderer: networkd
ethernets:
eth0: #the physical interface
match:
macaddress: "xx:xx:xx"
dhcp4: no
#this is the same IP I would get with dhcp
addresses: [ "10.1.0.1/24" ]
gateway4: 10.1.0.254
vlans:
lab1:
id: 10
link: eth0
dhcp4: no
addresses: [ "10.1.10.100/24" ]
应用配置后,我得到以下 IF<->IP:
eth0 <-> 10.1.0.1
lab1 <-> 10.1.0.1
我无法通过ssh
或ping
通过此 IP 连接到服务器。
运行后的配置netplan generate
:
10-netplan-eth0.网络
[Match]
MACAddress=xx:xx:xx
[Network]
Address=10.1.0.1/24
Gateway=10.1.0.254
VLAN=lab1
10-netplan-lab1.网络
[Match]
Name=lab1
[Network]
Address=10.1.10.100/24
10-netplan-lab1.netdev
[NetDev]
Name=lab1
Kind=vlan
[VLAN]
Id=10
如果我将其更改为dhcp4: yes
并删除地址/网关,我将获得与上面静态配置的相同的地址DHCP
,并ssh/ping
使用该VLAN
地址。
如果我更改eth0
为dhcp4: yes
并保留 的静态配置lab1
,lab1
则会获取DHCP
分配的地址。
为什么静态地址会被lab1
忽略?
注意:我确信交换/路由配置正确,但我愿意再次检查。
答案1
由于这个问题可能会引起其他人的看法,所以我想我会很快回答。
YAML 文件的语法必须正确,才能配置项目。使用“netplan --debug generate”检查文件以查看问题,否则生成和应用将配置任何有效的内容,并忽略其余内容(为了具有弹性 - 有总比没有好)。
在这种情况下,原作者对 vlan 部分的缩进是不正确的。它必须与“ethernets”标题对齐,从“network”标题缩进。应该是:
network:
version: 2
renderer: networkd
ethernets:
eth0: #the physical interface
match:
macaddress: "xx:xx:xx"
dhcp4: no
#this is the same IP I would get with dhcp
addresses: [ "10.1.0.1/24" ]
gateway4: 10.1.0.254
vlans:
lab1:
id: 10
link: eth0
dhcp4: no
addresses: [ "10.1.10.100/24" ]