AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / ubuntu / 问题 / 1305542
Accepted
Aephir
Aephir
Asked: 2021-01-07 07:56:15 +0800 CST2021-01-07 07:56:15 +0800 CST 2021-01-07 07:56:15 +0800 CST

如何在 netplan 中配置连接 vlan 的网桥来为 VM 提供服务?

  • 772

我的问题基本上是,当尝试在 vlan 接口上使用网桥时,我的虚拟机没有网络,我不确定我错过了什么。

我已经尝试了示例中详述的设置。以及许多其他指南。这是我目前的网络计划.yaml(尽管我尝试了各种定义addresses、、gateway4和nameservers的组合,但没有成功):

network:
  version: 2
  renderer: networkd
  ethernets:
    eno1:
      dhcp4: true
    eno2:
      dhcp4: true
  bridges:
    br0:
      dhcp4: true
      interfaces: [ vlan15 ]
      parameters:
        forward-delay: 0
        stp: true
  vlans:
    vlan15:
      id: 15
      link: eno1

我想保持eno2不变,所以我总是有一个后备(没有连接显示器)。在我的 DHCP 服务器中,我设置了 eno1 = 192.168.0.100 和 eno2 = 192.168.0.101。

我在路由器中的 LAN 设置为 192.180.0.0/22(我试图通过 192.168.1.x 范围内的虚拟机,但不是必需的)。

我已经建立了网桥,并激活了它:

~$ brctl show
bridge name bridge id           STP enabled interfaces
br0         8000.00215ec64304   yes         vlan15
                                            vnet0

(我几乎可以肯定在vnet0我启动 VM 之前没有关联)

和

~$ virsh net-list --all
 Name      State    Autostart   Persistent
--------------------------------------------
 br0       active   yes         yes
 default   active   yes         yes

ip a显示两者br0并vlan15链接到 的 MAC eno1。在 VM ( /etc/libvirt/qemu/hassos.xml) 的 .xml 文件中,它显示在“接口”下:

    <interface type='bridge'>
      <mac address='52:54:00:26:69:40'/>
      <source bridge='br0'/>
      <model type='virtio'/>
      <address type='pci' domain='0x0000' bus='0x01' slot='0x00' function='0x0'/>
    </interface>

我最初设置它br0直接链接到eno1,所以我virt-install在开始创建 vlan 之前做了,以防万一。但是每当我这样做时,我都会重新启动虚拟机sudo netplan apply。

我能得到的最接近(不是很接近,只是发生了一些事情)是当我在 上定义 aaddresses: 192.168.1.115时br0,我可以使用这个地址和相应的端口访问服务器上的某些东西。只是不是虚拟机(而是直接在服务器上运行在 docker 中的“克隆”)。在那种情况下,它似乎br0被用于服务器上的任何东西?

我正在使用 Ubuntu Server LTS 20.04。

万一这很重要,我(根据其他建议)禁用了网桥的 netfilter,如此处所述。

编辑:我通过创建一个 br0.xml 文件为 libvirt 设置了桥:

<network>
  <name>br0</name>
  <forward mode="bridge"/>
  <bridge name="br0"/>
</network>

并添加:

virsh net-define br0.xml
virsh net-start br0
virst net-autostart br0

我还尝试过更复杂的 .xml 文件,例如

<network>
  <name>br1</name>
  <forward mode='nat'>
    <nat>
      <port start='1024' end='65535'/>
    </nat>
  </forward>
  <bridge name='br1' stp='on' delay='0'/>
  <ip address='192.168.1.1' netmask='255.255.255.0'>
    <dhcp>
      <range start='192.168.1.101' end='192.168.1.150'/>
    </dhcp>
  </ip>
</network>

并使用 192.168。1个.X地址,我可以从libvirt中分配IP,但我无法从外部访问。如果我改为使用 192.168。0 .X 地址,尝试启动时出错:

error: Failed to start network br1
error: internal error: Network is already in use by interface eno2

这与设置 192.168 无关。0 .X IP 在 DHCP 池内或外,与设置 192.168 无关。1 .X IP 作为 DHCP 分配与否。

networking
  • 1 1 个回答
  • 5120 Views

