Raspberry pi 3 маршрутизатор

Записки программиста

Превращаем Raspberry Pi в беспроводной роутер, и заодно заворачиваем весь трафик в VPN

Беспроводные роутеры имеют несколько неприятных особенностей. Во-первых, они небезопасны, если только не разобраться с установкой OpenWrt. Во-вторых, со временем они перестают выпускаться, а значит, если ваш роутер сломается, вам придется разбираться с установкой OpenWrt на совершенно другой роутер. В-третьих, как правило, они довольно ограничены в ресурсах, а значит возложить на роутер какие-то дополнительные функции может быть проблематично. Между тем, абсолютно любой компьютер под управлением Linux может быть настроен в качестве полноценного Wi-Fi роутера, что решает проблемы безопасности, повторяемости и производительности. Для примера, рассмотрим создание беспроводного роутера на базе одноплатного компьютера Raspberry Pi.

Подготовительные работы

Я использовал уже не новую Raspberry Pi 2 Model B под управлением Raspbian Linux 9 (Stretch). В последних версиях этого дистрибутива SSH по умолчанию выключен. Чтобы его включить, вам понадобится USB-клавиатура и монитор с HDMI. Логинимся под пользователем pi с паролем raspberry, меняем пароль, включаем SSH:

Из сетевых интерфейсов данный одноплатник имеет только один Ethernet-разъем. Чтобы у устройства появился второй разъем, я использовал сетевую карту от компании Olimex на базе чипа AX88772B. Вы можете помнить это устройство по заметке Снифинг Ethernet-трафика с платой Throwing Star. Чтобы малина также умела и Wi-Fi, был использован донгл Panda Wireless PAU07 (a.k.a Panda N600) на базе чипа Ralink RT5572. Вообще, это довольно неплохой и популярный чип. На eBay вы найдете много других устройств на его базе. Примите во внимание, что не всякий донгл работает с Linux, а из тех, что работают, не всякий поддерживает работу в качестве точки доступа. Поэтому перед покупкой устройства будет не лишним загуглить, подходит ли оно для задачи.

Читайте также:  Настройка роутера xiaomi mi router 4a giga version

Внешний вид роутера у меня получился следующим:

Raspberry Pi в качестве Wi-Fi роутера

С точки зрения ОС картина такая:

  • eth0 — встроенный Ethernet, здесь у нас будет WAN;
  • eth1 — сетевая карта на базе AX88772B будет использована для LAN;
  • wlan0 — донгл Panda Wireless PAU07, здесь будет WLAN;

Само собой разумеется, все описанные далее шаги будут работать для любого компьютера под управлением Linux с подходящими сетевыми интерфейсами, не только Raspberry Pi. Это вполне может быть какой-то старый стационарный компьютер, нетбук, или другой одноплатник. Интересно, что существуют даже специальные одноплатники с Wi-Fi и двумя или более Ethernet-портами. Одним из таких одноплатников является Orange Pi R1. На AliExpress или eBay устройство можно купить где-то за 20$ с доставкой. Пользователь vova_ivanov из чата Hardware & Radio даже подсказал, что используемый в нем Realtek RTL8189 без проблем работает в роли точки доступа под Linux. А также предупредил, что Orange Pi R1 не умеет PoE и убивается им. В том же чате Xarlan подсказал, что больше подобных одноплатников можно найти на сайте board-db.org. В частности, довольно интересно выглядят Banana Pi BPI-R1, Banana Pi BPI-R2 и Banana Pi BPI-R64. Впрочем, эти устройства относятся уже к другому ценовому диапазону, а BPI-R64 на момент написания этих строк еще нигде не продавался.

Первоначальная настройка NAT

Открываем /etc/network/interfaces и пишем туда следующее:

auto lo
iface lo inet loopback

# Вариант А, без смены MAC:
# iface eth0 inet dhcp

# Вариант Б, со сменой MAC:
iface eth0 inet dhcp
hwaddress ether 11:22:33:44:55:66

auto eth1
iface eth1 inet static
address 10.128.10.1
network 10.128.10.0
netmask 255.255.255.0
broadcast 10.128.10.255

auto wlan0
iface wlan0 inet static
address 10.128.11.1
network 10.128.11.0
netmask 255.255.255.0
broadcast 10.128.11.255

Вариант со сменой MAC нужен исключительно в случае, если ваш интернет-провайдер ограничивает доступ по MAC-адресам, как это зачем-то делает мой. Если ваш ISP не страдает такой фигней, смело используйте вариант А.

Поскольку мы подправили /etc/network/interfaces, демон dhcpcd теперь будет отказываться стартовать. Для порядку отключим его, чтобы система при загрузке не ругалась ошибками:

Читайте также:  Роутер сяоми пропал интернет

Следующим шагом ставим dnsmasq, который будет играть роль DHCP-сервера и кэширующего DNS-сервера. Если нужно, в нем также есть функция TFTP-сервера. Такой сервер, к примеру, бывает нужен для установки OpenWrt на некоторые роутеры.

# Можно явно указать апстрим DNS-сервера
# Это может быть особенно полезно, если вы
# хотите заворачивать весь трафик в VPN
server=8.8.8.8
server=8.8.4.4

# Listen only given interfaces
interface=lo
interface=eth1
interface=wlan0
bind-interfaces

# DNS cache size
cache-size=15000

# IP ranges
dhcp-range=eth1,10.128.10.50,10.128.10.250
dhcp-range=wlan0,10.128.11.50,10.128.11.250

# Default gateways
dhcp-option=eth1,3,10.128.10.1
dhcp-option=wlan0,3,10.128.11.1

# DNS servers
dhcp-option=eth1,6,10.128.10.1
dhcp-option=wlan0,6,10.128.11.1

Проверяем работу DNS-сервера:

DHCP и DNS настроены, осталось настроить NAT. Делается это при помощи iptables:

# enable IP-forwarding
sudo sh -c ‘echo 1 > /proc/sys/net/ipv4/ip_forward’

# for LAN
sudo iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT
sudo iptables -A FORWARD -i eth0 -o eth1 -m conntrack \
—ctstate ESTABLISHED,RELATED -j ACCEPT

# for WLAN
sudo iptables -A FORWARD -i wlan0 -o eth0 -j ACCEPT
sudo iptables -A FORWARD -i eth0 -o wlan0 -m conntrack \
—ctstate ESTABLISHED,RELATED -j ACCEPT

# allow traffic between LAN and WLAN
sudo iptables -A FORWARD -i wlan0 -o eth1 -j ACCEPT
sudo iptables -A FORWARD -i eth1 -o wlan0 -j ACCEPT

sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Подключаем ноутбук ко второму Ethernet-порту малины. Проверяем, что нам выдали IP-адрес, и что имеется доступ в интернет. Если все работает, сохраняем сделанные изменения, чтобы они не потерялись после перезагрузки.

Для этого дописываем в /etc/sysctl.conf:

Источник

Тёмный маршрутизатор из Raspberry Pi

В данной статье я расскажу о том, как я сделал из 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 на ваш путь
  • Замените 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

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

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

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

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

  1. Включение и выключение DPI: Полностью включает и выключает маршрутизацию
  2. Маршрутизация добавленных пользователем сайтов и подсетей через тор
  3. Использование DNS от тора, возможность заходить на .onion сайты
  4. Маршрутизация всех заблокированных в России подсетей через тор
  5. Использование правила ‘MASQURADE’ в iptables для создания NAT
  6. Маршрутизация всего трафика через тор

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

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

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

Источник

Оцените статью
Adblock
detector