2

Я пытаюсь запустить личный веб-сервис из моей локальной сети на IPv6. Я хочу, чтобы он был виден в общедоступном интернете и за записями AAAA. Мне нужно сбалансировать простоту настройки и плавную реконфигурацию, когда префикс IPv6 от моего провайдера изменится.

К какому адресу я должен привязаться? Локальный IPv6-адрес + NAT, или я должен использовать глобально маршрутизируемые параметры, передаваемые на хост через делегирование префикса?

Мои хосты находятся за маршрутизатором OpenWRT, IPv4 + IPv6. OpenWRT получает префикс /56 делегированный моим интернет-провайдером (Telus в Канаде). Однако этот префикс не является статическим. Он меняется время от времени, в порядке дней. Я могу ускорить изменения иногда, делая перезагрузки.

Я готов попробовать эту вещь без NAT на IPv6. Я в порядке с пробиванием портов /IP-адресов, открытых в брандмауэре с отслеживанием состояния, но я бы хотел избежать преобразования адресов.

На моей установке IPv6 без сохранения состояния и состояния мои хосты на локальной сети выполняют автоматическую настройку, а также DHCPv6 для получения арендованных адресов. На моей коробке с Ubuntu:

192.168.1.4
fd00:cafe::4/128                    # ULA local (by dhclient -6)
2001:2:3:4:a8a8:efcf:d96d:1315/64   # slaac+privacy global
2001:2:3:4:22f:bcff:fe12:1234/64    # slaac+EUI64 (macaddr)
fd00:cafe::a8a8:efcf:d96d:1315/64   # slaac+privacy local
fd00:cafe::22f:bcff:fe12:1234/64    # slaac+EUI64 (macaddr)
fe80::21f:bcff:fe08:c07a/64         # link local

Адреса 2001:2:3:4: маршрутизируются в общедоступном Интернете. fd00:cafe:: маршрутизируются только локально в моей подсети. fd00:cafe:: - это префикс, который я настроил в OpenWRT (ULA) только для моей внутренней сети. fe80: конечно не маршрутизируемый. OpenWRT не сдает в аренду 2001:2:3:4::4 в этой конфигурации, по замыслу (однако мне бы очень хотелось).

IP-адрес v6, который я выберу для своей службы, должен будет где-то оказаться в DNS-записи AAAA, поэтому было бы предпочтительным, если бы он не менялся каждый час или около того.

  • Адреса slaac+EUI немного говорят о моем mac-адресе, и мне это не нравится.
  • Адреса конфиденциальности slaac+ чуть более сохраняют конфиденциальность, но меняются каждые несколько часов, а это менее желательно. Адреса сохраняются, если они все еще используются, но они будут высвобождаться каждый раз, когда я запускаю службу (и необходимо будет обновить dns - что занимает минимум 5 минут).
  • Другой вариант - просто статически выбрать суффикс, который мне нравится для моей службы (например, ::d00d), с тем же глобально маршрутизируемым префиксом, и статически назначить его моему никну, например, так:
$ sudo ip -6 addr add 2001:2:3:4::d00d/64 dev eth0

Тогда в моих приложениях я мог связываться только с этим адресом (или с "::" на устройстве, содержащем этот ip).

# ./myserver -l 2001:2:3:4::d00d/64 -p 8080

Теперь, когда у меня есть прослушивающий сокет, связанный с публично маршрутизируемым IP-адресом на хосте, каков наилучший способ сообщить маршрутизатору, чтобы он пропускал пакеты SYN? Мне нужно пробить отверстие UPnP, NAT-pmp?

Я думаю об этом неправильно? Какая типичная настройка на IPv6?

Обновить

Я попытался использовать настройку hostid dhcp в моей аренде OpenWRT /etc/config/dhcp . Предположительно, это позволяет указать последние 32 бита резервирования dhcpv6. Я надеялся получить дополнительный IPv6 с префиксом wan и выбранным суффиксом, но не повезло. Клиент dhcp6 на моем хосте все еще не получает этот дополнительный IP. Вероятно, связано с этой проблемой odhcpd 61 .

1 ответ1

2

Если вы намереваетесь настроить запись AAAA , настройте этот адрес как статический IP-адрес на хосте, для которого требуется статический IP-адрес. DHCP может использоваться для обслуживания статических IP-адресов, но это плохое решение второго варианта.

OpenWRT использовал dnsmasq для DHCP (v4 и v6) и DNS. dnsmasq может быть настроен на предоставление статического адреса IPv6, если клиент использует DHCPv6. Возможно, целесообразно использовать их в качестве места назначения для прокси или VIP (виртуальный IP-адрес). Похоже, что в последней версии OpenWRT для некоторых, если не всех, служб DHCP используется odhcpd .

Используйте брандмауэр, чтобы открыть порты из Интернета на сервер. (Адрес, который вы назначили, будет адресом из Интернета и вашей локальной сети.) Вы должны иметь возможность локально подключаться к серверу, не открывая никаких портов на брандмауэре.

odhcpd поддерживает статический IP-адрес, добавляя раздел host в свою конфигурацию. У меня нет маршрутизатора с последней версией OpenWRT, поэтому я использую dnsmasq который также может предоставлять службы RA и DHCPv6. Вы должны иметь возможность указать статический IP-адрес внизу страницы конфигурации DHCP и DNS.

IPv6 не должен требовать NAT, хотя они могут быть назначением за прокси или VIP (виртуальный IP). Создайте /64 из /56, делегированного вам, и назначьте адрес из этого /64 вашему веб-серверу. Это адрес, который вы должны использовать. Вашему веб-серверу понадобится динамический IP-клиент, который может обновлять ваш DNS при каждом изменении адреса. Пока вы не получите статические IP-адреса DHCP, MAC-адрес будет вашим стабильным адресом.

Адрес в сетевом блоке с fc00:/8 не должен использоваться для связи с интернетом. Они предназначены для использования в качестве уникальных локальных адресов, аналогичных частным адресам IPv4.

Возможно, вам придется разработать собственные сценарии динамического IP-адреса. На маршрутизаторе вам нужно будет обновить брандмауэр при изменении /56, и, возможно, потребуется внести некоторые другие изменения. На веб-сервере вам необходимо обновить DNS и, возможно, назначить новый статический IP-адрес. (Я думаю, что назначение при изменении префикса IP-адреса может быть проще, чем назначение статического IPv6-адреса DHCP.)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .