使用 1 个 IPv4 访问 2 个虚拟机

使用 1 个 IPv4 访问 2 个虚拟机

我有两个虚拟机。第一个虚拟机正在运行 Debian 8.2,第二个虚拟机正在运行 Ubuntu Server 14.04.2 LTS 我还有一个公共 IPv4

IPv4 一次仅分配给一台服务器。我假设我需要创建一个 NAT 以从同一 IP 访问两台服务器。

在仪表板上我可以创建一个专用网络。所以,我的问题是,我该怎么做?

答案1

这主要取决于您想要从一个 IPv4 地址访问哪种服务。

这么说吧:

  • 90.90.90.90 是您的公共 IPv4 (app.domain.org / app2.domain.org)
  • 192.168.1.1 是你的 Debian 服务器
  • 192.168.1.2是你的Ubuntu服务器

首先想到的是使用一种port forwarding机制:您将根据请求的目标端口将数据包重定向到正确的服务器/端口:

iptables -t nat -A PREROUTING -i wan0 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.1:80
iptables -t nat -A PREROUTING -i wan0 -p tcp --dport 8080 -j DNAT --to-destination 192.168.1.2:80

优点是您可以提供任何服务(从 SSH 到 RDP,当然还有 HTTP)。但是您必须删除一些标准服务器/协议端口。

另一种选择是使用基于服务器名称的反向代理(例如 Apache 的 mod_proxy):

<VirtualHost *:80>
   ServerName app.domain.org
   ProxyPass / http://192.168.1.1:80/
   ProxyPassReverse / http://192.168.1.1:80/
</VirtualHost>

<VirtualHost *:80>
   ServerName app2.domain.org
   ProxyPass / http://192.168.1.2:80/
   ProxyPassReverse / http://192.168.1.2:80/
</VirtualHost>

这个主要适用于HTTP协议。

有选择。为了获得更准确的答案,您需要提供有关您打算发布的服务的更多详细信息。顺便说一句,我强烈建议阅读以下一些内容: http://www.systutorials.com/816/port-forwarding-using-iptables/ https://httpd.apache.org/docs/trunk/en/vhosts/examples.html

相关内容