Поставување на едноставен 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

На мојот Андроид телефон ја инсталирав апликацијата WireGuardVPN од официјалниот каталог на 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 [email protected]

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

Направете конфигурациска датотека на лаптоп /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 [email protected]

Поставување клиент на телефон со 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

Додадете коментар