Народный

Безопасность

ICMP-туннели и DNS-туннели 2026: можно ли спрятать VPN внутри пинга

Команда vpn-rating.xyz · · обновлено 31 мая 2026 г. · ⏱ 9 мин
§ в этой статье — 13 разделов

К маю 2026 ICMP- и DNS-туннели — это не серьёзный инструмент массового обхода блокировок, а нишевый workaround, который выживает там, где умирает всё остальное. Это техники из 2000-х, развитые в академической литературе как proof-of-concept «можно ли прокинуть произвольный payload через протокол, для которого он не предназначен». Сейчас они применяются в трёх основных сценариях: corporate-Wi-Fi с captive portal (где открыт только DNS), penetration testing, и в РФ — обход блокировок на критических узких местах вроде публичных Wi-Fi с UDP-фильтрацией.

Эта статья — практический разбор: как работают эти техники, где они применимы в 2026, какие у них фундаментальные ограничения и почему «спрятать VPN внутри пинга» в большинстве случаев — плохая идея, но иногда — единственная.

Базовый принцип: covert channels

ICMP-туннель и DNS-туннель — это два примера covert channels: коммуникационных каналов, которые встроены в протокол, не предназначенный для передачи данных пользователя. Принцип везде одинаковый — у протокола есть поля, которые передают полезные данные (типа payload в DNS-query или ICMP-echo data), и это поле можно заполнить чем угодно, включая шифрованный VPN-трафик.

Ключевое ограничение — пропускная способность. ICMP echo по дефолту ограничен 1472 байтами payload’а на пакет (без фрагментации, при MTU=1500). DNS-query — ещё хуже: классический UDP DNS ограничен 512 байтами, EDNS0 поднимает до 4096, но в реальных сетях multi-hop fragmentation ломает это на 1232 байтах MTU. Плюс DNS не поддерживает binary в QNAME — нужно кодировать в base32/base64 с потерей плотности.

Практический throughput на хорошей соединении:

  • ICMP-туннель — 50-200 KB/s
  • DNS-туннель — 5-20 KB/s

Для сравнения, минимальный комфортный для веб-сёрфинга — 500 KB/s. Стриминг видео — невозможен в принципе. SSH и почта — работают. Telegram-чатики без медиа — работают. WhatsApp-видеозвонки — нет.

Iodine — DNS-туннель de facto standard

Iodine — главный open-source DNS-туннель, написанный Erik Ekman и Bjorn Andersson, активно поддерживается с 2006 года. К 2026 — версия 0.8.0, последний release в 2023.

Архитектура. Клиент устанавливает виртуальный TUN-интерфейс (глоссарий TUN/TAP), все IP-пакеты с него инкапсулируются в DNS-запросы вида:

<encoded-payload>.<unique-id>.tunnel.example.com

Где <encoded-payload> — base32 от куска IP-payload’а, <unique-id> — счётчик пакета. DNS-сервер (iodined), который stоит на tunnel.example.com, декодирует, восстанавливает IP-пакет и форвардит. Ответы возвращаются в TXT-records.

Почему это работает. DNS — base protocol интернета. Любой captive portal, любой restricted Wi-Fi пропускает DNS, иначе сеть не работает совсем. Если оператор фильтрует UDP/TCP — DNS остаётся. ТСПУ не блокирует DNS вообще (это сломало бы интернет в стране), хотя цензурирует ответы для blacklist-доменов через DNS-poisoning.

Где iodine работает в РФ 2026.

Хорошо работает:

  • Публичные Wi-Fi с captive portal, где открыт только DNS до аутентификации
  • Корпоративные сети с разрешённым только DNS-резолвом
  • Гостиничные сети с pay-per-use

Плохо работает:

  • На домашнем интернете (ТСПУ применяет DPI к DNS-трафику и видит unusual entropy в QNAME — base32-кодированные пакеты не похожи на легитимные DNS-запросы)
  • На мобильных операторах (МТС, МегаФон ещё в 2022 включили QNAME-entropy filtering)

DPI-устойчивость. Iodine не маскируется — его легко детектировать по статистике QNAME. Реальные DNS-запросы имеют QNAME средней длины 15-25 символов и со словарным распределением символов. Iodine — длина 60+ символов и uniform-distribution байтов. ML-классификатор первого приближения ловит это с 95% точностью.

dnscat2 — DNS-туннель для C2

dnscat2 от Ron Bowes — DNS-туннель, ориентированный на penetration testing и command-and-control (C2) для red-team. Активно поддерживается с 2014 года.

Отличия от iodine.

  • Не требует root (работает в user-space, без TUN)
  • Не передаёт IP-traffic, а строит свой transport-protocol поверх DNS (можно гонять reverse-shell, файловый transfer)
  • Поддерживает encryption (chacha20-poly1305 в новых версиях)
  • Лучше работает через cascading DNS-резолверы (transparent NAT, корпоративные DNS-серверы)

