Всем привет! Сегодня хочу рассказать о своем «семейном» проекте на Raspberry Pi. Путешествуя по миру, я постоянно сталкиваюсь с потребностью подключаться к быстрому и, что не менее важно, безопасному интернету.

Представьте ситуацию: вы въехали в отель со своей семьей, пару часов решаете вопросы с размещением и, изрядно устав, пытаетесь подключить всё семейство к сети: дети требуют мультики, супруга хочет поискать ближайшие магазины, где можно пошопиться, а тебе нужно просто поработать. Для этого ты цепляешь каждое устройство к точке доступа отеля и надеешься, что в эту сеть внедрены хоть какие-то механизмы защиты.

К типовым проблемам открытых беспроводных сетей относятся возможность перехвата трафика, подделка ответов веб-приложений и DNS-спуфинг, если сама сеть уже скомпрометирована. Поэтому в любой публичной сети нужно вести себя максимально осторожно. Один из лучших способов защитить свой трафик от влияния извне — использовать свой VPN.

В России с безопасностью беспроводных сетей дело обстоит еще более-менее. В других же странах, где мне довелось побывать, всё не так радужно. Что дает использование своего VPN? Возможность подключать все устройства семьи разом к интернету через публичные сети, при этом еще защищая трафик с помощью VPN. Про настройку собственного VPN есть отличный гайд на Youtube.

Собственно, идея не нова — решил сделать небольшой travel-роутер для семьи. Можно, конечно, использовать и готовые решения, однако у меня уже была «малинка» и внешние адаптеры к ней, поэтому для реализации моей задумки не пришлось ничего докупать. Плюс этот инструмент можно всегда хранить на флешке и использовать в семейных поездках, а в остальное время у «малинки» другая жизнь.

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

Вариант первый (роутер на основе OpenWrt)

Суть схемы подключения: мы поднимаем на одном внешнем Wi-Fi интерфейсе «малинки» нашу точку доступа, к которой всегда будут подключаться наши беспроводные клиенты, а вторым адаптером (встроенным в моем случае, но при желании можно и второй внешний использовать) подключаемся к публичному Wi-Fi. При этом весь трафик наших беспроводных девайсов будет идти через наш VPN-туннель.

Для проекта потребуются:

1) Raspberry Pi 4,

2) адаптер питания,

3) microSD-карта,

4) Ethernet-кабель,

5) внешний USB Wi-Fi адаптер (у меня недорогой с AliExpress AC-1200 на чипсете MT7612U).

Шаг первый

Зальем образ OpenWRT на microSD-карту. Для этого нам пригодится следующее ПО: Raspberry Pi Imager, а также корректный образ OpenWRT. Нужный образ для вашей «малинки» можно найти по ссылке. Итак, запускаем Raspberry Pi Imager, указываем путь до файла с прошивкой OpenWRT, выбираем нашу microSD-карту, куда нужно записать файл, и жмем WRITE. Дожидаемся окончания процесса записи и проверки, потом извлекаем microSD-карту.

Шаг второй

Вставляем microSD-карту в нашу «малинку» и подключаем ее к питанию. Далее подсоединяем ее к нашему домашнему роутеру, к которому подключен наш ПК, при помощи Ethernet-кабеля. Важно: для дальнейшей настройки нашей «малинки» необходимо, чтобы компьютер и «малинка» находились в одной подсети. В моем случае это 192.168.1.0/24 по умолчанию. После установки свежей прошивки OpenWRT интерфейс «малинки» будет иметь IP 192.168.1.1/24. Соответственно, для обеспечения сетевой связности необходимо, чтобы ваш компьютер находился в той же подсети.

Шаг третий

Чтобы продолжить настройку нашего будущего роутера, необходимо подключиться к нему по SSH. Можно рассмотреть вариант через GUI, однако в моем случае я использую CLI, все действия можно повторить и через графический интерфейс соответственно.

SSH root@192.168.1.1

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

passwd

Далее хорошим решением будет забэкапить файлы, которые мы будем править, на случай, если что-то пойдет не по плану :)

cd /etc/config/

cp firewall firewall.bk

cp network network.bk

cp wireless wireless.bk

Настроим сетевые интерфейсы.

vi /etc/config/network

config interface 'loopback'
        option device 'lo'
        option proto 'static'
        option ipaddr '127.0.0.1'
        option netmask '255.0.0.0'

config globals 'globals'
        option ula_prefix 'fd27:468f:224c::/48'

config device
        option name 'br-lan'
        option type 'bridge'
        list ports 'eth0'

config interface 'lan'
        option device 'br-lan'
        option proto 'static'
        option ipaddr '10.10.10.40'
        option netmask '255.255.255.0'
        option ip6assign '60'
        option force_link '1'

config interface 'wwan'
        option proto 'dhcp'
        option peerdns '0'
        option dns '8.8.8.8 1.1.1.1'

