![运行多个客户机但具有单个外部 IPv4 的物理服务器策略](https://linux22.com/image/586514/%E8%BF%90%E8%A1%8C%E5%A4%9A%E4%B8%AA%E5%AE%A2%E6%88%B7%E6%9C%BA%E4%BD%86%E5%85%B7%E6%9C%89%E5%8D%95%E4%B8%AA%E5%A4%96%E9%83%A8%20IPv4%20%E7%9A%84%E7%89%A9%E7%90%86%E6%9C%8D%E5%8A%A1%E5%99%A8%E7%AD%96%E7%95%A5.png)
可以理解的是,我的托管商正在减少新服务器提供的 IPv4 地址,以便下次我将我的东西重新定位到新服务器时,我将拥有大量的 IPv6 地址,但只有一个 IPv4 地址。
对于我只运行一个实例的服务(例如 SMTP),这应该不是问题。我只需通过 NAT 即可(使用iptables/6
)。但是,对于其他服务 - 我在这里特别担心 HTTP/S - 我看到的问题是如何将传入流量传递到正确的客户机,并显然将出站数据再次传送到客户端。
我这里的主要问题是安全性。我想我可以(滥用)使用一个常用的代理或一个也可以充当代理的 Web 服务器(nginx、lighttpd)。但是,在这种情况下,客户系统会将此视为“本地请求”,并且某些访问控制机制可能会失败。此外,由于加密流量,HTTPS 在这里是一个大问题,尽管我可以让主机系统完全实现 HTTPS 部分,并以未加密的方式代理来自/到客户系统(一直在单台机器上使用该方法,其中 lighttpd 实例充当处理特定 URI 集的 Apache2 后端的前端)。
尽管各个域的处理是由各个客户执行的,我如何才能向外界提供相同的服务(这里是 HTTP/S)?或者更确切地说,考虑什么最佳实践这些日子?
[internet] <--> [IPv4:host] <-+-> [guest:foo.org]
|
|-> [guest:bar.org]
|
|-> [guest:baz.org]
...或者我是否可以通过仅AAAA
向这些域提供记录并让客户端处理所有事情来忽略所有这些问题?
答案1
除了“下次我将东西重新定位到新服务器时,它将位于具有更多 IP 的新主机上”之外,我看不到这种情况会以任何方式结束。除非您计划 3-5 年或您的用户是真正的密友,否则这可能会以悲剧收场。
IPv6 仍不是主流,没有 IPv4 就不会有任何访客。仅拥有 AAAA 记录将使服务器相当闲置。轶事经验是,在 3-5 年内,每个人都会至少一次丢弃他们的廉价无线路由器,也许到人们购买新路由器时,廉价路由器将支持它而不需要 OpenWRT。
在安全方面,X-Forwarded-For:
旨在让服务器知道哪个 IP 连接到反向代理,因此您需要重写站点的代码以让其查看标头而不是连接本身。
信噪比是为了处理 SSL 虚拟主机而开发的,而且几乎所有当前服务器都支持它,因此从 Apache 或 Nginx 设置反向代理应该可以解决此问题。如果任何来宾需要客户端 SSL 证书,我不知道该证书信息是如何从代理传递的(我确信它是在标头中发送的)。这里真正的问题是,在 Windows XP 上,IE 不支持 SNI,并且会使用他们输入的任何主机名获取默认虚拟主机的证书,希望您的用户升级 Windows 或切换到 Firefox。