关于提出的网络计划的想法:端口转发到服务器,静态IP地址和DNS

时间:2014-08-18 16:52:21

标签: networking dns

我正在设置4台服务器,每台服务器都有通过HTTPS的RESTful API。因为我们处于初创公司的早期阶段,所以我会在我的壁橱里举办这些活动。

我有商务级的Comcast服务,因此我可以获得静态IP地址或一系列静态IP地址。 IP地址是每月$ 10 / ea,所以如果我只有一个,我可以节省大约30美元。我意识到这听起来像是我的超级便宜,但是在我们找到一些顾客之前我们会吝啬便士。

我们可能会使用一台服务器作为"工具"服务器,允许我们通过SSH访问其他服务器;其他3台服务器需要在局域网上打开互联网的HTTPS。

我正在考虑获取一个静态IP地址,然后使用我的路由器将HTTPS流量转发到各种服务器。端口转发看起来像:

WAN Port    LAN Port    Server
  22         22         Tools
1443        443         Server 1 (API via SSL)   
2443        443         Server 2 (API via SSL)   
3443        443         Server 3 (API via SSL)        

然后我会在我的DNS中设置一个NAME记录:

tools.mydomain.com   -> <static IP address>:22
server1.mydomain.com -> <static IP address>:1443
server2.mydomain.com -> <static IP address>:2443
server3.mydomain.com -> <static IP address>:3443

这是一种合理的方法吗?它会起作用吗?

1 个答案:

答案 0 :(得分:0)

您无法将流量定向到具有DNS记录的特定TCP端口。您只能指向IP地址。默认情况下,客户端使用TCP的TCP端口80和HTTPS的端口443(除非您明确命名要在URL中使用的端口)。

此外,您不能拥有多个使用相同IP地址的基于HTTPS的主机,除非它们也使用相同的SSL证书。这是因为SSL握手发生在之前客户端向服务器显示它尝试访问的主机名,因此服务器只能根据IP地址(和端口)发出SSL证书已连接到。

在这个特定的实例中,如果您有四个实际拥有相同域的服务器,您可以获得通配符SSL证书(即它涵盖* .mydomain.com),然后您实际上可以使用一个公共IP地址对于所有四台服务器。只需将所有DNS记录指向相同的IP地址,然后让服务器发出您的通配符证书,无论客户端使用哪个主机名,该证书都是有效的。完成SSL握手后,服务器可以查看客户端请求中的Host:-header,以确定请求实际用于哪个服务器,即您有一个服务器充当HTTPS端点,其中所有HTTPS请求都是收到然后内部转发到未加密的请求到正确的服务器(或虚拟地由一个物理服务器处理所有服务器名称)。

如果您使用的是Apache HTTP服务器,我建议您阅读有关基于名称的虚拟主机和代理转发的信息: