Безопасность
ICMP-туннели и DNS-туннели 2026: можно ли спрятать VPN внутри пинга
§ в этой статье — 13 разделов
- Базовый принцип: covert channels
- Iodine — DNS-туннель de facto standard
- dnscat2 — DNS-туннель для C2
- icmptunnel и ptunnel — ICMP-туннели
- Hans — IP-over-ICMP с обфускацией
- Когда применять туннели — три реальных сценария
- Когда НЕ применять — пять стоп-сигналов
- Альтернативы — что использовать вместо
- Латентность и congestion: почему туннели «лагают»
- История covert channels — академический контекст
- Технические детали — RFC и спецификации
- Перспективы 2027+
- Связанные материалы
К маю 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 пакета выглядит так:
- Клиент создаёт IP-пакет, упаковывает в DNS-query.
- Query отправляется на operator’s DNS resolver — это ~5-20 мс на любой стандартной сети.
- Operator’s resolver делает recursive resolution: ищет authoritative server для домена
tunnel.example.com. Это может быть один hop (если у resolver’а есть cache) или несколько hops (если cache miss и нужно идти через root → TLD → authoritative). - Recursive query достигает iodine-сервера (вашего VPS), который декодирует payload, форвардит IP-пакет.
- Ответ возвращается тем же путём в 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.
Связанные материалы
читать дальше
Похожие статьи
-
Безопасность
ML-классификаторы против VPN 2026: как нейросети ловят трафик
ТСПУ применяет XGBoost и random forest на packet timings для классификации зашифрованного трафика. Что обходит ML: DAITA, padding, traffic shaping. Технический разбор.
-
Безопасность
Как платить за VPN анонимно в 2026: Monero, Lightning, vouchers
Способы оплатить VPN без раскрытия личности: Monero, Bitcoin Lightning, наличные по почте, ваучеры, prepaid-карты. Mullvad, AzireVPN, IVPN — кто принимает что.
-
Безопасность
Анонимность в интернете 2026: реалистичный гид
Что реально достижимо в плане анонимности в 2026 году: threat models, OPSEC, инструменты. Без алармизма, но и без иллюзий.