![Proxmox 网络设置 - 单个 IP 多个虚拟机](https://linux22.com/image/778684/Proxmox%20%E7%BD%91%E7%BB%9C%E8%AE%BE%E7%BD%AE%20-%20%E5%8D%95%E4%B8%AA%20IP%20%E5%A4%9A%E4%B8%AA%E8%99%9A%E6%8B%9F%E6%9C%BA.png)
我正在专用服务器上设置我的第一个 Proxmox。裸机提供商为我提供了一台服务器,我已在该服务器上安装了 Proxmox 和一个连接到桥接接口的单个 IP。
这是我想要构建的架构:
一些注意事项:
- 我希望 2 个物理接口 eno1/eno2 处于有界模式,以便进行故障转移
- 我将在所有基于 Web 的界面前面放置一个反向 NGINX 代理
- 对于每个虚拟机,我都需要 ssh 访问(本地端口 22,从公共的不同端口重定向(例如:141.aaa.bbb.23:221 转到 s1 端口 22,141.aaa.bbb.23:222 转到 s2 端口 22,依此类推)。Zabbix 访问也是如此(141.aaa.bbb.23:10051 转到 zabbix 10051 端口)。
这是我的服务器的初始配置:
我对如何构建所需的配置有一些疑问:
a) 我已经为内部虚拟机创建了如下桥接器来连接虚拟机,但是我如何告诉该桥接器通向公共互联网的 vmbr0?
b) 如何将两个接口绑定在一起。我根本无法在 eno1 和 eno2 之间创建绑定,因为 eno1 已连接到我的公共接口,如果我删除该公共 IP,我将失去对我的服务器的访问权限。
c) 如何在给定的架构中完成我的需要?
答案1
A 和 C。
您当前的设置是桥接网络,连接到 vmbr0 的虚拟机属于同一网络(或广播域)。在这样的配置中,DHCP 应该由您的提供商提供,而不是由主机提供。
理想状态是 NAT 的网络,其中虚拟机不能直接将以太网帧发送到外部网络,并且它们的私有 IP 被主机 IP 替换以发送传出的数据包(伪装)。
您不应将 141.aaa.bbb.23 分配给 vmbr0 或 vmbr1 设备。您可以保留 141.aaa.bbb.23 分配给 bond 设备,并且只使用 vmbr0(无需创建 vmbr1)。
通过绑定的路由将由主机路由表自动处理。
看这里:
- https://wiki.libvirt.org/page/VirtualNetworking
- https://pve.proxmox.com/wiki/Network_Configuration#_choosing_a_network_configuration
- https://pve.proxmox.com/wiki/Network_Configuration#_masquerading_nat_with_tt_span_class_monospaced_iptables_span_tt
- https://pve.proxmox.com/wiki/Network_Configuration#_linux_bond
B.
我根本无法创建 eno1 和 eno2 之间的绑定,因为 eno1 连接到我的公共接口,如果我删除该公共 IP,我将无法访问我的服务器。
如果涉及互联网访问丢失,您可能需要带外管理(如 KVM over IP)来应用初始配置。
答案2
我根本无法创建 eno1 和 eno2 之间的绑定,因为 eno1 连接到我的公共接口,如果我删除该公共 IP,我将无法访问我的服务器。
欢迎来到丛林。
鉴于这些限制,没有远程控制台访问,也没有托管提供商的自愿勾结,您别无选择。要么改变其中一个因素,要么……
您可以做的是创建一个新的配置文件(Proxmox 使用 /etc/network/interfaces),例如 /etc/network/proposed,将您的工作配置备份为,例如,/etc/network/working,然后创建 cron 作业来部署每个配置并应用更改。将“proposed”的 cron 作业设置为在下午 3 点运行,将“working”的 cron 作业设置为在下午 4 点运行。
粘合配置看起来会像这样......
auto lo
iface lo inet loopback
iface eno1 inet manual
iface eno2 inet manual
iface bond0 inet manual
bond-slaves eno1 eno2
bond-miimon 100
bond-mode balance-rr
iface vmbr0 inet static
address 141.aaa.bbb.23/24
gateway 1141.aaa.bbb.1
bridge-ports bond0
bridge-stp off
bridge-fd 0
post-up echo 1 > /proc/sys/net/ipv4/ip_forward
post-up iptables -t nat -A POSTROUTING -s '141.aaa.bbb.23/24' -o eno1 -j MASQUERADE
post-down iptables -t nat -D POSTROUTING -s '141.aaa.bbb.23/24' -o eno1 -j MASQUERADE
iface vmbr1 inet static
address 192.168.0.1/24
例如:141.aaa.bbb.23:221 转到 s1 端口 22,141.aaa.bbb.23:222 转到 s2 端口 22
?
只需将您的 Proxmox 主机用作跳转盒......
ssh -J 141.aaa.bbb.23 192.168.0.102
(您可以在 ~/.ssh/ssh_config 中预先配置)