Я ненавижу рекламу, но постоянно на нее покупаюсь. Увидел в подъезде объявление МГТС - 500 мегабит за 500 рублей в месяц, настоящий IP, IPv6. Из минусов - всего лишь необходимость сверлить стену и вешать в квартире чужой роутер. Думаю надо брать - разберемся как-нибудь. (На самом деле нет, но об этом позже). Гигабитный роутер с WiFi 5G, без возможности модификации прошивки и установки софта (с вероятностью, но об этом еще позже). Задача - настроить VPN с другой сетью и прозрачное для клиентов использование ресурсов из луковой сети (The Onion Router aka TOR) с использованием своего сервера в локальной сети.
Думаю данная статья не потянет на полноценное руководство. Слишком разные возможности и потребности у людей - разное железо. Скорее некоторый указатель пути по которому можно пойти. Например для сервера можно использовать малину. Возможно даже с pi-hole. Я, например, поставил недорогой x86 сервер с распаянным на материнской плате процессором, поставил ubuntu и использую его в том числе как файловый, home assistant, веб и сервер приложений.
В общем я хотел, чтобы была возможность использовать WiFi интерфейс роутера, а также, чтобы клиенты локальной сети получили прозрачный доступ к некоторым внешним ресурсам без дополнительной настройки на стороне клиента. И не хотелось понапрасну пропускать весь трафик через сторонний сервер - хотелось, чтобы обычный интернет трафик шел напрямую на роутер, а специальный обрабатывался сервером. Решил, что отключу на маршрутизаторе DHCP и DNS server, поставлю DHCP на свой сервер, который будет анонсировать правильные маршруты по DHCP и на котором будет крутиться dns, vpn и tor daemon. С vpn все понятно - если другая локальная сеть имеет другие адреса, то достаточно просто настроить маршрутизацию. Для прозрачного доступа к ресурсам через луковый маршрутизатор решил использовать связку dnsmasq + tor.VirtualAddrNetwork + tor.DNS. Настраиваем dnsmasq для предопределенных доменов из списка, чтобы для их разрешения он использовал tor. После этого домены из луковой сети будут иметь специфичные адреса из специального выделенного диапазона частных адресов и можно использовать обычные правила маршрутизации для перенаправления этого трафика в tor.TransPort с использованием правил iptables. Для соединения локальных сетей по vpn использовал wireguard. В другой локалке стоит обычный роутер пока с прошивкой padavan + entware.
Итак ключевые параметры:
- Локальная сеть - 192.168.2.0/24. У роутера локальной сети статический белый IP
- Другая локальная сеть (доступ к которой получаем через vpn) - 192.168.3.0/24
- Роутер - 192.168.2.1
- Сервер - 192.168.2.4, имя ethernet интерфейс - enp1s0
- tor
- private network (VirtualAddrNetwork) - 10.254.0.0/16
- dns server (DNSPort) - 127.0.0.1:9053
- transparent proxy address (TransPort) - 0.0.0.0:9040
- dnscrypt-proxy (DoH) address - 127.0.0.1:9153
- wireguard device network (частный диапазон IP адресов из которого назначаются адреса wireguard интерфейсам) - 10.253.1.0/24
- сервер wireguard address - 10.253.1.2
- android клиент - 10.253.1.10
- vpn сервер другой локалки - 10.253.1.3
Сервер
Как я уже говорил у меня сервер - обычный x86 с Ubuntu 20.04 LTS.
Установливаем пакеты (`apt install <packet>`):
- iptables-persistent - сохранение и восстановление правил iptables
- tor
- dnsmasq - DNS + DHCP сервер
- dnscrypt-proxy - DoH DNS клиент
- systemd + netplan.io - были установлены по умолчанию и используются для настройки сети
- wireguard - vpn

