Nice country without Putin or Internet Censorship:
- Server (gentoo linux), has an external IP:
188.1.2.3
. It runs:squid
,polipo
,tor
,i2p
,openvpn
,strongswan
,bird
,dnsmasq
anddante
6to4
tunnel service from https://tunnelbroker.net
My home apartment:
- Hardware router mikrotik hAP, its external IP
41.4.5.6
- Home PC (Windows) connected to the router via ethernet-cable
- Laptops, phones and other devices, connected to router via Wi-Fi with WPA2-PSK auth
- Guest laptops, phones connected via Wi-Fi without auth (free Wi-Fi)
Another apartment (without mikrotik router):
- Home PC (Windows) connected to the Internet via any ordinary means. It has OpenVPN client, that while being a bit slow, will prevent censorship just as good.
Other:
- Android phone, with StrongSwan VPN
- Android phone(s) with Telegram
Physical IPv4:
- My internal home network (which is served by that mikrotik i mentioned earlier), wi-fi and ethernet interfaces are bridged. IP Address:
192.168.123.1
, subnet192.168.123.0/24
- Free Wi-Fi for guests
10.123.123.1
, isolated subnet10.123.123.0/24
- External IPv4-address, that is given to mikrotik by my ISP
41.4.5.6
- External IPv4-address of the VPS/Server in a country without censorship:
188.1.2.3
, linux device name:eth0
IPv6:
- My internal home network - IP Address:
2001:470:abcd:2::1/64
, subnet2001:470:abcd:2::/64
- Free Wi-Fi for guests
2001:470:abcd:1::1/64
, isolated subnet2001:470:abcd:1::/64
6to4
tunnel from mikrotik, IPv6:2001:470:11:678::2/64
, IPv4:41.4.5.6
, tunnelbroker.net endpoint: IPv6:2001:470:11:678::1
, IPv4:216.66.80.90
, prefix:2001:470:abcd::/48
, prefix:2001:470:12:678::/64
6to4
tunnel on the VPS/Server in a country without censorship instead of native ipv6 (I don't like the way they write my name & surname into public whois database for native ipv6), linux device name:he-ipv6
, IPv6:2001:470:1001:123::2/64
, IPv4:188.1.2.3
, tunnelbroker.net endpoint IPv6:2001:470:1001:123::1/64
, IPv4:216.66.80.30
, prefix:2001:470:1002:123::/64
Virtual Networks & tunnels:
- Tunnel between mikrotik and VPS/Server in a country without censorship (linux device name:
tunipsec
), Tunnel technology: GRE over IPSsec (strongswan
), Serverside Address:192.168.222.1
, mikrotikside address:192.168.222.2
, subnet mask255.255.255.0
OpenVPN
network on that VPS/Server (server address:10.222.1.1
, linux device name:tunopenvpn
) client ip addresses pool: (10.222.1.10-254
), netmask10.222.1.0/24
- Tunnel between mobile strongswan vpn and that VPS/Server in a country without censorship (
10.0.1.0/24
)
Misc Addresses:
- Virtual IP for tor/i2p:
123.123.123.123
That's all you might need for reading the configs...
How does it work:
- Script
/usr/local/bin/bgp.sh
gets csv-table with censored IP-addresses puts them into kernel table #128, which is not used by the system when routing. - BGP Bird server monitors that table and sends them to Mikrotik (using local AS 65000 (Bird) and 64496 (Mikrotik))
- Mikrotik has static routes to 8.8.8.8 и 8.8.4.4, via VPS/Server, which in turn intercepts DNS-queries and modifies them.
dnsmasq
answers123.123.123.123
for everything in.onioin
and.i2p
zone. Traffic to123.123.123
is then intercepted viasquid
, which sends it toPolipo
->Tor Socks5 Proxy
or directly toi2p https proxy
as needed
TODO: Add DN42
Приличная страна без путина и роскомнадзора:
- Сервер (gentoo), внешний IP этого сервера:
188.1.2.3
. На нём запущены:squid
,polipo
,tor
,i2p
,openvpn
,strongswan
,bird
,dnsmasq
иdante
- Сервер от https://tunnelbroker.net который предоставляет
6to4
туннели
Моя квартира:
- Роутер mikrotik hAP, внешний IP, предоставленный российским провайдером:
41.4.5.6
- Комп стационарный (Windows) подключенный к роутеру через ethernet-кабель
- Мои ноутбуки, телефоны и прочее вайфае-говно, подключенное по воздуху с WPA2-PSK авторизацией
- Устройства гостей соседей и прочих майоров, подключенные по бесплатному wi-fi без авторизации
Квартира друга:
- Комп (windows) подключенный к обычному интеренету через обычный роутер. На комп установлен OpenVPN с прилагаемым конфигом, внешний IP не нужен, никаких требований особых нет.
Прочее:
- Телефон на Android, с установленным StrongSwan VPN
- Телефон с установленным Telegram
Физические IPv4:
- Внутреняя сеть устройств моей квартиры (роутером которой выступает тот самый mikrotik), wi-fi и ethernet объединены в мост, адрес интерфейса на роутере:
192.168.123.1
, подсеть192.168.123.0/24
- Бесплатный вайфай для людей, адрес интерфейса
10.123.123.1
, изолированная подсеть10.123.123.0/24
- Внешний белый статический IPv4-адрес, выданный роутеру mikrotik провайдером:
41.4.5.6
- Внешний белый статический IPv4-адрес сервера в приличной стране:
188.1.2.3
, linux device name:eth0
IPv6:
- Внутреняя сеть устройств моей квартиры - адрес интерфейса на роутере:
2001:470:abcd:2::1/64
, подсеть2001:470:abcd:2::/64
- Бесплатный вайфай для людей, адрес интерфейса
2001:470:abcd:1::1/64
, изолированная подсеть2001:470:abcd:1::/64
- Туннель
6to4
на роутере mikrotik, адрес на роутере IPv6:2001:470:11:678::2/64
, IPv4:41.4.5.6
, адрес шлюза у tunnelbroker.net IPv6:2001:470:11:678::1
, IPv4:216.66.80.90
, префикс2001:470:abcd::/48
, префикс2001:470:12:678::/64
- Туннель
6to4
на сервере в приличной стране вместо нативного ipv6 (в whois которого за каким-то хером написана ФИО клиента), linux device name:he-ipv6
, адрес интерфейса: IPv6:2001:470:1001:123::2/64
, IPv4:188.1.2.3
, адрес шлюза у tunnelbroker.net IPv6:2001:470:1001:123::1/64
, IPv4:216.66.80.30
, префикс:2001:470:1002:123::/64
Виртуальные сети и туннели:
- Сеть между роутером mikrotik и сервером в приличной стране (linux device name:
tunipsec
), технология GRE over IPSsec (strongswan
), адрес сервера:192.168.222.1
, адрес микротика:192.168.222.2
, маска подсети255.255.255.0
- Сеть между сервером
OpenVPN
(адрес:10.222.1.1
, linux device name:tunopenvpn
) и его клиентами (10.222.1.10-254
), маска10.222.1.0/24
- Сеть между мобильным телефоном c установленным strongswan vpn и сервером в приличной стране (
10.0.1.0/24
)
Служебные адреса:
- Виртуальный адрес для работы с tor/i2p:
123.123.123.123
Вводная для чтения конфигов у вас теперь есть...
Принципы работы:
- Скрипт
/usr/local/bin/bgp.sh
качает csv-версию выгрузки РКН и парсит IP-адреса оттуда в таблицу #128, никак не используемую системой для работы. - Сервер BGP Bird настроен на мониторинг этой таблицы и трансляцию маршрутов оттуда на роутер Mikrotik (используются локальные AS 65000 (Bird) и 64496 (Mikrotik))
- В Микротике настроены статичные маршруты к серверам гугла 8.8.8.8 и 8.8.4.4, через удалённый сервер, который в свою очередь настроен на перехват DNS-запросов и обработку их локально.
dnsmasq
отвечает адресом123.123.123.123
на все.onioin
и.i2p
адреса, на этом адресе. Траффик на этот адрес перехватывается и заворачивается вsquid
, который в свою очередь распределяет его в Polipo->Tor Socks5 Proxy или же напрямую в i2p https proxy
TODO: Более подробное описание принципов работы, комментарии конфигов и однострочники на bash/ansible, позволяющие всё это развернуть за 5 минут. Добавить DN42