Skip to content

akaitux/transparent-vpn

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

56 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

VPN

Предназначен прежде всего для настройки 'прозрачного' VPN на роутере.

Схема аналогична работе https://bitbucket.org/anticensority/antizapret-vpn-container/src/master/

Различия:

  1. Используется Wireguard вместо Openvpn. Второй нужно имплементировать в общий образ (возможно будет сделано, возможно нет).
  2. В связи с этим используется общая подсеть 10.224.0.0 вместо двух (клиентской и для запросов обхода), для этого был модифицирован python скрипт, который теперь выдает адреса для обхода начиная с 10.224.0.100 (10.224.0.2-10.224.0.99 - клиенты).
  3. Используется docker вместо lxc

VPS

Для установки на VPS - docker-compose up -d (требуются дополнительные тесты на разных ОС, проверялось на ubuntu 20.04, за основу было взято решение Wireguard от linuxserver.io, но вместо сборки WG из исходников устанавливается пакет)

Keenetic

На keenetic используется dnsmasq и dnscrypt-proxy2. Первый нужен для блокировки рекламы и для более плавной работы в случаях обрыва соединения с ВПН, второй нужен для шифрования DNS запросов при выключенном ВПН.

В dnsmasq включен последовательный резолв ВПН, dnscrypt и серверов провайдера по цепочке. Если недоступен первый сервер, используется следующий. Скрипты, которые следят за интерфейсом ВПН, через некоторое время после отключения убирают его из конфигов dnsmasq.

Установка

  1. opkg install dnscrypt-proxy2 dnsmasq iptables ca-certificates cron

Если нет ndm - то установить его

  1. Скопировать файлы из keenetic/opt/* из репозитория в аналогичные директории opkg раздела. Они позволят перенаправлять DNS запросы к внутреннему резолверу при включении интерфейса и убирать перенаправление при его выключении, файл из netfilter предотвращает очистку перенаправления при срабатывании хуков ndm. Интерфейс выбирается исходя из подсети автоматически (должна быть 10.224.0.0/15).

/opt/etc/init.d/S56dnsmasq restart
/opt/etc/init.d/S09dnscrypt-proxy2 restart
  1. Сконфигурировать wireguard клиент в web интерфейсе роутера, где приватный ключ (для peer1) - /opt/wireguard/config/peer1/privatekey-peer1, публичный ключ сервера - /opt/wireguard/config/server/publickey-server. Адрес - 10.224.0.2/15.

По-умолчанию запросы на не заблокированные сайты перенаправляются через DoT на сторонние резолверы, т.к. некоторые NS в РФ тормозят при запросе через резолв с самой VPS, пока конфигурацию можно менять через конфиг knot-resolver. На заблокированные идут без шифрования на 1.1.1.1, поведение меняется переменной (есть в docker-compose)

WG_INTERNAL_SUBNET:-10.224.0.0/15

Shadowsocks

На роутере:

opkg install shadowsocks-libev-ss-tunnel shadowsocks-libev-config
vi /opt/etc/shadowsocks.json
{
"server": "{server-ip}",
"mode":"tcp_and_udp",
"server_port": "{server-port:-51830}",
"local_address": "127.0.0.1",
"local_port": "{local-port:-51830}",
"password": "{password}",
"timeout":300,
"method":"chacha20-ietf-poly1305",
"tunnel_address": "127.0.0.1:{wireguard-port:-51820}"
}

{password} - генерируется при первом старте контейнера, можно взять в volumes/shadowsocks/p

{server-ip} - ip адрес сервера на котором крутится wireguard и ss

{local-port} - любой свободный порт на роутере, который мы будем указывать в настройках wg соединения, например 51822

{wireguard-port} - это порт на котором на сервере крутится wg соединение, например 51820

vi /opt/etc/init.d/S22shadowsocks

меняем на строку

PROCS=ss-*

на

PROCS=ss-tunnel

перезапускаем ss на роутере и проверяем, что работает

/opt/etc/init.d/S22shadowsocks restart
/opt/etc/init.d/S22shadowsocks check

Идем в веб морду роутера, в настройки нужного wg соединения и в пире вместо {server-ip}:{wireguard-port} вставляем 127.0.0.1:{local-port}

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published