А также дадим доступ к Интернету сегменту LAN:

vi /etc/config/firewall (здесь нам нужно изменить только одно значение — в зоне WAN option INPUT выставить ACCEPT).

Перезагружаем нашу малинку и подключаемся уже по измененному IP-адресу (в нашем случае это 10.10.10.40).

Далее нам нужно подключить адаптер Wi-Fi. Но прежде нам нужно доустановить драйверы для этого адаптера. Поэтому сначала подключим «малинку» к нашему домашнему Wi-Fi:

 vi /etc/config/wireless

config wifi-device 'radio0'
        option type 'mac80211'
        option path 'platform/soc/fe300000.mmcnr/mmc_host/mmc1/mmc1:0001/mmc1:0001:1'
        option channel '7' 
        option hwmode '11g' 
        option htmode 'HT20' 
        option disabled '0'   
        option short_gi_40 '0'    
                                  
config wifi-iface 'default_radio0'
        option device 'radio0'
        option network 'lan' 
        option mode 'ap'        
        option ssid 'OpenWrt'   
        option encryption 'none'

 uci commit wireless

wifi

Далее продолжим настройку через GUI:

https://10.10.10.40/

Вводим те же самые логин и пароль, с которыми мы логинились по SSH.

Переходим в настройки беспроводных сетей Network > Wireless

Нажимаем Scan и подключаемся к домашней беспроводной сети, чтобы установить драйверы для нашего Wi-Fi адаптера.

После того как у «малинки» появился доступ в интернет, обновляем пакеты OpenWRT и ставим драйверы для большинства адаптеров. Однако следует исходить из следующих моментов: чипсет адаптера, который у вас есть, должен быть совместим с OpenWRT (какие чипсеты в данный момент поддерживаются, можно проверить на официальном сайте OpenWrt).

opkg update

opkg install kmod-mt76x2u kmod-rt2800-lib kmod-rt2800-usb kmod-rt2x00-lib kmod-rt2x00-usb kmod-usb-core kmod-usb-uhci kmod-usb-ohci kmod-usb2 usbutils nano

Убеждаемся, что внешний адаптер установился корректно.

lsusb

ifconfig wlan1 up

Если интерфейс поднялся, значит, мы на верном пути.

Дальше нам нужно поднять свою точку доступа! Для этого необходимо отредактировать файл еще раз:

nano /etc/config/wireless

config wifi-device 'radio1'
        option type 'mac80211'
        option path 'scb/fd500000.pcie/pci0000:00/0000:00:00.0/0000:01:00.0/usb2/2-1/2-1:1.0' < --путь сгенерится автоматом, его трогать не нужно
        option channel '36'
        option band '5g'
        option htmode 'VHT80'
        option disabled '0' <-- Не забыть включить

 config wifi-iface 'default_radio1'
        option device 'radio1'
        option network 'lan'
        option mode 'ap'
        option ssid 'Название сети, к которой вы будете подключать все свои девайсы' 
        option encryption 'psk2'
        option key 'Пароль для этой сети'

 uci commit wireless

 wifi

Теперь у вас есть работающий travel-роутер. Подключаете всю семью один раз к Wi-Fi на «малинке» и всё. Для того чтобы интернет был на всех девайсах, вам достаточно подключиться к публичной сети. (Примечание: при подключении Wi-Fi адаптера используйте тот же USB-разъем, в ином случае интерфейс может не стартануть). Однако ваш трафик по-прежнему передается по незащищенному каналу, поэтому нужно настроить VPN.

В моем случае я буду настраивать подключение к собственному VPN-серверу. Настройка других VPN-провайдеров не будет сильно отличаться.

Наша «малинка» будет клиентом, который при получении доступа в интернет будет автоматически устанавливать соединение с VPN-сервером, формируя защищенный туннель, внутри которого будет передаваться весь трафик.

Установим необходимые пакеты для нашего VPN:

opkg update

opkg install wireguard-tools

opkg install luci-app-wireguard

Далее заходим через GUI и добавляем новый интерфейс Network > Interfaces > Add New interface.

Даем название интерфейсу и выбираем протокол WireGuard VPN.

Далее импортируем конфигурацию для добавления нового клиента, которую можно получить с нашего VPN-сервера.

Дальше нам нужно настроить правила для межсетевого экрана следующим образом:

 Во вкладке Network > Firewall добавить новую зону и выставить параметры:

 Input - Reject

Output - Accept

Forward - Reject

Masquerading - Checked

MSS clamping - Checked

Интерфейс выбираем тот, который относится к туннелю Wireguard, смотрим из какой зоны нам разрешен форвардинг.

Далее выбираем Save и Save&Apply.

Для того чтобы весь трафик у нас ходил только через наш туннель и никак иначе, можно дополнительно скорректировать правило межсетевого экранирования следующим образом: заходим в настройки зоны Lan и выставляем параметр Allow forward to destination zones таким образом, что из сегмента Lan будет доступ только в сегмент нашего туннеля.

