Настройване на обикновена VPN мрежа с WireGuard и Raspberry Pi като сървър

От WireGuard стане част от бъдещо ядро Linux 5.6, реших да видя как най-добре да интегрирам тази VPN с моята LTE рутер/точка за достъп на Raspberry Pi.

Оборудование

  • Raspberry Pi 3 с LTE модул и публичен IP. Ще има VPN сървър (наричан по-долу крак)
  • Телефонът е включен Android, който трябва да използва VPN за всички комуникации
  • тетрадка Linux, който трябва да използва VPN само в рамките на мрежата

Всяко устройство, което се свързва с VPN, трябва да може да се свързва с всяко друго устройство. Например, телефонът трябва да може да се свърже с уеб сървър на лаптоп, ако и двете устройства са част от VPN мрежа. Ако настройката е достатъчно проста, тогава можете да помислите за свързване към VPN и десктоп (чрез Ethernet).

Като се има предвид, че кабелните и безжичните връзки стават по-малко сигурни с течение на времето (целеви атаки, KRACK WPA2 хакерска атака и Dragonblood атака срещу WPA3), сериозно обмислям да използвам WireGuard за всички мои устройства, независимо в каква среда работят.

Инсталиране на софтуер

WireGuard Той осигурява предварително компилирани пакети за повечето дистрибуции Linux, Windows и macOSЗаявления за Android и iOS се доставят чрез магазини за приложения.

Имам най-новата Fedora Linux 31, и преди да инсталирам, бях твърде мързелив да прочета ръководството. Просто намерих пакетите. wireguard-tools, инсталирах ги и след това не можах да разбера защо нищо не работи. По-нататъшно проучване разкри, че нямам инсталиран пакет wireguard-dkms (с мрежов драйвер) и го нямаше в хранилището на моята дистрибуция.

Ако бях прочел инструкциите, щях да предприема правилните стъпки:

$ sudo dnf copr enable jdoss/wireguard
$ sudo dnf install wireguard-dkms wireguard-tools

Имам инсталирана дистрибуция Raspbian Buster на моя Raspberry Pi, вече има пакет wireguard, инсталирайте го:

$ sudo apt install wireguard

На телефона Android Инсталирах приложението WireGuard VPN от официалния каталог на Google App Store.

Инсталиране на ключове

За удостоверяване на възли Wireguard Използва проста схема за частен/публичен ключ за удостоверяване на VPN възли. Можете лесно да генерирате VPN ключове със следната команда:

$ wg genkey | tee wg-laptop-private.key |  wg pubkey > wg-laptop-public.key
$ wg genkey | tee wg-server-private.key |  wg pubkey > wg-server-public.key
$ wg genkey | tee wg-mobile-private.key |  wg pubkey > wg-mobile-public.key

Това ни дава три двойки ключове (шест файла). Няма да се позоваваме на файлове в конфигурациите, но ще копираме съдържанието тук: всеки ключ е един ред в base64.

Създаване на конфигурационен файл за VPN сървър (Raspberry Pi)

Конфигурацията е доста проста, създадох следния файл /etc/wireguard/wg0.conf:

[Interface]
Address = 10.200.200.1/24
ListenPort = 51820
PrivateKey = <copy private key from wg-server-private.key>
PostUp   = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o wwan0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o wwan0 -j MASQUERADE

[Peer]
# laptop
PublicKey = <copy public key from wg-laptop-public.key>
AllowedIPs = 10.200.200.2/32

[Peer]
# mobile phone
PublicKey = <copy public key from wg-mobile-public.key>
AllowedIPs = 10.200.200.3/32

Няколко бележки:

  • На съответните места трябва да вмъкнете редовете от файловете с ключовете
  • Моят VPN използва вътрешен обхват 10.200.200.0/24
  • За отбори PostUp/PostDown Имам външен мрежов интерфейс wwan0, вие може да имате различен (например eth0)

VPN мрежата се отваря лесно със следната команда:

$ sudo wg-quick up wg0

Една малка подробност: като DNS сървър използвах dnsmasq свързан към мрежов интерфейс br0, добавих и устройства wg0 към списъка с разрешени устройства. В dnsmasq това става чрез добавяне на нов ред с мрежовия интерфейс към конфигурационния файл /etc/dnsmasq.conf, например:

interface=br0
interface=wg0

Освен това добавих правило за iptable, за да разреша трафик към слушащия UDP порт (51280):

$ sudo iptables -I INPUT -p udp --dport 51820 -j ACCEPT

Сега, когато всичко работи, можем да регистрираме автоматичното стартиране на VPN тунела:

$ sudo systemctl enable wg-quick@wg0.service

Конфигурация на лаптоп клиент

На лаптопа създайте конфигурационен файл /etc/wireguard/wg0.conf със същите настройки:

[Interface]
Address = 10.200.200.2/24
PrivateKey = <copy private key from wg-laptop-private.key>

[Peer]
PublicKey = <copy public key from wg-server-public.key>
AllowedIPs = 10.200.200.0/24
Endpoint = edgewalker:51820

Забележки:

  • Вместо edgewalker, трябва да посочите публичен IP или VPN сървър хост
  • Чрез настройка AllowedIPs на 10.200.200.0/24, ние използваме VPN само за достъп до вътрешната мрежа. Трафикът към всички останали IP адреси/сървъри ще продължи да преминава през „редовни“ отворени канали. Ще се използва и предварително конфигурираният DNS сървър на лаптопа.

За тестване и автоматично стартиране използваме същите команди wg-quick и systemd:

$ sudo wg-quick up wg0
$ sudo systemctl enable wg-quick@wg0.service

Настройка на клиента за Android-телефон

За телефона Android Създаваме много подобен конфигурационен файл (нека го наречем mobile.conf):

[Interface]
Address = 10.200.200.3/24
PrivateKey = <copy private key from wg-mobile-private.key>
DNS = 10.200.200.1
        
[Peer]
PublicKey = <copy public key from wg-server-public.key>
AllowedIPs = 0.0.0.0/0
Endpoint = edgewalker:51820

За разлика от конфигурацията на лаптопа, телефонът трябва да използва нашия VPN сървър като свой DNS сървър (низ DNS), както и да прекара целия трафик през VPN тунела (AllowedIPs = 0.0.0.0/0).

Вместо да копирате файла на мобилното си устройство, можете да го конвертирате в QR код:

$ sudo apt install qrencode
$ qrencode -t ansiutf8 < mobile.conf

QR кодът ще бъде изведен към конзолата като ASCII. Може да бъде сканиран от приложението. Android VPN и автоматично конфигуриране на VPN тунела.

Продукция

регулиране WireGuard просто вълшебно в сравнение с OpenVPN.

Източник: www.habr.com

Купете надежден хостинг за сайтове с DDoS защита, VPS VDS сървъри 🔥 Купете надежден уеб хостинг със защита от DDoS атаки, VPS VDS сървъри | ProHoster