假设我有 20 台虚拟机(主机:Ubuntu,使用 Qemu-KVM、libvirt),并且我将为不同的虚拟机组使用不同的网络接口。(1-6 使用网络 1,7-15 使用网络 2,16-20 使用网络 3)。网络接口由 libvirt 创建。我希望网络接口使用 openVPN 连接。(因此网络 1 使用 conn1,网络 2 使用 conn2,网络 3 使用 conn3)以实现以下目的:第一组虚拟机都使用 conn1,依此类推...
我不想在每个虚拟机内运行 openvpn。
那么有办法吗?
如果有,方法有多先进(因为我有点新手 :))
以及我该怎么做?(我甚至想知道我应该学习什么网络科目)
答案1
- 创建四座桥梁:
- 互联网接入桥
- 网络 1
- 网络 2
- 网络 3
请注意,“网络 N”桥接器不需要在主机上分配 IP。
- 创建三个 VPN 网关 VM:
- VPN1 参与“Internet”和“网络 1”
- ...
- 这些虚拟机中的每一个都应该运行一个 OpenVPN 客户端,该客户端通过“Internet”接口访问其 VPN。另一个“Network N”接口用于与恰好位于相应网桥上的其他虚拟机进行通信
- 其余虚拟机应该只参与相应的网络(因此不与主机直接通信)并将其相应的 VPN 虚拟机作为默认网关。
我认为这是最容易构建和理解的配置。另一种方法是在主机上运行所有 VPN,并使用策略路由或者虚拟资源库(本质上是同一件事)或网络命名空间将虚拟机分配到相应的VPN。