我有一台裸机主机服务器,其中有多个使用 QEMU/KVM 创建的来宾虚拟机,使用虚拟网络“默认”:NAT 选项。只有一个公共 IP 可用。
为了更好地说明:
BM 主机服务器(Ubuntu),IP 89.185.xx.xx
VM 来宾服务器(Ubuntu)1 号,IP 192.168.122.101
VM 来宾服务器(Ubuntu)2 号,IP 192.168.122.102
VM 来宾服务器(Ubuntu)3,IP 192.168.122.103
...
现在我想在每个虚拟机上使用不同的端口运行相同的应用程序,并且能够通过相同的公共 IP 从外部连接到每个实例。例如:
89.185.xx.xx:30334
89.185.xx.xx:30335
89.185.xx.xx:30336
...
类似设置,如在多个 Docker 容器中运行应用程序。请问我该如何设置?
答案1
取自https://www.systutorials.com/port-forwarding-using-iptables/
将 VM1 的端口从公共 IP 转发到本地 IP:
# iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 30334 -j DNAT --to 192.168.122.101:30334
# iptables -I FORWARD 1 -p tcp -d 192.168.122.101 --dport 30334 -j ACCEPT
此示例假设本地和远程端口均为30334
,且公共接口名称为eth0
。