Прозрачный обход блокировок для локальной сети.
Мне это решение особенно нравится тем, что оно корректно отрабатывает любой трафик. В том числе и HTTPS. При этом никаких настроек на клиентах делать не надо.
Система отлично работает с роутерами на базе OPNsense (на роутерах на базе pfSense не проверял, но также должно работать без проблем). Возможно, также будет работать с другими роутерами, т.к. используются только базовые возможности файрвола.
NB. Для настройки системы понадобится доступ к командной строке через консоль или SSH. Все команды надо исполнять от имени root, т.к. иначе часть не сработает!
-
Обратите внимание! Для работы этого метода необходимо иметь сервер WireGuard на хостинге за пределами СНГ.
Настройка сервера не входит в эту инструкцию. Вы можете арендовать уже готовый сервер или настроить свой, найдя соответствующие инструкции в сети самостоятельно.
-
Установите и настройте клиент WireGuard.
Для OPNsense ...
сначала установите плагинos-wireguard
через вкладку System > Firmware > Plugins. После настройте клиент, как в официальной инструкции (шаги с 1 по 6 включительно).Для других систем ...
к сожалению, точно описать настройку не могу. Но нужно сделать всё по-аналогии. -
Установите этот плагин.
Самое простое, зайдя в консоль (обязательно как root!) исполнить команды
cd ~ git clone https://github.com/Limych/antizapret.git cd antizapret
-
Настройте правила файрвола.
Для OPNsense ...
сначала в настройках файрвола на вкладке Firewall > Aliases создайте алиас для удобства использования списка.
Name = AntiZapret_IPs
Type = External (advanced)\Дальше на вкладке Firewall > Rules > LAN создаём новое правило:
Destination = AntiZapret_IPs
Description = LAN: AntiZapret to VPN
Gateway = ... (имя gateway, что вы дали на шаге 6 официальной инструкции)Для других систем ...
к сожалению, точно описать настройку не могу. Но нужно сделать всё по-аналогии. -
Настройте регулярное обновление списков блокировки.
Для OPNsense ...
просто запустите скриптsh opnsense/install.sh
После этого в настройках cron (System > Settings > Cron) добавить новую задачу на ежесуточное обновление списка:
Command = Renew AntiZapret IP-list.Для других систем ...
необходимо в cron добавить что-то типа0 0 * * * /root/antizapret/antizapret.pl | tee /usr/local/www/ipfw_antizapret.dat | xargs pfctl -t AntiZapret_IPs -T add
после, чтобы не ждать сутки первого обновления списка, в консоле исполняем команду
/root/antizapret/antizapret.pl | tee /usr/local/www/ipfw_antizapret.dat | xargs pfctl -t AntiZapret_IPs -T add
-
Всё. :)
Через некоторое время система сама подгрузит список и файрвол начнёт прозрачно перенаправлять любые обращения к заблокированным сайтам на Tor. В то же время весь прочий трафик будет идти напрямую, как обычно.
При необходимости вы всегда можете получать список заблокированных адресов со своего файрволла по адресу https://<firewall_ip>/ipfw_antizapret.dat
Если при создании алиаса вы получили сообщение Invalid argument
, загляните на вкладку Firewall> Settings> Advanced, найдите там поле Firewall Maximum Table Entries и измените его значение.
Известно, что на версии OPNsense v21.1 был явный баг: при значении по-умолчанию мы имели почему-то лимит в 32 768 адресов (хотя в справке написано, что по-умолчанию он 200 000 записей). Если явно указать там лимит в 200 000 записей, по факту он был 131 072 записи...