БЕЗДРОТОВА СВОБОДА. WIREGUARD-CLIENT+OPENWRT НА RASPBERRY PI4

БЕЗДРОТОВА СВОБОДА. WIREGUARD-CLIENT+OPENWRT НА RASPBERRY PI4

ua_hack

Доброго часу доби, читачу! Розпочнемо статтю з визначення OpenWrt.

OpenWrt - це операційна система Linux, націлена на вбудовані пристрої по типу маршрутизаторів. Замість спроби створити єдину статичну прошивку, OpenWrt надає файлову систему з управлінням пакетами. Це звільняє вас від вибору програм та конфігурацій, які надає провайдер, і дозволяє налаштувати пристрій за допомогою пакетів, що підходять для будь-яких цілей. Для розробників OpenWrt - це основа для створення програм без необхідності писати наново прошивку; для користувачів - можливість повного налаштування пристрою. Весь код відкритий, тому фантазувати можна як завгодно.


ПРИЧИНИ ДЛЯ ВИКОРИСТАННЯ OPENWRT


1. Продуктивність та стабільність

OpenWrt розроблений професіоналами, хто піклується про продуктивність своєї мережі. Операційна система включає багато алгоритмів з останніх досліджень мережевих технологій, які працюють значно краще, ніж більшість провайдерів програмного забезпечення. OpenWrt стабільний і надійно працює протягом тривалого періоду часу. OpenWrt зменшує затримки та збільшує пропускну здатність мережі за допомогою алгоритмів управління bufferbloat. Вдосконалений Wi-Fi стандарт підтримує вищу швидкість передачі даних. Старі пристрої все ще підтримують OpenWrt (доти, доки пам’ять вашого пристрою може вміщувати нові дистрибутиви) навіть після того, як виробник припинить оновлювати власний продукт.


2. Безпека

OpenWrt - це програмне забезпечення з відкритим кодом. Багато розробників з усього світу переглядають код ще до його випуску. Жодних прихованих програмних закладок, залишених постачальниками обладнання, не знайдено. OpenWrt стійкий до загальних вразливостей завдяки своїй ОС Linux, на яку не впливає більшість поширених атак. OpenWrt активно оновлюється, тому будь-які вразливості закриваються незабаром після їх виявлення. Конфігурація дистрибутиву за замовчуванням є дуже консервативною, дозволяючи повноцінне підключення до Інтернету, маючи при цьому вже досить добре налаштований firewall. Лише подумайте, наскільки приємно повністю контролювати пристрої і потік даних в них.


3. Розширюваність

Хоча прошивка для маршрутизатора постачається з фіксованим набором можливостей, OpenWrt надає більше 3000 пакетів, готових до встановлення. Деякі з найбільш популярних пакетів дозволяють:

- використовувати подвійне підключення з коробки або забезпечити перехід IPv4/IPv6;

    - блокувати рекламу на своєму маршрутизаторі, щоб ви могли насолоджуватися веб-серфингом з будь-якого підключеного пристрою;

    - зменшити затримку (bufferbloat) за допомогою Smart Queue Management;

    - захистити доступ до домашньої мережі за допомогою OpenVPN або WireGuard;

    - забезпечити доступ до Інтернету та запобігти можливості провайдера переглядати ваші дії в Інтернеті за допомогою клієнта OpenVPN або WireGuard;

    - запобігти можливості провайдера підробляти та переглядати ваші запити DNS за допомогою шифрування DNS;

    - зашифрувати підключення до Інтернету, обійти регіональні обмеження, отримати доступ до Darknet та прихованих служб Tor за допомогою його клієнта;

    - примусово під’єднати пристрої до власних DNS-серверів;

    - створити гостьову WLAN, що надає доступ до Інтернету, але не для локальних пристроїв;

    - контролювати доступ, використовуючи обмеження часу та батьківський контроль;

    - встановити квоту на обсяг завантаження або пропускну здатність; 

    - та багато іншого.


4. Підтримка ком’юніті

Багато команд, які проводять передові дослідження мережевих технологій, використовують OpenWrt як стабільну платформу для своєї роботи. В міру того, як їхні роботи переходять з експериментальної форми в практичну, якісний для виробництва код, доступний спочатку саме у збірках OpenWrt. 


5. Конфігурація

Оскільки OpenWrt - система на базі Linux, ви маєте повний контроль над усіма функціями вашого пристрою. OpenWrt надає як інтерфейс командного рядка (через SSH), так і веб-інтерфейс користувача для налаштування. Інформація про конфігурацію зберігається у текстових файлах для полегшення редагування та/або копіювання. Крім того, локалізація WebUI доступна більш ніж на 20 мовах. Нульова вартість OpenWrt забезпечена завдяки ліцензії GPL та зусиллям добровольців (як приватних осіб, так і компаній). Плата за підписку та ліцензування не передбачена.

Що ж, розпочнемо налаштування OpenWrt.


Інсталяція OS на пристрій

Старого роутеру у нас не було, але під руку потрапив Raspberry Pi4, який чудово підійде для цієї задачі. На форумах OpenWrt ми знайшли готовий image, який можна встановити на SD-карту за допомогою BalenaEtcher або Rufus. 

Підключення та налаштування мережі

Після встановлення можна підключитись до “малинки” за допомогою Ethernet. За замовчуванням IP-адреса - 192.168.1.1. Під’єднатись можна по SSH, користувач root без паролю. Після підключення введіть passwd та встановіть новий пароль для root.

Схема така:

Наша “малинка” підключена до рідного роутеру як клієнт. Rpi буде виступати в ролі WiFi AP, до якого підключатимуться пристрої. Пізніше ми налаштуємо його так, щоб весь трафік ішов через інтерфейс Wireguard-клієнту, який ми піднімемо на “малинці”.


