IPv4 IP 越来越稀缺,价格越来越昂贵,我想知道是否有可能将我们的 Web 服务器完全切换到 IPv6。我知道这是可能的建议使用 IPv4 和 IPv6但我仍然想知道:
有没有办法仅使用一个 IPv4 地址就可以访问多个 IPv6 Web 服务器?
例如,关于 HTTPS,我们会面临什么问题?
答案1
基因转移酶
第一个问题很简单:是的,这正是 NAT 的用途,但您必须将单个 v4 地址放在 v6 服务器池前面,为每个池成员提供一个 RFC1918 v4 地址,并将一个真实的 v4 地址/端口对打通到您希望具有 v4 寻址的每个 RFC1918 地址/端口对。您需要手动为每个服务器分配一个外部端口:
- 端口 81 => 服务器1:80
- 端口 82 => 服务器2:80
- ...
缺点:具有防火墙的客户端可能不被允许连接到端口 81。
代理人
如果您不想这样做,v4 框将需要运行某种虚拟主机代理,以便它可以从仅 v4 的主机接收对 v6 池的服务请求,代理请求并提供答复。
如何设置代理远远超出了 SF 答案的范围,但本质上前端框需要维护一个代理表,例如
- site1.example.com/* 代理-> [2001:ea48:abc1:3500::1:1]:80/*
- site2.example.com/* 代理-> [2001:ea48:abc1:3500::2:1]:80/*
- site3.example.com/* 代理-> [2001:ea48:abc1:3500::6:1]:80/*
回答来自解析为 v4 地址 site[123].example.com 的站点上的客户端的传入请求,并将它们代理到上面列出的 v6 地址上运行类似名称站点的服务器。代理还需要将响应返回给请求者。对于启用 v6 的客户端,如果您还正确设置了路由和 v6 防火墙,则可以在其 AAAA 记录下宣传代理本身。
HTTPS
至于 HTTPS,情况与那些想要在单个 v4 地址上本地运行多个 HTTPS 服务器的人相同:您可以运行多个 v4 端口(打通;参见上文),或者依赖 SNI(参见很多地方)并忽略不支持它的主机。
我怀疑您真正想问的是“是否存在神奇的服务器端精灵粉尘,可以为不知道 v6 的最终用户启用 v6 连接”,我认为答案是“否”。您必须在 v4 中完全接受他们的请求,并以相同的方式将答案返回给他们;见上文。