Применимость для VPN. Из коробки — нет, dnscat2 не туннелирует IP. Но есть форки и обёртки (например, dnscat2-powershell плюс OpenVPN-poverх его tunnel-mode), которые позволяют гонять полноценный VPN. Throughput всё равно низкий — 10-30 KB/s, плюс высокая latency (200-500 мс на round-trip из-за множественных DNS-резолверов).

Когда применять. Сценарий — corporate red-teaming, когда нужно exfiltrate данные из закрытого периметра. Для обычного VPN-юзера это overkill.

icmptunnel и ptunnel — ICMP-туннели

icmptunnel от James Barlow и ptunnel — два главных open-source ICMP-туннеля. Принцип одинаковый: payload IP-пакета упаковывается в ICMP Echo Request, отправляется на удалённый сервер, который выступает «ping-receiver», декодирует, форвардит. Ответ возвращается в ICMP Echo Reply.

Поля для payload’а. В стандартном ICMP-echo-пакете доступны:

  • 16-bit identifier — обычно используется как session-id
  • 16-bit sequence number — счётчик пакетов
  • Data field — переменной длины (до 1472 байт без фрагментации)

То есть в каждый ping можно вложить до 1472 байт payload’а — это в три раза больше, чем DNS-туннель.

Throughput. Реалистично 50-200 KB/s на хорошем соединении. Это в 10 раз быстрее DNS-туннеля, но всё равно мало для серьёзного использования.

Где работает в РФ 2026.

Хорошо работает:

  • Внутри корпоративных сетей, где ICMP не фильтруется
  • На некоторых публичных Wi-Fi (часть провайдеров не блокирует ICMP, считая его «just ping»)

Плохо работает:

  • На любом современном файерволе (corporate firewalls типа Palo Alto, Fortinet режут «icmp-echo с unusual payload size»)
  • У большинства мобильных операторов в РФ — МТС, МегаФон, Tele2 фильтруют ICMP с payload size >64 байта на абонентских концентраторах
  • При попытке выйти на сервер, который не отвечает на ICMP (большинство VPS-провайдеров отключают response by default)

DPI-устойчивость. Никакой. ICMP с payload >32 байт уже сам по себе аномалия — реальные ping’и шлют либо 56 байт (Linux default), либо 32 (Windows default), либо 64-128 (network monitoring tools). 1472 байта payload — это явный сигнал.

Hans — IP-over-ICMP с обфускацией

Hans — менее известный, но более продвинутый ICMP-туннель. Главное отличие — поддержка обфускации payload’а через XOR-stream или встроенный TLS-wrapping. Это помогает обойти простой DPI на «unusual payload entropy in ICMP», но не помогает против sigmatch на packet size.

В РФ 2026 Hans иногда работает на МТС в отдельных регионах и у Tele2 — там менее агрессивный ICMP-фильтр. Но это в принципе lottery: одна обновка прошивки ТСПУ — и Hans перестанет работать.

Когда применять туннели — три реальных сценария

Сценарий 1: captive portal на отеле / аэропорту. Заходите в WiFi, не аутентифицировались, но DNS уже резолвится (потому что captive portal делает HTTP-redirect через DNS-hijack). Запускаете iodine — получаете 5-10 KB/s туннель до своего VPS, через который проходит чат-трафик (Telegram, мессенджеры) и текстовый веб. Это спасает в ситуациях, когда вам нужно отправить сообщение, а платить за wi-fi не хочется.

Сценарий 2: corporate egress filtering. Вы на работе, корпоративный файервол блокирует UDP, TCP/443 идёт через прокси с DPI, который ловит VPN-трафик. Но DNS-резолв через корпоративный DNS-сервер работает. Запускаете dnscat2 — получаете медленный, но рабочий канал.

Сценарий 3: РФ-провайдер с UDP-фильтрацией. Редкий, но встречается у мелких региональных операторов: фильтруется весь UDP-трафик кроме DNS и NTP. WireGuard, Hysteria, любой UDP-VPN не работает. Iodine иногда выживает как fallback — пока ТСПУ не научится DNS-entropy classification у этого вендора.

Когда НЕ применять — пять стоп-сигналов

  • Нужен стриминг видео или video-call — забудьте, throughput не позволяет
  • Нужна стабильная latency — DNS-резолв через cascading резолверы добавляет 100-500 мс
  • Оператор — МТС или МегаФон на мобильной сети — там DNS-entropy фильтр работает с 2024
  • Нужно надолго (часы и больше) — современные ТСПУ детектируют long-running DNS-туннели по volume metrics
  • Есть рабочий VLESS Reality или AmneziaWG — они в 100 раз быстрее и не вызывают подозрений

