Ваш вопрос на самом деле не является вопросом программирования, поэтому я предполагаю, что вам нужно это знать, потому что вы разрабатываете программное обеспечение, использующее IPv6. Глядя на это с точки зрения приложения:
Вам не нужно поворачивать, чтобы найти свой публичный адрес. Без NAT ваш адрес не изменяется сетью, а ваш локальный адрес является вашим публичным адресом. Вам просто нужно позволить своему программному обеспечению спросить у ОС, какие в настоящий момент сконфигурированные адреса.
В IPv6 обычно это не тот шлюз, который выдает адреса подключенным устройствам. Шлюз только передает сетевой префикс (a / 64) в сеть, и все устройства выбирают свои собственные адреса (обычно несколько адресов на устройство).
DHCPv6 существует, но он существуетобычно не используется для настройки адресов IPv6 на устройствах. Он может использоваться в режиме без сохранения состояния для настройки доменных имен, преобразователей DNS и т. Д., Но это не связано с назначением адресов.
Таким образом, устройство выбирает свои собственные адреса в пределах префикса, передаваемого шлюзом. Как это выбрать?
Первоначально устройства использовали MAC-адрес интерфейса для суффикса (используя модифицированный алгоритм EUI-64). Проблема в том, что если у вас, например, круг, то онлайн-сервисы, к которым вы подключаетесь, могут отслеживать ваше устройство. Потому что независимо от того, к какой сети вы подключаетесь, последние 64 бита вашего адреса будут содержать ваш уникальный MAC-адрес. Таким образом можно было отследить ваше устройство от работы до дома, до любимого кафе и т. Д.
В эти дни ОС использует расширения конфиденциальности, чтобы сделать ваш IPv6-адрес недоступным для отслеживания. Часто существует стабильный адрес, связанный с префиксом сети, поэтому каждый раз, когда вы подключаетесь к одной и той же сети, вы получаете один и тот же адрес. Этот адрес полезен для одноранговой связи.
Но они пошли дальше. Часто существует также набор адресов конфиденциальности, которые (полу) случайным образом меняются со временем. Ваше устройство может генерировать новый адрес каждый день или даже каждый час. Это даже усложняет для онлайн-сервисов определение того, существует ли одно устройство, которое изменило свой адрес конфиденциальности, или существует несколько устройств. Поскольку этот адрес со временем меняется, он подходит для коротких исходящих соединений, но не так полезен для приема входящих соединений. Для этого используйте стабильный адрес, который я упомянул в предыдущем параграфе.
Вероятно, самый сложный бит - как спросить у ОС о доступных адресах. Глядя на мое собственное окно macOS, я вижу:
en2: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
ether c8:e0:eb:5c:af:61
inet6 fe80::1074:8568:e447:d9e3%en2 prefixlen 64 secured scopeid 0x12
inet6 2a02:xxxx:xxxx:xxxx:3e:873f:837:1417 prefixlen 64 autoconf secured
inet6 2a02:xxxx:xxxx:xxxx:b19c:71c5:1de8:8fde prefixlen 64 autoconf temporary
Вы можете видеть как долгосрочный secured
адрес, так и краткосрочный temporary
адрес.
Не зная, какая ОСВы разрабатываете для и на каком языке программирования я не могу помочь вам дальше. Пожалуйста, измените свой вопрос, чтобы включить эту информацию.