Начните бесплатный 3-дневный пробный период
Зарегистрируйтесь и попробуйте все премиум-функции бесплатно.
*Только для новых пользователей. Один пробный период на пользователя.


IPv6 на VPS для прокси работает, когда у сервера есть рабочий глобальный IPv6-адрес и маршрут по умолчанию, а самому прокси указано, какое семейство адресов предпочитать при разрешении адреса назначения. Сначала уточните тип выделения, затем по порядку настройте систему, межсетевой экран и sing-box, оставив IPv4 проверенным запасным вариантом. Процедура составлена по официальным источникам, перечисленным ниже; полный сквозной тест не выполнялся.
Ключевые выводы
- Что можно настроить, определяет выделение от провайдера, поэтому изучите его до любых правок.
- Через ICMPv6 работает Neighbor Discovery; полная блокировка ICMPv6 может сломать путь IPv6.
- В sing-box 1.12 и новее приоритет IPv6 задаётся в
domain_resolver, а не в устаревшемdomain_strategy.- Инструкция использует один постоянный IPv6-адрес и не описывает ротацию адресов для обхода банов или лимитов.
Прокси-сервер открывает новое соединение с каждым адресатом от имени клиента. Если клиент передаёт доменное имя, прокси разрешает его и выбирает IPv4- или IPv6-адрес; если клиент передаёт IP-адрес, семейство уже определено. В sing-box этот выбор задают поля dial, они же позволяют привязать исходящие соединения к конкретному локальному IPv6-адресу.[1]
Значит, серверу нужно две вещи: путь IPv6, который работает на уровне операционной системы, и настройка прокси, которая этим путём пользуется. Руководство по планированию самостоятельного размещения описывает обязанности по обслуживанию в целом. Если семейства адресов для вас внове, начните с разбора различий в адресации IPv4 и IPv6: проверки ниже предполагают, что вы умеете читать IPv6-префикс.
Это изменение на стороне сервера. Клиентское устройство, отправляющее IPv6 мимо туннеля, — другая проблема, она разобрана в объяснении утечек IPv6.
Провайдеры обычно выдают адреса в одном из нескольких распространённых вариантов, и от варианта зависит, что значит «добавить адрес». При префиксе on-link вышестоящий маршрутизатор находит ваш адрес через Neighbor Discovery: он отправляет Neighbor Solicitation, и отвечает только адрес, действительно настроенный на вашем интерфейсе.[2] При маршрутизируемом префиксе провайдер направляет весь префикс на один адрес, который у вас уже есть.
| Выделение | Чего ждёт маршрутизатор | Что настроить | Главный риск |
|---|---|---|---|
| Один /128 | Один адрес, отвечающий на ND | Этот адрес и указанный шлюз | Опечатка в адресе или шлюзе |
| /64 on-link | Адреса, отвечающие на ND в канале | Один выбранный адрес из префикса | Адрес, который вы не настраивали |
| Маршрутизируемый /64 | Префикс направлен на адрес канала | Адрес канала плюс использование префикса | Пропущенный отдельный адрес канала |
| SLAAC через RA | Router Advertisements в канале | Принимать RA, без статических дублей | RA игнорируются при включённой пересылке |
Точный адрес, длину префикса и шлюз возьмите в панели управления или документации провайдера; некоторые провайдеры используют link-local шлюз вроде fe80::1. Дальше в инструкции используется один постоянный адрес. Перебор множества адресов на каждое соединение, чтобы обходить блокировки или ограничения платформ, здесь не рассматривается и может нарушать условия провайдера или сервиса назначения.
Сначала войдите по IPv4, чтобы ошибка в IPv6 не лишила вас доступа. Зафиксируйте текущее состояние:
ip -6 addr show scope global
ip -6 route show default
sysctl net.ipv6.conf.all.forwarding
sysctl net.ipv6.conf.eth0.accept_ra
curl -6 -sS -o /dev/null -w '%{http_code}\n' https://example.com
Замените eth0 своим интерфейсом. Глобальный адрес, маршрут по умолчанию и успешный curl -6 означают, что системный путь уже работает, и можно переходить к шагу 3. Глобальный адрес без маршрута по умолчанию или отсутствие глобального адреса означают, что нужен шаг 2.
Значение accept_ra важно для прокси-серверов, которые ещё и пересылают трафик, например для конечной точки VPN. При accept_ra, равном 1, ядро принимает Router Advertisements, только пока пересылка выключена; значение 2 принимает их и при включённой пересылке.[3] Если провайдер полагается на RA, а вы включите пересылку, маршрут по умолчанию может незаметно пропасть.
На серверах Ubuntu с Netplan добавьте отдельный файл, а не правьте сгенерированный провайдером, и сохраните копию каждого существующего файла из /etc/netplan/. Пример задаёт один адрес и маршрут IPv6 по умолчанию в Netplan, используя документационный префикс 2001:db8::/32; замените адрес, длину префикса, шлюз и интерфейс значениями провайдера.
network:
version: 2
ethernets:
eth0:
addresses:
- "2001:db8:1234:5678::10/64"
routes:
- to: "::/0"
via: "fe80::1"
on-link: true
Параметр addresses в Netplan добавляет статические адреса к полученным через DHCP или RA, в routes обязательно указать как минимум to, а маршрут по умолчанию можно задать только один раз на семейство адресов и таблицу маршрутизации.[4] on-link: true сообщает системе, что шлюз подключён напрямую, — это важно, когда шлюз находится вне вашего префикса. Если провайдер использует RA, задайте accept-ra: true и не добавляйте статический маршрут, чтобы не получить два конкурирующих маршрута по умолчанию.[4]
Применяйте с таймером безопасности:
sudo netplan try
netplan try применяет конфигурацию и откатывает её, если вы не подтвердите изменения, по умолчанию в течение 120 секунд; после истечения времени или отмены проверьте, что прежнее состояние действительно вернулось.[5] Перед подтверждением снова выполните команды из шага 1.
Neighbor Discovery работает поверх ICMPv6, поэтому межсетевой экран, отбрасывающий весь ICMPv6, может сделать адрес недоступным даже при верной конфигурации.[2] Разрешите типы ICMPv6, которые ваш инструмент межсетевого экрана помечает как необходимые для IPv6, вместо сплошного запрета.
Затем проверьте, что открыто наружу. Прокси, слушающий [::], принимает IPv6-соединения, поэтому входящим правилам, написанным для IPv4, нужны аналоги для IPv6. Сравните вывод ss -lntup со списком IPv6-правил межсетевого экрана и убедитесь, что порты управления и любые локальные слушатели закрыты из интернета для обоих семейств.
Начиная с sing-box 1.12.0 поле dial domain_strategy устарело и будет удалено в 1.14.0; на замену пришёл объект domain_resolver, в котором указываются DNS-сервер и стратегия.[1][6] Допустимые значения стратегии: prefer_ipv4, prefer_ipv6, ipv4_only и ipv6_only.[7]
Фрагмент ниже показывает только важные части: DNS-сервер local, который разрешает имена через систему хоста, прямой outbound с приоритетом IPv6 и тестовый inbound, привязанный к loopback-адресу.[8] Встройте его в существующую конфигурацию, а не заменяйте ваш рабочий inbound.
{
"dns": {
"servers": [{ "type": "local", "tag": "local" }]
},
"inbounds": [
{ "type": "mixed", "tag": "test-in", "listen": "127.0.0.1", "listen_port": 2080 }
],
"outbounds": [
{
"type": "direct",
"tag": "direct-out",
"inet6_bind_address": "2001:db8:1234:5678::10",
"domain_resolver": { "server": "local", "strategy": "prefer_ipv6" }
}
],
"route": { "final": "direct-out" }
}
inet6_bind_address закрепляет IPv6-соединения за адресом, настроенным на шаге 2; если глобальный адрес один, этот параметр можно не указывать.[1] Выполните sing-box check -c /etc/sing-box/config.json и перезапускайте службу, только когда проверка пройдена.
| Стратегия | У адресата есть A и AAAA | Адресат только с IPv4 | Когда применять |
|---|---|---|---|
prefer_ipv4 | Используется IPv4 | Используется IPv4 | IPv6 новый и не проверен |
prefer_ipv6 | Используется IPv6 | Откат на IPv4 | Нужен IPv6 там, где он есть |
ipv6_only | Используется IPv6 | Ошибка | Проверка только пути IPv6 |
ipv4_only | Используется IPv4 | Используется IPv4 | Быстрый откат |
Проверяйте через loopback-inbound на самом сервере. --socks5-hostname передаёт прокси доменное имя, поэтому разрешение выполняет sing-box и применяет стратегию.
curl -sS --socks5-hostname 127.0.0.1:2080 -o /dev/null -w '%{remote_ip}\n' https://example.com
Считайте таблицу ожидаемыми наблюдениями и записывайте собственные результаты.
| Способ проверки | Ожидаемое наблюдение | Если не сработало |
|---|---|---|
| Сайт с двумя стеками через тестовый inbound | Соединение устанавливается по IPv6 | Перепроверьте шаг 1 и адрес привязки |
Сайт только с IPv4 при prefer_ipv6 | Соединение откатывается на IPv4 | Убедитесь, что не задан ipv6_only |
| Клиентское устройство через рабочий inbound | Проверка IP показывает IPv6 сервера для пути IPv6 | Сравните DNS клиента и правила прокси |
| Сканирование публичных портов по IPv6 | Отвечают только нужные порты | Добавьте недостающие IPv6-правила |
С клиента, подключённого к вашему прокси, проверьте, какой адрес видит внешний мир. Результат IPv6 подтверждает, что веб-запросы идут новым путём; результат IPv4 тоже может быть верным, если IPv4 выбрал сайт или собственное разрешение имён на клиенте. По окончании удалите тестовый inbound.
Во время отката держите сессию по IPv4 открытой. Удалите или переместите добавленный файл Netplan, выполните sudo netplan apply и убедитесь, что ip -6 route show default совпадает с записью из шага 1. В sing-box переключите стратегию на prefer_ipv4 или ipv4_only, уберите inet6_bind_address, выполните проверку конфигурации и перезапустите службу.
Если сервер стал недоступен, удалите добавленный файл через веб-консоль провайдера. Не отключайте IPv6 во всём ядре первым же действием: в документации ip-sysctl отмечено, что запись значения all для disable_ipv6 меняет сразу все интерфейсы.[3]
Исходящий IPv6 меняет маршрут сервера, но не то, кто вы. Адресаты по-прежнему видят один постоянный адрес, связанный с вашим VPS. Если цель — избавиться от обязанностей оператора, размещённый сервис может подойти лучше, чем сервер, который вы обслуживаете сами.
Инструмент не подходит и тогда, когда у адресата нет IPv6, когда путь IPv6 у провайдера нестабилен или когда нужны отдельные адреса для каждого пользователя. В таких случаях оставьте prefer_ipv4 и вернитесь к вопросу, когда провайдер исправит путь. Домашним роутерам, получающим делегированный префикс, нужна другая процедура — она описана в руководстве по делегированию префикса в OpenWrt.
netplan try, сохраняя доступ по IPv4.domain_resolver с prefer_ipv6, затем проверьте и IPv6, и откат на IPv4.Нет. Чтобы прокси достигал адресатов по IPv6, достаточно одного рабочего глобального адреса и маршрута по умолчанию. /64 лишь даёт больше адресов на выбор.
Обычно отсутствует маршрут по умолчанию или он указывает на неверный шлюз. Сравните ip -6 route show default со шлюзом из документации провайдера и проверьте, не отбрасывает ли межсетевой экран ICMPv6.
Не в версии 1.12 и новее. Там это поле устарело и будет удалено в 1.14.0, поэтому перенесите приоритет в объект domain_resolver со значением стратегии.
Не должен. При prefer_ipv6 адресат без записи AAAA по-прежнему достигается по IPv4; такие соединения завершаются ошибкой только при ipv6_only.
При accept_ra, равном 1, ядро перестаёт принимать Router Advertisements, как только включена пересылка. Установите accept_ra в 2 на этом интерфейсе или задайте статический маршрут по умолчанию.
Эта инструкция такое не описывает. Ротация адресов для обхода блокировок или ограничений может нарушать условия провайдера и сайтов, а описанная здесь процедура использует один постоянный адрес.
Нет. Он меняет лишь семейство адресов, по которому идёт трафик. Адресаты по-прежнему видят адрес, закреплённый за вашим VPS, поэтому приватность зависит от тех же решений об операторе и журналах, что и раньше.
Отказ от ответственности: Данная статья носит исключительно информационный характер и не является юридической, технической или иной профессиональной консультацией. Мы не гарантируем точность, полноту или актуальность содержания. Соблюдайте правила допустимого использования хостинг-провайдера и условия сервисов, к которым подключаетесь.
Источники:
Sources checked 14 октября 2026 г.
Рекомендуемые статьи:
Зарегистрируйтесь и попробуйте все премиум-функции бесплатно.
*Только для новых пользователей. Один пробный период на пользователя.





