我有两个虚拟机。第一个虚拟机正在运行 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