1 个回答

  • Voted
  1. Best Answer
    NK_
    2021-01-09T23:10:59+08:002021-01-09T23:10:59+08:00

    我想我(几乎)复制了你的情况。

    我的服务器的两个网络接口都连接到我的路由器。我的工作站连接到同一个路由器。

    配置:

    服务器(Ubuntu 服务器 20.04 LTS):

    1. 接口:192.168.0.240
    2. 接口:192.168.0.241

    位于 1 上的 VLAN 上的网桥 (br0)。接口:192.168.100.1

    服务器上的 Netplan 文件:

    network:
      version: 2
      renderer: networkd
      ethernets:
        enp3s0f0:
          addresses: [ 192.168.0.240/24 ]
          gateway4: 192.168.0.1
          nameservers:
            addresses: [ 8.8.8.8,8.8.4.4 ]
        enx00e04c534458:
          addresses: [192.168.0.241/24]
          gateway4: 192.168.0.1
          nameservers:
            addresses: [8.8.8.8,4.4.4.4]
      bridges:
        br0:
          addresses: [ 192.168.100.1/24 ]
          interfaces: [ vlan100 ]
      vlans:
        vlan100:
          accept-ra: no
          id: 100
          link: enp3s0f0
    

    我不确定是否真的有必要,但为了让服务器在其接口之间路由(记得我之前连接到 2 个不同的网络),我进行了以下配置。

    将以下行添加到 /etc/sysctl.conf

    net.ipv4.ip_forward = 1
    

    跑:

    sudo sysctl -p
    

    虚拟机(Ubuntu 服务器 20.04 LTS):

    使用 virt-install 安装虚拟机时,无法自动获取 IP 地址,所以我手动输入:

    子网:192.168.100.0/24 ip:192.168.100.101 网关:192.168.100.1

    VM 无法连接到 Internet,但已成功安装。

    生成的 VM 的 netplan 文件:

    network:
      ethernets:
        enp1s0:
          addresses:
          - 192.168.100.101/24
          gateway4: 192.168.100.1
          nameservers:
            addresses:
            - 8.8.8.8
      version: 2
    

    安装后,我可以访问服务器上的虚拟机,但我无法从我的工作站访问它。它看起来像一个路由问题。所以我添加了一条路线。

    工作站(Ubuntu 20.04 LTS):

    具有 2 个 IP 的单接口。192.168.0.242 和 192.168.0.243

    工作站上的 Netplan 文件:

    network:
      version: 2
      renderer: networkd
      ethernets:
        enp3s0:
          dhcp4: no
          addresses: [192.168.0.242/24,192.168.0.243/24]
          gateway4: 192.168.0.1
          nameservers:
            addresses: [46.197.15.60,178.233.140.110,176.240.150.250]
          routes:
          - to: 192.168.100.0/24
            via: 192.168.0.240
    

    最后 3 行通过服务器接口添加了到 192.168.100.0 网络的路由。

    完成所有这些配置后,我就可以从我的工作站连接到 VM。如果我需要从网络中的任何其他计算机连接到虚拟机,我也需要向它们添加路由信息。


    旧答案,稍后删除

    我没有 2 个以太网卡,所以我无法对其进行测试,但我相信这种方法可能会运行。我相信您可以在不使用 VLAN 的情况下做到这一点。至少这是可以尝试的。

    将您的 netplan 文件设置为一个配置为标准的网卡,另一个配置为网桥(为了确保没有 DHCP),随意更改 IP 和名称服务器:

    network:
      version: 2
      ethernets:
        eno1:
          dhcp4: no
        eno2:
          dhcp4: no
          addresses: [ 192.168.0.100/24 ]
          gateway4: 192.168.0.1
          nameservers:
            addresses: [ 8.8.8.8,8.8.4.4 ]
      bridges:
        br0:
          dhcp4: no
          interfaces: [ en01 ]
          addresses: [ 192.168.0.101/24 ]
          gateway4: 192.168.0.1
          mtu: 1500
          nameservers:
            addresses: [ 8.8.8.8,8.8.4.4 ]
          parameters:
            forward-delay: 4
            stp: true
    

    禁用 netfilter,将桥添加到 KVM(我相信你已经这样做了)


    正如评论中所说,一个带有 vlan 的工作 netplan 配置:

    network:
      ethernets:
        enp3s0f0:
          addresses: [192.168.0.240/24]
          gateway4: 192.168.0.1
          nameservers:
            addresses: [8.8.8.8,8.8.4.4]
          dhcp4: false
          dhcp6: false
        enx00e04c534458:
          addresses: [10.1.1.1/24]
          gateway4: 10.1.1.1
          nameservers:
            addresses: [8.8.8.8,4.4.4.4]
      vlans:
        vlan10:
          id: 10
          link: enp3s0f0
      bridges:
        br0:
          interfaces: [ vlan10 ]
          addresses: [192.168.1.240/24]
      version: 2
      renderer: networkd
    
    • 0

相关问题

  • 如何设置 VLAN 转发?

  • 如何将主机 Ubuntu 上的 VPN (tun0) 网络适配器映射到 VirtualBox 来宾 Windows?

  • 如何限制下载/上传带宽?

  • 如何通过 Windows 网络共享文件?

  • 面板小程序以文本形式显示当前网络流量?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何运行 .sh 脚本?

    • 16 个回答
  • Marko Smith

    如何安装 .tar.gz(或 .tar.bz2)文件?

    • 14 个回答
  • Marko Smith

    如何列出所有已安装的软件包

    • 24 个回答
  • Marko Smith

    无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗?

    • 25 个回答
  • Martin Hope
    Flimm 如何在没有 sudo 的情况下使用 docker? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    Ivan 如何列出所有已安装的软件包 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    La Ode Adam Saputra 无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗? 2010-11-30 18:12:48 +0800 CST
  • Martin Hope
    David Barry 如何从命令行确定目录(文件夹)的总大小? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher “以下软件包已被保留:”为什么以及如何解决? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford 如何删除 PPA? 2010-07-30 01:09:42 +0800 CST

热门标签

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve