IPv6 на VPS для прокси: исходящий трафик и проверки

IPv6 на VPS для прокси: исходящий трафик и проверки

James Carter
14 октября 2026 г.· 11 мин чтения

IPv6 на VPS для прокси работает, когда у сервера есть рабочий глобальный IPv6-адрес и маршрут по умолчанию, а самому прокси указано, какое семейство адресов предпочитать при разрешении адреса назначения. Сначала уточните тип выделения, затем по порядку настройте систему, межсетевой экран и sing-box, оставив IPv4 проверенным запасным вариантом. Процедура составлена по официальным источникам, перечисленным ниже; полный сквозной тест не выполнялся.

Ключевые выводы

  • Что можно настроить, определяет выделение от провайдера, поэтому изучите его до любых правок.
  • Через ICMPv6 работает Neighbor Discovery; полная блокировка ICMPv6 может сломать путь IPv6.
  • В sing-box 1.12 и новее приоритет IPv6 задаётся в domain_resolver, а не в устаревшем domain_strategy.
  • Инструкция использует один постоянный IPv6-адрес и не описывает ротацию адресов для обхода банов или лимитов.

Что меняет IPv6 на VPS для прокси?

Прокси-сервер открывает новое соединение с каждым адресатом от имени клиента. Если клиент передаёт доменное имя, прокси разрешает его и выбирает IPv4- или IPv6-адрес; если клиент передаёт IP-адрес, семейство уже определено. В sing-box этот выбор задают поля dial, они же позволяют привязать исходящие соединения к конкретному локальному IPv6-адресу.[1]

Значит, серверу нужно две вещи: путь IPv6, который работает на уровне операционной системы, и настройка прокси, которая этим путём пользуется. Руководство по планированию самостоятельного размещения описывает обязанности по обслуживанию в целом. Если семейства адресов для вас внове, начните с разбора различий в адресации IPv4 и IPv6: проверки ниже предполагают, что вы умеете читать IPv6-префикс.

Это изменение на стороне сервера. Клиентское устройство, отправляющее IPv6 мимо туннеля, — другая проблема, она разобрана в объяснении утечек IPv6.

Какое выделение IPv6 дал вам провайдер?

Провайдеры обычно выдают адреса в одном из нескольких распространённых вариантов, и от варианта зависит, что значит «добавить адрес». При префиксе on-link вышестоящий маршрутизатор находит ваш адрес через Neighbor Discovery: он отправляет Neighbor Solicitation, и отвечает только адрес, действительно настроенный на вашем интерфейсе.[2] При маршрутизируемом префиксе провайдер направляет весь префикс на один адрес, который у вас уже есть.

ВыделениеЧего ждёт маршрутизаторЧто настроитьГлавный риск
Один /128Один адрес, отвечающий на NDЭтот адрес и указанный шлюзОпечатка в адресе или шлюзе
/64 on-linkАдреса, отвечающие на ND в каналеОдин выбранный адрес из префиксаАдрес, который вы не настраивали
Маршрутизируемый /64Префикс направлен на адрес каналаАдрес канала плюс использование префиксаПропущенный отдельный адрес канала
SLAAC через RARouter Advertisements в каналеПринимать RA, без статических дублейRA игнорируются при включённой пересылке

Точный адрес, длину префикса и шлюз возьмите в панели управления или документации провайдера; некоторые провайдеры используют link-local шлюз вроде fe80::1. Дальше в инструкции используется один постоянный адрес. Перебор множества адресов на каждое соединение, чтобы обходить блокировки или ограничения платформ, здесь не рассматривается и может нарушать условия провайдера или сервиса назначения.

Шаг 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, а вы включите пересылку, маршрут по умолчанию может незаметно пропасть.

Шаг 2: Задайте адрес и маршрут по умолчанию в Netplan

На серверах 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.

Шаг 3: Оставьте ICMPv6 открытым и согласуйте входящие ограничения

Neighbor Discovery работает поверх ICMPv6, поэтому межсетевой экран, отбрасывающий весь ICMPv6, может сделать адрес недоступным даже при верной конфигурации.[2] Разрешите типы ICMPv6, которые ваш инструмент межсетевого экрана помечает как необходимые для IPv6, вместо сплошного запрета.

Затем проверьте, что открыто наружу. Прокси, слушающий [::], принимает IPv6-соединения, поэтому входящим правилам, написанным для IPv4, нужны аналоги для IPv6. Сравните вывод ss -lntup со списком IPv6-правил межсетевого экрана и убедитесь, что порты управления и любые локальные слушатели закрыты из интернета для обоих семейств.

Шаг 4: Настройте исходящий IPv6 в sing-box

