一个外部 IP 上运行多个内部 IP?

一个外部 IP 上运行多个内部 IP?

我的 ISP 为我提供了 1 个静态 IP 地址,但我需要在该 1 个公共 IP 地址下运行多个内部 IP 地址(来自 VPS)。我有足够的网络连接到我的路由器,但没有公共 IP。

因此,基本上可以将来自某些域的所有流量转发到特定的内部 IP 地址。

通过对 ServerFault 的搜索,我发现了以下可以解决我的问题的方法阿帕奇目的:

<VirtualHost *:80>
    ServerName      www.example.com
    ProxyRequests Off
    <Proxy *>
            Order deny,allow
            Allow from all
    </Proxy>
    ProxyPreserveHost On
    ProxyPass / http://192.168.254.197/
    ProxyPassReverse / http://192.168.254.197/

</VirtualHost>
<VirtualHost *:80>
        ServerName      www.other_example.com
        ProxyRequests Off
        <Proxy *>
                Order deny,allow
                Allow from all
        </Proxy>
        ProxyPreserveHost On
        ProxyPass / http://192.168.254.198/
        ProxyPassReverse / http://192.168.254.198/

</VirtualHost>

但是这个仅转发网络请求,而不是一切(例如 FTP、SSH、电子邮件等)。

一定有某种东西可以解决这个问题!

我正在使用 CentOS 5。

答案1

HTTP 协议内置了虚拟主机。这是您设置的服务器名称,客户端会在每个请求的Host标头中发送该名称。其他协议(如 SSH 或 FTP)不具备此功能。您可以将端口 22(用于 SSH)转发到单个盒子/VM,并将其用作到达其他主机的跳转站。

另一方面,FTP 是一种不太友好的协议。有可用的代理,但它们大多有点奇怪。现有 iptables 内部支持转发 FTP 连接。但同样,这只能在一台主机上轻松实现。

对于电子邮件,您可以安装 SMTP 服务器(如 Postfix 或 Exim),并使用该 SMTP 服务器内的规则将邮件转发到内部主机。

答案2

在边缘设备上,您可以配置到不同主机的端口转发或 iptables 重定向规则,但您最终可能需要为 HTTP/HTTPS 之外的服务使用一些非标准端口。

例如,如果您使用的是标准消费级路由器,则可以设置端口转发,以便在 :23 上进入的连接转到 192.168.254.198:22,在 :24 上进入的连接转到 192.168.254.197:22 等等。根据您在边缘的设备,可以应用不同的配置/解决方案。

相关内容