Kill switch для VPN: блокируем утечку IP при обрыве
Обрыв VPN на долю секунды — и трафик уходит в открытую сеть с реальным IP. Kill switch закрывает эту дыру: если туннель падает, весь трафик режется на уровне фаервола. Разберём три рабочих способа — для WireGuard, OpenVPN и универсальный на nftables.
Содержание
Зачем нужен kill switch
['VPN-клиент — это обычный процесс. Он может упасть, потерять соединение, переподключаться. В эти секунды маршрут по умолчанию возвращается на реальный интерфейс, и всё, что летит в сеть (браузер, torrent, cron-задачи), уходит с настоящим IP провайдера.', 'Kill switch — не функция VPN, а правило фаервола: «разрешён исходящий трафик только через туннель или только к серверу VPN, всё остальное — DROP». Даже если VPN-процесс мёртв, ядро само не пустит пакеты мимо.', '- DNS-утечки — отдельная беда: запросы могут идти в обход туннеля
- IPv6-утечки — многие забывают, что VPN гонит только IPv4
- Переподключение — самый частый момент утечки
Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK и США. Оплата картой РФ и по СБП.
Арендовать VPS для своего VPNKill switch для WireGuard одной строкой
['У WireGuard есть встроенный механизм через PostUp/PostDown и таблицы маршрутизации. Но самый надёжный вариант — жёсткие правила в конфиге. Добавляем в секцию [Interface]:', '[Interface]\nPrivateKey = <ваш_ключ>\nAddress = 10.8.0.2/32\nDNS = 10.8.0.1\nPostUp = iptables -I OUTPUT ! -o %i -m mark ! --mark $(wg show %i fwmark) -m addrtype ! --dst-type LOCAL -j REJECT\nPostDown = iptables -D OUTPUT ! -o %i -m mark ! --mark $(wg show %i fwmark) -m addrtype ! --dst-type LOCAL -j REJECT', 'Эти правила разрешают исходящий трафик только через интерфейс WireGuard (%i) и к локальным адресам. Как только туннель упадёт и правило снимется PostDown — но если процесс убит некорректно, правило останется висеть и продолжит блокировать. Это и есть безопасное поведение.', 'Поднимаем и проверяем:', 'wg-quick up wg0\ncurl -s https://ifconfig.co # должен показать IP сервера VPN\nwg-quick down wg0\ncurl -s --max-time 5 https://ifconfig.co # должен зависнуть/упасть, а не показать реальный IP']
Универсальный kill switch на nftables
['Если хочется независимости от VPN-клиента, задаём политику фаервола отдельно. Разрешаем только: loopback, локальную сеть, эндпоинт VPN-сервера и трафик через tun/wg-интерфейс. Пример для сервера VPN 203.0.113.10:51820:', '#!/usr/sbin/nft -f\nflush ruleset\ntable inet killswitch {\n chain output {\n type filter hook output priority 0; policy drop;\n oifname "lo" accept\n ip daddr 192.168.0.0/16 accept\n ip daddr 203.0.113.10 udp dport 51820 accept\n oifname { "wg0", "tun0" } accept\n ct state established,related accept\n }\n}', 'Сохраняем в /etc/nftables-killswitch.conf и применяем через nft -f. Пока файл активен, ни один пакет не уйдёт мимо туннеля, кроме handshake с самим VPN-сервером.']
Закрываем IPv6 и DNS
['Даже с рабочим kill switch IPv6 способен всё испортить. Если VPN не тоннелирует IPv6 — полностью его блокируем:', 'ip6tables -P OUTPUT DROP\nip6tables -A OUTPUT -o lo -j ACCEPT\nip6tables -A OUTPUT -o wg0 -j ACCEPT', 'DNS фиксируем на адрес внутри туннеля (в примере выше DNS = 10.8.0.1). Проверить отсутствие утечек удобно на dnsleaktest.com — должны светиться только резолверы VPN-провайдера.']
Свой VPN — свой контроль
['Публичные VPN-сервисы делят один IP на сотни клиентов, логируют и попадают под блокировки. Разворачивая WireGuard на собственном VPS, вы получаете выделенный IP и полный контроль над kill switch и правилами.', 'MAATRIX даёт зарубежный VPS (локации UK и США) с root-доступом на AMD EPYC + NVMe от $8/мес, с оплатой картой РФ, СБП, криптой или токеном MAAT — то, чего не сделать у иностранных провайдеров, не принимающих карты РФ. Ставите WireGuard за 10 минут, включаете kill switch по инструкции выше и получаете туннель, который никому не отдаёт.', 'apt update && apt install -y wireguard\n# генерация ключей и конфига — 5 минут']
Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK и США. Оплата картой РФ и по СБП.
Арендовать VPS для своего VPNЧастые вопросы
Kill switch замедляет соединение?
Нет. Это правила фаервола, они почти не нагружают ядро. Скорость определяется самим туннелем, а не блокировкой.
Что если VPN-процесс упал, а правило PostDown не сработало?
Это ожидаемое безопасное поведение: правило остаётся, трафик блокируется. Снять его можно вручную через iptables -D или перезагрузкой.
Нужен ли отдельный VPS под VPN?
Да, если важен выделенный IP, отсутствие логов и контроль. На общих сервисах вы делите IP и доверяете чужой инфраструктуре.