Поставување едноставна VPN мрежа со WireGuard и Raspberry Pi како сервер

Од WireGuard ќе стане дел идно јадро Linux 5.6, решив да видам како најдобро да ја интегрирам оваа VPN со мојата LTE рутер/пристапна точка на Raspberry Pi.

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

  • Raspberry Pi 3 со LTE модул и јавна IP адреса. Тука ќе има VPN сервер (во натамошниот текст во текстот се нарекува edgewalker)
  • Телефонот е вклучен Android, кој мора да користи VPN за сите комуникации
  • Лаптоп Linux, кој треба да користи VPN само во рамките на мрежата

Секој уред што се поврзува со VPN мора да може да се поврзе со сите други уреди. На пример, телефонот треба да може да се поврзе со веб-сервер на лаптоп ако двата уреди се дел од VPN мрежа. Ако поставувањето се испостави дека е прилично едноставно, тогаш можете да размислите за поврзување на работната површина со VPN (преку етернет).

Имајќи предвид дека жичните и безжичните врски стануваат се помалку и помалку безбедни со текот на времето (насочени напади, Напад на пукање на KRACK WPA2 и Напад од змеј крв против 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