Начиная с 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Используется IPv4IPv6 новый и не проверен
prefer_ipv6Используется IPv6Откат на IPv4Нужен IPv6 там, где он есть
ipv6_onlyИспользуется IPv6ОшибкаПроверка только пути IPv6
ipv4_onlyИспользуется IPv4Используется IPv4Быстрый откат

Шаг 5: Проверьте адресаты IPv6, откат на 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.

Шаг 6: Откатите изменения, не теряя доступа

Во время отката держите сессию по 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 с одного адреса — неподходящий инструмент?

Исходящий IPv6 меняет маршрут сервера, но не то, кто вы. Адресаты по-прежнему видят один постоянный адрес, связанный с вашим VPS. Если цель — избавиться от обязанностей оператора, размещённый сервис может подойти лучше, чем сервер, который вы обслуживаете сами.

Инструмент не подходит и тогда, когда у адресата нет IPv6, когда путь IPv6 у провайдера нестабилен или когда нужны отдельные адреса для каждого пользователя. В таких случаях оставьте prefer_ipv4 и вернитесь к вопросу, когда провайдер исправит путь. Домашним роутерам, получающим делегированный префикс, нужна другая процедура — она описана в руководстве по делегированию префикса в OpenWrt.

Итоги

  • До правок определите, что у вас: /128, /64 on-link, маршрутизируемый /64 или SLAAC.
  • Добавьте один адрес и один маршрут по умолчанию через netplan try, сохраняя доступ по IPv4.
  • Разрешите необходимый ICMPv6 и повторите для IPv6 входящие ограничения IPv4.
  • В sing-box 1.12 и новее используйте domain_resolver с prefer_ipv6, затем проверьте и IPv6, и откат на IPv4.

Часто задаваемые вопросы (FAQ)

Нужен ли целый /64 для исходящего IPv6?

Нет. Чтобы прокси достигал адресатов по IPv6, достаточно одного рабочего глобального адреса и маршрута по умолчанию. /64 лишь даёт больше адресов на выбор.

Почему сервер пингует шлюз, но не открывает сайты?

Обычно отсутствует маршрут по умолчанию или он указывает на неверный шлюз. Сравните ip -6 route show default со шлюзом из документации провайдера и проверьте, не отбрасывает ли межсетевой экран ICMPv6.

Стоит ли по-прежнему использовать domain_strategy в sing-box?

Не в версии 1.12 и новее. Там это поле устарело и будет удалено в 1.14.0, поэтому перенесите приоритет в объект domain_resolver со значением стратегии.

Сломает ли prefer_ipv6 сайты, у которых есть только IPv4?

Не должен. При prefer_ipv6 адресат без записи AAAA по-прежнему достигается по IPv4; такие соединения завершаются ошибкой только при ipv6_only.

Почему маршрут IPv6 пропал после включения пересылки?

При accept_ra, равном 1, ядро перестаёт принимать Router Advertisements, как только включена пересылка. Установите accept_ra в 2 на этом интерфейсе или задайте статический маршрут по умолчанию.

Можно ли менять IPv6-адреса, чтобы обходить лимиты запросов?

Эта инструкция такое не описывает. Ротация адресов для обхода блокировок или ограничений может нарушать условия провайдера и сайтов, а описанная здесь процедура использует один постоянный адрес.

Делает ли исходящий IPv6 прокси более приватным?

Нет. Он меняет лишь семейство адресов, по которому идёт трафик. Адресаты по-прежнему видят адрес, закреплённый за вашим VPS, поэтому приватность зависит от тех же решений об операторе и журналах, что и раньше.

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

Источники:

  1. sing-box — Dial Fields — https://sing-box.sagernet.org/configuration/shared/dial/
  2. IETF — RFC 4861, Neighbor Discovery for IP version 6 (IPv6) — https://www.rfc-editor.org/rfc/rfc4861
  3. Linux kernel — IP sysctl — https://docs.kernel.org/networking/ip-sysctl.html
  4. Netplan — YAML configuration reference — https://netplan.readthedocs.io/en/stable/netplan-yaml/
  5. Netplan — netplan try — https://netplan.readthedocs.io/en/stable/netplan-try/
  6. sing-box — Migration — https://sing-box.sagernet.org/migration/
  7. sing-box — Rule Action — https://sing-box.sagernet.org/configuration/route/rule_action/
  8. sing-box — Local DNS server — https://sing-box.sagernet.org/configuration/dns/server/local/

Sources checked 14 октября 2026 г.


Рекомендуемые статьи:

Начните бесплатный 3-дневный пробный период

Зарегистрируйтесь и попробуйте все премиум-функции бесплатно.

*Только для новых пользователей. Один пробный период на пользователя.

IPv6 на VPS для прокси: исходящий трафик и проверки | AethoVPN