Альтернативы — что использовать вместо

В большинстве сценариев есть лучшие альтернативы:

  • Captive portal обход — попробуйте сначала ShadowTLS или Reality, многие captive portals пропускают TLS/443 после первого «captive page»
  • Corporate firewall обходnaive proxy часто проходит, потому что выглядит как HTTP/2
  • РФ-блокировки — основной арсенал см. в пилларе про VPN-протоколы 2026

Латентность и congestion: почему туннели «лагают»

Помимо low throughput, у covert-channel туннелей есть второй большой недостаток — высокая и непредсказуемая латентность. Понимать механику этого важно, чтобы не строить unrealistic expectations.

В случае iodine round-trip пакета выглядит так:

  1. Клиент создаёт IP-пакет, упаковывает в DNS-query.
  2. Query отправляется на operator’s DNS resolver — это ~5-20 мс на любой стандартной сети.
  3. Operator’s resolver делает recursive resolution: ищет authoritative server для домена tunnel.example.com. Это может быть один hop (если у resolver’а есть cache) или несколько hops (если cache miss и нужно идти через root → TLD → authoritative).
  4. Recursive query достигает iodine-сервера (вашего VPS), который декодирует payload, форвардит IP-пакет.
  5. Ответ возвращается тем же путём в reverse.

Total RTT — реалистично 100-500 мс на любой запрос. Это в 10-50 раз больше, чем direct TCP/UDP. Для interactive сценариев (SSH, чаты) это терпимо. Для real-time (звонки, гейминг) — невозможно.

Хуже того, RTT непостоянен. Recursive DNS-resolution может ходить разными путями в зависимости от cache state у resolver’а. Это означает jitter в десятки и сотни миллисекунд между запросами. ML-классификаторы на стороне ТСПУ как раз ловят этот jitter и используют как feature — высокий variance RTT в trafике коррелирует с tunneling.

В случае ICMP-туннелей latency меньше (один hop без recursive resolution), но всё равно ~50-100 мс на RTT. Плюс ICMP — low-priority на большинстве маршрутизаторов, его легко drop’ают при congestion.

История covert channels — академический контекст

Чтобы было понятно, насколько эти техники старые: первая академическая работа про DNS-туннелирование — Lampson, 1973, «A note on the confinement problem». Идея «hide channel within harmless protocol» появилась в литературе 50+ лет назад.

Iodine — самый известный практический tool — был разработан в 2006 году в Швеции командой Erik Ekman и Bjorn Andersson как proof-of-concept для академического курса. ICMP-туннели появились ещё раньше — первый широко известный — Loki от Phrack magazine, 1996 год (Phrack issue 51).

Эти tools никогда не были предназначены для масс-аудитории. Их главное применение — демонстрация уязвимости network filtering: если на firewall разрешён DNS — через него можно прокинуть что угодно. Это аргумент в архитектурных дискуссиях про защиту корпоративных периметров, а не реальный VPN.

В РФ-2026 их экзотический статус сохраняется. Iodine используется маленькой нишей: pen-testers, IT-инженеры для bypass corporate-filters, security-researchers. Massовая аудитория VPN-юзеров о них не слышит и не должна — современные anti-DPI протоколы вроде VLESS Reality на порядки эффективнее.

Технические детали — RFC и спецификации

Если хотите углубиться в работу covert channels:

  • RFC 4732 (Internet Denial-of-Service Considerations) обсуждает covert channels как security risk
  • RFC 5944 упоминает ICMP-туннели в контексте mobility
  • Академическая работа «Detecting DNS Tunneling» от Plonka & Barford (USENIX 2011) — методология detection
  • Работа «Defeating DNS-based Censorship» от Aceto et al. (2019) — обзор современных техник
  • IETF draft draft-ietf-dprive-rfc7626bis — privacy considerations в DNS
  • GitHub: iodine issues — для актуального состояния технологии

Перспективы 2027+

ICMP- и DNS-туннели — медленно умирающая технология. С каждым годом DPI-движки лучше ловят их по entropy-features, и операторы добавляют фильтрацию unusual ICMP/DNS-payload на абонентском уровне. К 2028 году ожидается, что классические covert channels через ICMP перестанут работать у всех федеральных российских операторов.

Что остаётся — это обфусцированные DNS-туннели поверх DoH (DNS over HTTPS). Технически DoH передаёт DNS-запросы через TLS-туннель к DoH-серверу (например, Cloudflare 1.1.1.1 или Quad9). Если на DoH-сервере стоит iodine-резолвер, теоретически можно прокинуть туннель через DoH без видимых аномалий — для оператора это просто TLS/443 к Cloudflare. Но это уже не классический DNS-туннель, а другая категория техник, и она ближе к domain fronting, чем к iodine.

Связанные материалы

читать дальше

Похожие статьи