【问题标题】:Thoughts on propsed network plan: port forwarding to servers, static IP addresses and DNS对propsed网络计划的思考:端口转发到服务器、静态IP地址和DNS
【发布时间】:2014-08-18 16:52:20
【问题描述】:

我正在设置 4 个服务器,每个服务器都有通过 HTTPS 的 RESTful API。因为我们正处于初创公司的早期阶段,所以我将把这些放在我的衣橱里。

我有商业级的 Comcast 服务,所以我可以获得一个静态 IP 地址或一系列地址。 IP 地址是每月 10 美元/个,所以如果我只得到一个,我可以节省大约 30 美元。我意识到这听起来像是我的超级便宜,但在我们吸引到一些客户之前,我们一直在节俭。

我们可能会使用一台服务器作为“工具”服务器,它允许我们通过 SSH 访问其他服务器;其他 3 台服务器需要通过 HTTPS 对 LAN 上的 Internet 开放。

我正在考虑获取一个静态 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 中设置 A 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

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

【问题讨论】:

    标签: networking dns


    【解决方案1】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-09-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多