Обходим блокировку VPN

от автора

Мой провайдер помимо замедления (читай полная блокировка) YouTube так-же стал блокировать соединения с моими рабочими VPN. Работодатель не очень любит, когда на встречах на вопрос о прогрессе, я неделю отвечаю, что у меня не работает VPN! Своими действиями, мой провайдер сам меня подтолкнул к поиску обходных путей.

Сразу скажу, обходной путь придумал не сам, мне его подсказал автор проекта zapret, а точнее его комментарий, более того, я использую его проект, чтоб смотреть нормально YouTube. Спасибо огромное!

Добавлю, я использую nftables и nfqws, если этот вариант работает у меня — это не значит, что заработает и у вас! Возможно, вам придётся изменить некоторые параметры.

Первое, очень внимательно читаем комментарий по ссылке выше и штудируем, как портировать правила iptables в nftables.

$ iptables-translate -A OUTPUT -t mangle -o wlan0 -p udp --dport 443 -m mark ! --mark 0x40000000/0x40000000 -j NFQUEUE --queue-num 220 --queue-bypass

получилось:

$ nft 'add rule ip mangle OUTPUT oifname "wlan0" udp dport 443 mark and 0x40000000 != 0x40000000 counter queue num 220 bypass'
  • wlan0 — интерфейс, через который мы ходим в сеть

  • 443 — порт подключения к VPN сервису

  • меняем OUTPUT на output

итоговая строка получается:

$ nft 'add rule ip mangle output oifname "wlan0" udp dport { 443, 18189 } mark and 0x40000000 != 0x40000000 counter queue num 220 bypass'

у меня два VPN коннекта, отсюда и два порта!

Перед запуском, проверим, что у нас есть таблица ip mangle:

$ nft list tables

если нет, создаём её и цепочку output

$ nft add table ip mangle $ nft 'add chain ip mangle output { type filter hook output priority 0 ; }'

Смотрим, что всё создалось:

$ nft -a list table ip mangle

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

и последнее, запускаем демон, который маскирует пакеты отправленные на требуемые порты

$ /opt/zapret/nfq/nfqws --uid 2 --qnum=220 --dpi-desync=fake --dpi-desync-any-protocol --dpi-desync-cutoff=d2 --dpi-desync-repeats=10 --dpi-desync-ttl=5 --daemon

обратите внимание, значение ttl у вас может отличаться. Своё я подглядел через ps aux | grep nfqws, которое стоит в демоне от zapret.

Понятно, что всё можно автоматизировать и не запускать всё руками, но мне надо было срочно. Самое главное, работает!


ссылка на оригинал статьи https://habr.com/ru/articles/841460/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *