如何在 Ubuntu 18.04(netplan)中使用 VLan

如何在 Ubuntu 18.04(netplan)中使用 VLan

我有一台 Netgear 交换机和一台 Unifi Seurity 网关,它们一起允许我将我的网络划分为不同的 VLAN。例如,我的服务器位于 VLAN 10 上。

使用我拥有的其他硬件,即我的 NAS,我只需告诉网络配置使用 VLan 10,只要 netgear 交换机中的端口标记为在 Vlan 10 上标记,一切就可以正常工作。

我对 Ubuntu 18.04 和 Vlans 感到很困惑。除了将我的 Ubuntu 18 服务器放在 vlan10 上之外,我不想做任何花哨的事情

顺便说一下,我使用的是 Raspberry Pi 4 Model B

这是我在 /etc/netplan/50-cloud-init-.yaml 中的当前配置

network:
  version: 2
  renderer: networked
  ethernets:
    eth0:
      addresses:
        - 192.168.10.20/24
      gateway4: 192.168.10.1
      nameservers:
        addresses: [192.168.10.3, 8.8.8.8]
  vlans:
    vlan10:
      id: 10
      link: eth0
      addresses: [192.168.10.21/24]

通过上述配置,netplan apply 不会给我任何错误,并且当我运行 ip addr 时一切都显示正确。

但问题是我可以从 Ubuntu 盒子访问 vlan 10 之外的任何设备。但是我可以通过 SSH 进入位于 Vlan 10 上的 NAS,然后从那里通过 SSH 进入 Ubuntu 服务器。

这几乎让我认为问题出在我的 netgear 交换机配置上,但是 ubuntu 服务器插入的端口配置与 NAS 完全相同,正如我所说,它工作正常。

答案1

由于遵循了其他教程,我在问题中包含的示例代码变得有点混乱。

@Frobozz 的回答很准确,符合我提出的问题,但我最终需要的代码是这样的。正是因为 @Frobozz 的回复,我才开始明白我需要用 Google 来搜索什么。

network:
  version: 2
  renderer: networkd
  ethernets:
    eth0:
      dhcp4: no
      dhcp6: no
  bridges:
    br10:
      dhcp4: no
      dhcp6: no
      interfaces: [ vlan10 ]
      addresses: [ 192.168.10.20/24 ]
      gateway4: 192.168.10.1
      nameservers:
        addresses:
          - "192.168.10.3"
          - "8.8.8.8"
  vlans:
    vlan10:
      id: 10
      link: eth0
      dhcp4: no
      dhcp6: no

答案2

有两种使用 VLAN 的方法,一种是使用交换机上的带标记端口,另一种是使用未标记端口。更常见的是在交换机上使用未标记端口,这样主机就无需配置即可了解 VLAN,而只需查看交换机划分到特定 VLAN 的普通以太网数据包即可。

根据您的配置,很明显您正在使用标记端口,从而要求主机具有 VLAN 感知能力。

您的原始配置存在问题,因为默认路由(网关)配置在以太网接口上,而实际上应该在 VLAN 接口上。以下配置应该足够了:

network:
  version: 2
  renderer: networkd
  ethernets:
    eth0: {}
  vlans:
    vlan10:
      id: 10
      link: eth0
      addresses: [192.168.10.20/24]
      gateway4: 192.168.10.1
      nameservers:
        addresses: [192.168.10.3, 8.8.8.8]

答案3

Netplan 需要一些时间来适应。这里缺少的是桥接:以下是示例:

network:
    version: 2
    renderer: networked
    ethernets:
        eth0:
            optional: true
    bridges:
        br0:
            interfaces: [eth0]
            addresses:
            - 192.168.10.20/24
            gateway4: 192.168.10.1
            nameservers:
                addresses: [192.168.10.3, 8.8.8.8]
        br10:
            interfaces: [vlan10]
            addresses: [192.168.10.21/24]
        br25:
            interfaces: [vlan25]
    vlans:
        vlan10:
            id: 10
            link: eth0
        vlan25:
            id: 25
            link: eth0

确保已安装 bridge-utils:

apt install bridge-utils

相关内容