linux - 桥接 Linux 网络和虚拟化

标签 linux ubuntu networking virtual-machine kvm

我有带 libvirt/kvm 虚拟化的 Linux 主机,虚拟机需要“真实的”静态 IP 地址,所以我决定设置桥接网络。我在主机和虚拟机属性中创建了 br0,我设置了源设备:主机设备 vnet0(Bridge 'br0')。

例如,我的 br0 有 ip 192.168.1.1,其中一个 VM 有 192.168.1.5

一切正常,但随后我连接到虚拟机,客户端地址检测为 192.168.1.1。此外,所有 HTTP 请求都来自 192.168.1.1。

:这是我的错误,某种错误配置吗? VM如何获取客户端的真实IP?

最佳答案

让我尝试根据我从您的问题中推断出的内容来回答:

由于您要为 VM 分配可路由的 IP 地址,

选项 1:将主机物理以太网接口(interface)添加到 vswitch(也称为 vswitch 上行链路)。此外,对于所有 VM 以太网接口(interface),在物理以太网接口(interface)的 IP 所属的同一子网中分配 IP 地址。或者,如果 DHCP 服务器在同一广播域(子网)中运行,如果接口(interface)配置为通过 DHCP 获取 IP,则虚拟机将从 DHCP 服务器获取 IP

选项 2:创建 vswitch 并将 X.Y.Z.1 IP 分配给 vswitch (br0)。还要在主机中启用 IP 转发。现在您可以将来自同一子网的 IP 分配给 VM 以太网接口(interface)。或者,您可以在 br0 上运行 DHCP(例如 DNSmasq)并将 IP 分配给 VM 接口(interface)

关于linux - 桥接 Linux 网络和虚拟化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33038232/

相关文章:

c - 多个进程访问一个文件

c - 为什么字符串在 C 中是静态分配的?

linux - 在ubuntu中访问windows文件夹或文件

sockets - 将大文件从服务器传输到多个客户端的有效方法是什么?

linux - 如何在 linux 中仅选择具有不同标题第一行的所有列中具有相同字符串的那些行

linux - 错误 : Could not request certificate: No route to host - connect(2) for "puppet.myname.homelab" port 8140

C++ 程序编译在 Ubuntu 中失败,但在 MacOS 中运行

java - 从 Java 中的 ObjectInputStream 中连续读取对象

Python 游戏服务器 - 优化网络

c - 使用 mremap() 将两个相同的页面合并为一个物理页面