在 18.04。我正在尝试使用 2 个 vlan 接口配置我的服务器。每个 vlan 接口将在单独的子网上有一个单独的 IP 地址,并且两者都将链接到同一个物理接口。当我配置 vlan 接口时,我可以通过 vlan 连接到每个不同的子网,但我无法添加任何其他路由。我需要在其中一个子网 (vlan2000) 上添加具有下一跳的默认路由,然后通过另一个 vlan (vlan1000) 添加到单个未连接子网的静态路由。这是我的网络计划配置文件:
network:
renderer: NetworkManager
version: 2
ethernets:
enp0s31f6:
routes:
- to: 0.0.0.0/0
via: 192.168.100.2
metric: 100
- to: 192.168.1.0/24
via: 172.16.100.1
metric: 10
vlans:
vlan1000:
id: 1000
link: enp0s31f6
addresses: [ "172.16.100.2/30" ]
vlan2000:
id: 2000
link: enp0s31f6
addresses: [ "192.168.100.2/24" ]
我还尝试在每个 vlan 层次结构下添加适用的路由,但没有成功——例如:
vlans:
vlan1000:
id: 1000
link: enp0s31f6
addresses: [ "172.16.100.2/30" ]
routes:
- to: 0.0.0.0/0
via: 192.168.100.2
metric: 100
使用这两种方法,在应用配置后,我收到以下错误:
Traceback (most recent call last):
File "/usr/sbin/netplan", line 23, in <module>
netplan.main()
File "/usr/share/netplan/netplan/cli/core.py", line 50, in main
self.run_command()
File "/usr/share/netplan/netplan/cli/utils.py", line 130, in run_command
self.func()
File "/usr/share/netplan/netplan/cli/commands/apply.py", line 43, in run
self.run_command()
File "/usr/share/netplan/netplan/cli/utils.py", line 130, in run_command
self.func()
File "/usr/share/netplan/netplan/cli/commands/apply.py", line 93, in command_apply
stderr=subprocess.DEVNULL)
File "/usr/lib/python3.6/subprocess.py", line 291, in check_call
raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command '['udevadm', 'test-builtin', 'net_setup_link', '/sys/class/net/vlan1000']' returned non-zero exit status 4.
如果我再次应用它,它会通过,但没有任何路由被添加到路由表中。如果我完全删除路由语句,则它适用且没有错误。我对netplan不太了解,但这似乎是个问题。所以我假设我在配置中做错了什么。我应该在哪里为 vlan 接口添加统计路由?
FTR,当我手动添加静态路由时:
sudo ip route add 192.168.1.0/24 via 172.16.100.1 dev vlan1000
一切都按我的预期工作。我担心的是,我不相信那些手动添加的路线在重新启动后会持续存在。如果有更简单的解决方法可以使这些路线持续存在,我对此持开放态度。
谢谢,
撇开缩进不谈,这个配置是不正确的,因为你试图在这里添加一个路由到一个接口,这个接口不是持有到其网关的路由的接口。0.0.0.0/0 路由需要列在 vlan2000 接口下,因为这是您的路由到网关 (192.168.100.2) 的网络。
而且,根据你的配置,192.168.100.2 是本地地址,这意味着将其用作网关是不正确的。您没有将整个 Internet (0.0.0.0/0) 直接连接到此 vlan 上的主机地址。您的路由需要设置为您的路由器的 IP 地址作为
via
值,而不是您的本地地址。