В данной статье я расскажу о том, как я сделал из Raspberry Pi маршрутизатор, способный перенаправлять отдельные сайты, отдельные подсети, да хоть все запросы через tor.

Клонируем мой репозиторий с github и производим настройку. Все действия также описаны на странице репозитория.

Этап первый: настройка DPI

Центром нашего маршрутизатора будет DPI, созданный пользователем @Evengard (ссылка на статью - https://habr.com/ru/post/548110/).
Выполняем сделующие команды, не забывая заменить username на имя своего пользователя:

mkdir build
cd build
wget https://openresty.org/download/openresty-1.19.9.1.tar.gz   # or latest release from https://openresty.org/en/download.html
tar -xzvf openresty-1.19.9.1.tar.gz
mv openresty-1.19.9.1 openresty
git clone https://github.com/fffonion/lua-resty-openssl
git clone https://github.com/fffonion/lua-resty-openssl-aux-module
git clone https://github.com/Evengard/lua-resty-getorigdest-module
git clone https://github.com/iryont/lua-struct
git clone https://github.com/Evengard/lua-resty-socks5
cd openresty
./configure --prefix=/home/username/nginxdpi --with-cc=gcc --add-module=/home/username/build/lua-resty-openssl-aux-module --add-module=/home/username/build/lua-resty-openssl-aux-module/stream --add-module=/home/username/build/lua-resty-getorigdest-module/src
make -j4 && make install

cp -r /home/username/build/lua-resty-getorigdest-module/lualib/* /home/username/nginxdpi/lualib/ 
cp -r /home/username/build/lua-resty-openssl/lib/resty/* /home/username/nginxdpi/lualib/resty/
cp -r /home/username/build/lua-resty-openssl-aux-module/lualib/* /home/username/nginxdpi/lualib/
cp /home/username/build/lua-resty-socks5/socks5.lua /home/username/nginxdpi/lualib/resty/
cp /home/username/build/lua-struct/src/struct.lua /home/username/nginxdpi/lualib/

Далее отредактируйте /scripts/startDpi.sh:

  • Измените eth0 на ваш интерфейс

  • Измените /opt/nginxdpi/bin/openresty и /opt/nginxdpi/cfg/nginx.conf на ваш путь

Отредактируйте /DPI/nginx.conf:

  • Замените 127.0.0.1 и 9050 на ваш SOCKS5 server (его мы настроим далее в статье)

  • Также замените 192.168.1.1 на IP адрес вашего of the DNS сервера (если он у вас есть, если нет, то можете, напимер написать 1.1.1.1 или 8.8.8.8)

Этап второй: настройка TOR

Установите тор и откройте файл конфигурации:

sudo apt install tor
sudo nano /etc/tor/torrc

Вставьте в файл следующие настройки и замените 192.168.1.1 на адрес вашего raspberry pi:

SocksPort 192.168.1.1:9050
SocksPort 127.0.0.1:9050
SocksPolicy accept 192.168.1.0/24
RunAsDaemon 1
DataDirectory /var/lib/tor

VirtualAddrNetwork 10.0.0.0/10
AutomapHostsOnResolve 1
TransPort 9040
DNSPort 192.168.1.1:9053

Этап третий: установка golang

Установить golang вы можете следуя оффициальному гайду

Этап четвёртый: заключительные действия

Откройте scripts/startDefaultDns.sh и замените 192.168.1.1:53 на ваш статический DNS
Откройте scripts/startTorDns.sh и замените 192.168.1.1:9053 на DNS вашего TOR

Этап пятый: запуск

Вы можете стразу запустить скрипт командой

go run server.go

Либо скомпилировать файл для более быстрой работы

go build server.go
./server

Зайдите на web панель по адресу ip_your_raspberrypi:8080

Описание функций:

  1. Включение и выключение DPI: Полностью включает и выключает маршрутизацию

  2. Маршрутизация добавленных пользователем сайтов и подсетей через тор

  3. Использование DNS от тора, возможность заходить на .onion сайты

  4. Маршрутизация всех заблокированных в России подсетей через тор

  5. Использование правила 'MASQURADE' в iptables для создания NAT

  6. Маршрутизация всего трафика через тор

Вам остаётся сделать ваш raspberry pi шлюзом в настройках сети телефона или компьютера и пользоваться.

Спасибо за внимание

На этом все! Спасибо всем, кто дочитал статью.

Также можете поучавствовать в разработке, ссылка на репозиторий - https://github.com/yyasha/raspberrypi_router

Комментарии (28)


  1. ABATAPA
    20.10.2021 15:42
    -2

    Скорости через Tor очень низкие. Уж лучше свой VPN на VPS за $0.6/мес...


    1. lopatoid
      20.10.2021 16:06
      +3

      Где такие цены?


      1. FuzzyWorm
        20.10.2021 18:25

        Вот вам за 0$/мес: https://habr.com/ru/post/567062/


        1. denaspireone
          20.10.2021 18:51
          -1

          такое можно даже с aws На free tire, но там всегда есть ограничения по трафику



      1. DevAdv
        20.10.2021 22:46

        За $0.6/мес не знаю (тоже интересно), но сам пользуюсь FirstByte MSK-KVM-SSD-START за 55 рублей в месяц ($0.8/мес).


        На VDS стоит Debian c ядерным Wireguard, 100мбит/с в дуплексе тянет с ~30-35% загрузкой ядра. Но есть ограничение — 7Тб трафика в месяц. Мне хватает и на загрузку, и на отдачу торрентов, но если у вас объёмы в десятки терабайт в месяц, то не подойдёт.


        1. lopatoid
          20.10.2021 23:32

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


          1. DevAdv
            20.10.2021 23:37
            +3

            А, забыл, что у всех разный контекст. Я в Канаде живу, и тут компании мониторят участие в загрузке/раздаче торрентов, после чего шлют гневные письма с угрозами провайдерам, а те перенаправляют их конечным пользователям.


            В общем, мне VPN нужен исключительно для загрузки/сидирования всякого разного, а доступ к сайтам тут и так особо не блокируется, т.ч. VPN не очень актуален (лично для меня).


          1. cadovvl
            21.10.2021 10:51
            +2

            У меня подписка на Я.Музыку и Кинопоиск. Некоторый контент можно найти только на них.
            Увы, но работают они только из России, поэтому настроил себе VPN.


      1. dev0nizer
        21.10.2021 18:53

        за 0.6 не знаю, а за 1.5 есть
        AlienVDS, RoboVPS. Mikrotik CHR туда идеально встает


    1. denaspireone
      20.10.2021 16:23
      +2

      поделитесь ссылкой на такой VPN за 60 центов то


    1. archieFox
      20.10.2021 16:39
      -1

      Подскажите VPS за 6 центов в месяц, а то меньше 4 баксов не встречал.


      1. ABATAPA
        21.10.2021 18:50
        +2

        $0.6 — это не 6 центов...
        > меньше 4 баксов не встречал
        Значит, не интересовались и не искали.


  1. MrCrooK
    20.10.2021 15:59

    1. yyasha Автор
      20.10.2021 16:04

      Поправил


  1. alexhott
    20.10.2021 16:08
    -2

    Рассказывали мне историю как товарищ биткоины решил на баксы поменять. Пошел через тор сеть в обменник, поменял, и ... на счет ничего не пришло.

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

    Жаловаться даже некуда в такой ситуации кроме как самому себе.


    1. gxcreator
      20.10.2021 16:27
      -1

      Так это обычный фишинг, на него и в клирнете можно нарваться.


    1. zorn_v
      20.10.2021 17:18

      что один из участников тор сети

      Товарищ обменивал на .onion домене или обычном сайте ? Страшилок я могу тоже мульён напридумывать.

      Ну и да, сами обменники на "чистом доверии". Лучше через "поисковик" типа bestchange.ru, там хоть отзыв можно оставить и исключат из списка если что.


    1. salnicoff
      20.10.2021 19:46
      +3

      Он не заметил ругани браузера по поводу невалидного HTTPS сертификата? Сам Себе Злобный Буратина™.

      Он пользовался сайтом, который вообще не поддерживает HTTPS? Дважды Сам Себе Злобный Буратина™.


      1. zorn-v
        21.10.2021 18:53

        Да все проще. Кто то кому то сказал что в интернете могут наебать )

        Кто то наебалса, и такой ОЙ. Оказывается не надо было деньги посылать пока "что то там". Все как обычно.


  1. yyasha Автор
    20.10.2021 16:08
    +3

    Проект разработан в исследовательских целях.


  1. JayK
    21.10.2021 09:22

    А какова производительность при скорости интернета более 100 мбит\сек? С RPi3 и RPi4? Для обычного интернета имею ввиду, а не для сайтов завернутых на тор.

    Кроме того упущен важный нюанс, есть смысл скрыть факт использования тор сети от провайдера, соответственно желательно бы завернуть оную в VPN.


    1. yyasha Автор
      21.10.2021 19:59

      У RPi3 пропускная способность не превышает 100 Мбит/с, у RPi4 уже гигабитный порт, и со скоростью более 100 МБит/с она должна справляться хорошо


      1. JayK
        22.10.2021 07:10

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


  1. seedkls_play
    21.10.2021 18:45

    На armbian orange pi zero накатить можно?


    1. yyasha Автор
      21.10.2021 18:51

      Думаю, что проблем возникнуть не должно


  1. nuclight
    22.10.2021 15:08

    Вам остаётся сделать ваш raspberry pi шлюзом в настройках сети телефона или компьютера и пользоваться.

    Лолшто? Может всё-таки проксёй? Без клиентской поддержки в Tor ничего само заворачиваться не может.


  1. Kubig
    28.10.2021 12:06

    Классная статья, спасибо. Всё коротко и по делу