Как стать автором
Обновить

Об особенностях использования VPN Zaborona на роутерах для обхода блокировок на Украине

Время на прочтение3 мин
Количество просмотров17K
Всем привет.

Ранее уже писалось и о блокировках сайтов на Украине, и о способах обхода, и собственно о прекрасном ресурсе Zaborona.Help для решения этой проблемы ( zhovner большущий респект и спасибо!)

Описанное ниже — личный практический опыт, который возможно будет полезен другим пользователям, работающим на Украине. Всех остальных может заинтересовать только теоретический аспект.

Итак, имеется небольшая сеть, работающая через роутер. В моём конкретном примере роутер Asus, бегабщий под кастомной прошивкой Merlin последней версии. Описание настроек этого роутера указано здесь — и это прекрасно работало до наступления 2018 года :)

Дело в том, что ряд провайдеров организовали новый тип блокировки — теперь на уровне DNS организовывается фейковый рессолв на внутренний ресурс — в итого пинги проходят, а ресурс не открывается. Наиболее продвинутые настроили DNS так, что фейковый рессолв происходит только для внутренней сети, например:

Для внешних запросов:
$ nslookup www.yandex.ru 194.50.85.5
DNS: dns-5.la.net.ua
Address: 194.50.85.5

www.YANDEX.ru
Addresses: 2a02:6b8:a::a
77.88.55.50
5.255.255.77
77.88.55.60
5.255.255.50
Для запросов внутри сети:
$ nslookup www.yandex.ru 194.50.85.5
DNS: dns-5.la.net.ua
Address: 194.50.85.5

www.yandex.ru
Address: 194.50.85.44
В исходной инструкции на Zaborona.Help для роутеров Asus нет никаких указаний про дополнительные настройки DNS (ни для Merlin, ни для оригинальной прошивки), хотя для тех же DD WRT такое есть. При этом, опция block-outside-dns настроек, которая решает проблему при запуске на Windows-клиенте, очевидно, не работает на *nix и прошивках роутеров.

Очевидным решением является простая замена провайдерского DNS на гугловские (8.8.8.8, 8.8.4.4) или даже предлагаемые самим Zaborona.Help (74.82.42.42, 77.88.8.8), однако в этом случае некоторые внутресетевые ресурсы (IPTV, например) станут работать с проблемами, а то и вовсе перестанут работать.

В прошивке Merlin для Asus (а возможно — и в других, не проверял) есть опция настройки VPN-клиента, называемая «Accept DNS Configuration». Согласно задумке авторов,
Disabled = DNS servers sent by VPN-provided DNS server are ignored
Relaxed = DNS servers sent by VPN-provided DNS server are prepended to the current list of DNS servers, of which any can be used
Strict = DNS servers sent by the VPN-provided DNS server are prepended to the current list of DNS servers, which are used in order (existing DNS servers are only used if VPN-provided ones don't respond)
Exclusive = only the VPN-provided DNS servers are used
— выглядит так, что всё наше решение проблемы заключается в переключении настройки на значение «Strict», а в таком случае DNS из VPN будет имет первостепенный приоритет, а провайдерский DNS — задействоваться только в случае отсутствия ответа от VPN, что по идее решит вопрос с внутрисетевыми ресурсами. Возможно, так работает в Tomato, но в настоящий момент у Merlin эта опция реально работает только назначения политики редиректа трафика (Redirect Internet traffic — Policy Rules).

ОК, я попробовал сделать двойную работу (сейчас маршрутизация автоматически настраивается сервером Zaborona.Help, но ок — пропишем и на роутере тоже) и использовал простой скрипт:

#!/bin/sh

#      $1 is the VPN Client instance  # Required
#      $2 is the LAN source/subnet    # Optional - default is 'all'

if [ -z "$1" ];then
   logger -st "($(basename $0))" $$ "Missing VPN Client arg1"
   exit 999
fi

SRC='all'
if [ ! -z "$2" ];then
   SRC=$2
fi

for IP in $(curl https://zaborona.help/ips.txt -s | grep -v ":" | grep -v "^#" | grep .)
 do
  ip rule del from $SRC to $IP table ovpnc$1 prio 8000 2> /dev/null > /dev/null
  ip rule add from $SRC to $IP table ovpnc$1 prio 8000
 done

Код автоматически запускался на роутере по событию подключения клиента OpenVPN, при этом Accept DNS Configuration = Strict. В этом случае всё работает.

Осталось двойственное чувство — проблема решена, но через костыли:

  1. Почему-то опция Accept DNS Configuration на прошивке Merlin работает непонятным образом: без настройки редиректа она бесполезна.
  2. Очень хочется верить, что zaborona.help/ips.txt всегда актуален.

P.S. О проблемах с настройками администрация Zaborona.Help уведомлена вчера, пока ответа не поступило, ничего не изменилось. О проблеме с Accept DNS Configuration авторы прошивки Merlin также уведомлены, реакции не последовало.
P.P.S. Большая просьба политизированным читателям прекратить писать мне чушь в личку, угрожать минусами в карме и т.д. Для вас существуют отдельные ресурсы, не имеющие отношения к ИТ. Спасибо.
Теги:
Хабы:
Если эта публикация вас вдохновила и вы хотите поддержать автора — не стесняйтесь нажать на кнопку
Всего голосов 38: ↑14 и ↓24-10
Комментарии3

Публикации

Истории

Работа

Ближайшие события

15 – 16 ноября
IT-конференция Merge Skolkovo
Москва
22 – 24 ноября
Хакатон «AgroCode Hack Genetics'24»
Онлайн
28 ноября
Конференция «TechRec: ITHR CAMPUS»
МоскваОнлайн
25 – 26 апреля
IT-конференция Merge Tatarstan 2025
Казань