Налаштування WiFi AP

Конфігурація бездротового інтерфейсу знаходиться в /etc/config/wireless. Якщо пристрій має порти Ethernet, бездротовий зв'язок вимкнено за замовчуванням. Ви можете увімкнути його в /etc/config/wireless, змінивши option disabled '1' на option disabled '0' (достатньо коментування рядка або його видалення). Або так: rm /etc/config/wireless; wifi config; sed -i '/disabled/ s/1/0/g' /etc/config/wireless; wifi up.

Далі vi /etc/config/network і додаємо такі строки:

config interface 'wan'

        option proto 'dhcp'


config interface 'wifi'

        option proto 'static'

        option ipaddr '192.168.2.1'

        option netmask '255.255.255.0'


Наш ip WiFi AP буде 192.168.2.1. Ви можете його змінювати, як вам завгодно. 

Потім змінимо налаштування самої AP:

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 country 'DE'

        option hwmode '11g'

        option channel '10'

        option cell_density '0'


config wifi-iface 'default_radio0'

        option device 'radio0'

        option mode 'ap'

        option key 'nottellingyou'

        option ssid 'ssid'

        option encryption 'psk2'

        option network 'wifi'


Налаштуваннями dhcp:

vi /etc/config/dhcp


config dhcp 'wifi'

        option interface 'wifi'

        option start '100'

        option limit '150'

        option leasetime '12h'


config dhcp 'wan'

        option interface 'wan'

        option ignore '1'


Відредагуйте /etc/config/firewall та додайте новий розділ зони, що охоплює інтерфейс wifi:

config zone 

option name wifi 

list network 'wifi' 

option input ACCEPT

option output ACCEPT 

option forward ACCEPT

    

Увімкніть нову бездротову мережу

     ifup wifi

     wifi

    

Перезапустіть брандмауер

     /etc/init.d/firewall restart

    

Перезапустіть службу DHCP

     /etc/init.d/dnsmasq restart


Підключаємось до Wi-Fi. Таким чином ми звільняємо lan інтерфейс для інтернету.

Налаштування LAN

Дізнайтесь який pool ip-адрес роздає ваш роутер, щоб ми змогли підключити “малинку” по Ethernet, як dhcp-клієнт. У нас це 192.168.7.0/24 мережа.

uci set network.lan.ipaddr="192.168.7.200"

uci set network.lan.gateway="192.168.7.1"

uci set network.lan.dns="192.168.7.1"

uci commit

/etc/init.d/network restart


Вітаємо, ви підключені до інтернету! 


Налаштування WireGuard та маршрутизація трафіку

    Налаштування WireGuard серверу ми вам показували раніше. В результаті маємо публічний ключ серверу, приватний ключ клієнта та ip адреса серверу. 

Етап I. Підготовка 

Встановіть пакети та вкажіть параметри конфігурації клієнта VPN. 

# Install packages

opkg update

opkg install wireguard

# Configuration parameters

WG_IF = "vpn" 

WG_SERV = "SERVER_NAME_OR_IP_ADDRESS" 

WG_PORT = "51820"

WG_ADDR = "10.8.0.2/32"

Етап II. Підготовка ключів

# Client private key

WG_KEY="0HxKT8+AUO5h1cАВІВАq01F+0A4PVZ12+58FE="

# Server public key

WG_PUB="szC81lC/+jAWАВІВІСХХVDsnKpf4joF8CcNduUf4tTgE="

У вас всі дані будуть інші.

Етап III. Брандмауер

Вважайте мережу VPN загальнодоступною і призначте інтерфейс VPN зоні WAN, щоб мінімізувати налаштування брандмауера.

# Configure firewall

uci rename firewall.@zone[0]="lan"

uci rename firewall.@zone[1]="wan"

uci del_list firewall.wan.network="${WG_IF}"

uci add_list firewall.wan.network="${WG_IF}"

uci commit firewall

/etc/init.d/firewall restart

Етап IV. Мережа

Налаштування інтерфейсу VPN та PEERS.

# Configure network

uci -q delete network.${WG_IF}

uci set network.${WG_IF}="interface"

uci set network.${WG_IF}.proto="wireguard"

uci set network.${WG_IF}.private_key="${WG_KEY}"

uci add_list network.${WG_IF}.addresses="${WG_ADDR}"

 

# Add VPN peers

uci -q delete network.wgserver

uci set network.wgserver="wireguard_${WG_IF}"

uci set network.wgserver.public_key="${WG_PUB}"

uci set network.wgserver.endpoint_host="${WG_SERV}"

uci set network.wgserver.endpoint_port="${WG_PORT}"

uci set network.wgserver.route_allowed_ips="1"

uci set network.wgserver.persistent_keepalive="21"

uci add_list network.wgserver.allowed_ips="0.0.0.0/0"

uci add_list network.wgserver.allowed_ips="::/0"

uci commit network

/etc/init.d/network restart


Тепер проводимо тести.

traceroute google.com

Якщо все успішно, ви побачите, що пакети йдуть через інтерфейс VPN.

Звичайно, етична прошивка на роутері - далеко не порятунок від усіх хвороб, але це вбереже вас від проблем пов'язаних з безпекою у вашій мережі і суттєво підвищить функціонал вашого пристрою. 


Посилання:

https://openwrt.org/docs/guide-user/services/vpn/wireguard/client

https://openwrt.org/ru/docs/guide-user/network/wan/internet.connection

https://openwrt.org/docs/guide-quick-start/ssh_connect_to_the_internet_and_install_luci

https://forum.openwrt.org/t/raspberry-pi-4-access-point/50728



Report Page