请帮助理解linux桥接口

请帮助理解linux桥接口

我的目标很简单,我想使用我的 Ubuntu 服务器,它有一个物理以太网接口作为桥接网络设备,以便我的虚拟机可以连接到它并与 LAN 和互联网上的其他设备进行通信。我不想使用 NAT。

现在我过去几天面临的问题是,当我让虚拟机在我的 LAN 上运行并与互联网通信时,我的服务器 DNS 变得混乱并且无法连接到互联网。我必须手动调整 dns 设置,我觉得我所做的是一个创可贴解决方案,而不是正确的方法。

我的理解是:桥接接口是一个软件网络交换机,可以为其分配端口。它可以像典型网络一样包含多个 L3 设备。当我使用实用程序创建桥接时ip,典型的用例场景是使用 Linux 盒子作为交换机并“桥接”其上的多个以太网端口,这些端口可以分别连接到边缘路由器/防火墙和内部 LAN。以太网端口成为虚拟桥接接口的从属接口,该虚拟桥接接口接收进入从属接口的所有数据包。

我认为通过创建这个桥接接口,我将能够将我的单个以太网接口用于我的机器上运行的所有 2 个虚拟机以及我的主机本身。但这里有一个问题:当我为网桥分配静态 IP 地址时,谁会获得该 IP 地址?是交换虚拟接口吗?主人?虚拟机?

使用桥接接口的正确方法是什么?在这种情况下是否需要桥接?谢谢。

答案1

您可以利用桥接接口在一个接口上为多个虚拟机提供 IP,如果您计划让虚拟机与主机位于同一网络上,那么桥接接口是绝对必要的。

当您创建桥接接口并为其分配静态 IP 时,即主机IP。请记住,您需要在桥接口,而不是物理接口本身。brctl addif <bridge> <device>例如,您只需使用命令将物理接口分配给桥接接口。用于brctl show确认更改。

然后,当您创建 VM 并将其设置为使用该桥接接口时,您可以在 VM 操作系统内设置其自己的静态 IP(或 DHCP 分配的 IP)。该虚拟机现在将与具有您定义的 IP 的主机位于同一网络上。您应该能够 ping 访客,访客也应该能够 ping 外部。

由于您使用的是 Ubuntu,如果您使用的是 16.04 或更高版本,则可以使用 netplan 非常轻松地实现此设置。假设物理接口被调用并且您想要命名桥接器,那么/etc/netplan/01-netcfg.yaml(或者您在那里的任何文件也可能是)应该如下所示:50-cloud-init.yamleno1br0

network:
  version: 2
  renderer: networkd
  ethernets:
    eno1:
      dhcp4: no
  bridges:
    br0:
      interfaces: [eno1]
      dhcp4: yes

这将创建网桥并在网桥接口上的主机上启用 DHCP。请注意我如何在物理接口上禁用 DHCP eno1。如果您希望您的主机拥有静态 IP,请参阅这一页了解更多示例。

然后运行netplan apply以应用更改。如果您随后ip a在主机上运行,​​您的物理接口将会有所master br0指示。物理接口不应有 IP。您现在应该还拥有一个br0具有您在上面指定的 IP 的接口。

如果您使用的/etc/network/interfaces是 netplan,请检查这里

相关内容