我有一台家庭网络服务器、/29 个 IPv4 地址(由于具有网关地址要求的路由子网,目前可从地址块中分配 3 个)和两个已分配给我的 DNS 记录的地址。此外,我还有一个 /64 IPv6 子网,其中两个地址已分配给我的 DNS 记录。
我已经修改了我的 sysconfig > network-scripts 文件(通过网络管理器而不是 DHCP 进行管理),以使所有 IPv4 地址都可用于我的系统,并将 IPv6 子网指定为辅助子网,如下所示(我认为这是正确的,但如果不正确,请告诉我):
IPV6ADDR=2a10:b900:10e4:1::2/64
IPV6ADDR_SECONDARIES=2a10:b900:10e4:1::/64
IPV6_DEFAULTGW=2a10:b900:10e4:1::
问题是什么?- 我需要修改我的绑定区域文件以使用额外的可用 IP 地址和整个 IPv6 子网。我想我可以将 IPv4 添加为额外的 A 记录(尽管我过去遇到过导致连接问题的问题),但这里有人能告诉我如何添加 IPv6 子网吗?
答案1
总结一下评论,没有答案,因为这个问题完全基于错误的假设。
[…] 将 IPv6 子网指定为辅助子网,如图所示
IPV6ADDR=2a10:b900:10e4:1::2/64 IPV6ADDR_SECONDARIES=2a10:b900:10e4:1::/64
这实际上并不分配整个子网。它分配单个地址(全零 IID 地址,2a10:b900:10e4:1:0:0:0:0)并将“子网掩码”设置为 /64。此行为与分配任何其他地址相同;对 …:0:0:0:0 没有特殊处理。两种情况下的 /64 仅表示哪些地址是“在线”的(可以通过物理接口在 MAC 级别访问)。
https:// 连接无法共享(即:如果是 http://,您可以通过同一个 IP 地址建立 10 个连接,但如果是 https://,则这些相同的连接将需要 10 个 IP 地址
不会,因为底层传输协议 TCP 已经有一个多路复用机制——本地端口 + 远程端口的组合。假设你有
- 一个客户,
- 一台服务器监听一个端口,
(local_addr, remote_addr, local_port, remote_port)
理论上,通过改变 local_port,您可以获得最多 65535 个唯一组合。实际上,该数字在 ~32k 或 ~48k 之间,具体取决于操作系统配置的“临时端口”范围。
该机制独立于上层协议,服务器可以接受到端口 443 的 HTTPS 连接数与它可以接受端口 80 上的 HTTP 连接数一样多。在这两种情况下,客户端和服务器的网络堆栈都将唯一地标识每个连接的每个数据包。
如果你的故事是关于 HTTP(S)“虚拟主机”而不是“连接”,即共享,那么它仍然会有些道理域名在同一 IP 地址上。10 到 20 年前,HTTPS 服务器(更准确地说是 SSL/TLS 服务器)只能通过单个 IP 地址:端口提供一个证书,因此只能为颁发单个证书的域名提供服务。
但是,现在所有现代客户端都支持 TLS 1.1+“服务器名称指示”,这允许它们在 TLS 握手期间请求特定的域名,以便服务器可以在开始应用层握手之前选择正确的 TLS 证书。
总之,一开始就没有必要为服务器分配子网。
最后,技术上的主要问题:
因此,我尝试创建一个解决方案,让 BIND 可以在需要时进入地址池
DNS 没有这样的功能——只有 AAAA 记录可以指向 IPv6 地址,并且每个这样的记录只能指向一个地址。(还有其他类型,但它们的用途不同,大多数软件只会不看看着他们。
您必须使用 BIND 的$GENERATE
功能,这是一个可以扩展到许多记录的宏,或者编写一个自定义 DNS 服务器,该服务器可以根据需求生成具有随机 AAAA 记录的响应。