У меня есть домашний веб-сервер, /29 IPv4-адресов (3 из которых в настоящее время можно назначить из блока из-за наличия маршрутизируемой подсети с требованием адреса шлюза) и два адреса, уже назначенные моим DNS-записям. Кроме того, у меня есть /64 IPv6-подсеть с двумя адресами, уже назначенными моим DNS-записям.
Я изменил свой файл sysconfig > network-scripts (управляемый через Network Manager, а не DHCP), чтобы сделать все адреса IPv4 доступными для моей системы, при этом подсеть IPv6 была назначена в качестве вторичной, как показано (что, по-моему, правильно, но, пожалуйста, сообщите мне, если это не так):
IPV6ADDR=2a10:b900:10e4:1::2/64
IPV6ADDR_SECONDARIES=2a10:b900:10e4:1::/64
IPV6_DEFAULTGW=2a10:b900:10e4:1::
Проблема? - Мне нужно изменить файлы зоны Bind, чтобы использовать как дополнительный доступный 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:// не может быть общим (т. е. вы можете иметь 10 подключений через один и тот же IP-адрес, если они http://, но эти же самые соединения потребовали бы 10 IP-адресов, если бы они были https://
Нет, не будут, потому что базовый транспортный протокол TCP уже имеет механизм мультиплексирования – комбинацию локального порта + удаленного порта. Предполагая, что у вас есть
- один клиент,
- один сервер прослушивает один порт,
теоретически можно получить до 65535 уникальных (local_addr, remote_addr, local_port, remote_port)
комбинаций, изменяя local_port. На практике это число находится где-то в пределах ~32k или ~48k, в зависимости от того, какой диапазон "эфемерных портов" настроила ОС.
Этот механизм не зависит от протокола верхнего уровня, и сервер может принимать столько же HTTPS-подключений к порту 443, сколько он может принимать HTTP-подключений к порту 80. В обоих случаях сетевые стеки клиента и сервера будут уникально идентифицировать каждый пакет каждого соединения.
Ваша история все равно имела бы смысл, если бы речь шла о «виртуальных хостах» HTTP(S) вместо «соединений», т.е. совместном использованиидоменные именана том же IP-адресе. 10–20 лет назад было бы верно, что HTTPS-сервер (точнее, SSL/TLS-сервер) мог обслуживать только один сертификат по одному IP-адресу:порту и, следовательно, мог обслуживать только столько доменов, для которых был выпущен один сертификат.
Однако теперь все современные клиенты поддерживают TLS 1.1+ «Server Name Indication», что позволяет им запрашивать определенное доменное имя во время установления связи TLS, чтобы сервер мог выбрать правильный сертификат TLS перед началом установления связи на уровне приложений.
В заключение следует отметить, что изначально назначение подсети серверу не является необходимым.
Наконец, технически главный вопрос:
Поэтому я пытаюсь создать решение, при котором BIND сможет использовать пул адресов, если это необходимо.
DNS не имеет такой функции — только записи AAAA могут указывать на адреса IPv6, и каждая такая запись может указывать только на один адрес. (Существуют и другие типы, но они имеют разное применение, и большинство программ простоне смотрина них.)
Вам придется использовать $GENERATE
функцию BIND, которая представляет собой макрос, который может расширяться до множества записей, или написать собственный DNS-сервер, который будет генерировать ответы со случайными записями AAAA по запросу.