На этом настройка роутера для путешествий на основе Raspbery Pi завершена :) Дальше, когда вам потребуется на новом месте раздать Wi-Fi для всей семьи, вам нужно будет подключиться к «малинке», зайти в Network > Wireless и подключиться к новой сети.

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

Вторым способом превратить «малинку» в travel-роутер поделюсь в следующем посте, чтобы не нагружать этот)

Автор: Евгений Артемьев, Консультант по информационной безопасности "Инфосистемы Джет"

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


  1. user18383
    12.04.2023 10:00

    Зачем использовать rpi если можно купить дешманский роутер с хорошими антеннами по той же цене а то и ниже?


    1. YourDesire
      12.04.2023 10:00
      +3

      Покупать, возможно, конкретно для этих целей и незачем. Но, как обмолвился автор, если я его правильно понял - малинка есть и она используется, в том числе и для других целей. Если есть малинка и опыт, зачем покупать ещё и роутер? Поехали в путешествие, пошаманил над малинкой, в противном случае пришлось бы ещё и роутер тащить. Не поехали - используешь в других целях.

      Да и, в конце концов, это способ поковыряться и что-то поделать самому, что некоторым, в том числе и мне, доставляет несравненное удовольствие, особенно когда результат этого ковыряния приносит пользу.


      1. V1tol
        12.04.2023 10:00

        Просто есть люди, у которых дешманских роутеров типа такого есть штук 10 ещё с тех времён, когда о пирожке никто не слышал. Да, гигабит по вайфаю с него не снять, но пару десятков мегабит с VPN туннелем для таких случаев даёт вполне.


        1. YourDesire
          12.04.2023 10:00

          Ну вот, как вы, хотя и я в том числе, правильно заметили - вопрос условий. У кого то малинка и желание, но нет роутеров, у кого-то роутеров по штук 10.


  1. BeetleII
    12.04.2023 10:00
    +1

    Похоже что во всем этом "малинка" лишняя...


  1. 13werwolf13
    12.04.2023 10:00
    +1

    рекомендую посмотреть на вот это устройство вместо малинки, более подходящее для таких задач.


    1. NikaLapka
      12.04.2023 10:00
      +1

      Автор: ... Консультант по информационной безопасности

      А вы точно эксперт?

      https://mikrotik.com/product/RBmAPL-2nD в четыре раза дешевле и меньше, питание от чего угодно где есть USB, настраивается "один раз", WiFi, DoH, VPN, скрипты.. всё включено.


      1. Frimko
        12.04.2023 10:00
        +1

        не все, mikrotik не завезли из коробки автоматический IKEv2 протокол, что-бы сертификаты сам получал. Приходится все делать самому. Там много чего приходится все делать самому, интерфейс оставляет желать лучшего


        1. demetr_ds
          12.04.2023 10:00

          Gl.inet с openwrt на борту из коробки (к примеру из дешёвых GL-AR300M) Размер, стоимость вне конкуренции. С vpn и т.д. Есть у них и свой интерфейс, в два клика все можно сделать, можно и на luci переключиться, для гурманов.


      1. 13werwolf13
        12.04.2023 10:00
        +1

        чёрная коробочка с неизвестным наполнением против открытой операционки..

        ИМХО автор сделал более правильный выбор.


      1. Abyss777
        12.04.2023 10:00

        На нём один беспроводной интерфейс, работать конечно будет, но скорость на 2.4 будет грустненькая...


  1. RinatMambetov
    12.04.2023 10:00

    Какой же второй способ?


  1. Ryav
    12.04.2023 10:00
    +1

    Для меня странно, что кто-то берёт малинку в путешествия.


  1. CmpeJ1ok
    12.04.2023 10:00

    Ну впринципе все понятно: человек любит крутить железки, использует устройства, которые более нигде не применяет, думает что облегчает жизнь своим близким и т.д. и т.п., но по факту дело даже не в том, что он дает своим устройствам беспроводной канал хуже, чем от точки доступа отеля, а в том, что слепив из сами знаете чего и палок железку - она все равно не отвечает необходимым требованиям… по дефолту вайфай на ресепшене - вы тащите машинку с собой? Далее, если точка доступа рядом или в номере, то уверен отель позаботился и о защите своей сети и чтобы вы особо не чудили, а значит портал авторизации и закрытые порты, а так же песочница из изолированной сети - все это делает невозможным просто так взять и подключиться к гостевой сети отеля… пока не изобретен роутер, который будет проходить страницу авторизации - не на всех дисплеи то есть, так что у вас два варианта: или в следующей статье описывать, как сделали из смартфона роутер или как сделали свой роутер с возможностью автор зайти в качестве клиента на web портале))) как то так


  1. nitro80
    12.04.2023 10:00

    Что-то не пойму, если уже есть свой VPN, не проще ли использовать его на конечных устройствах?