Бидејќи WireGuard
Оборудование
- Raspberry Pi 3 со LTE модул и јавна IP адреса. Тука ќе има VPN сервер (во натамошниот текст во текстот се нарекува edgewalker)
- Телефон со Android што мора да користи VPN за сите комуникации
- Лаптоп Linux што треба да користи само VPN во мрежата
Секој уред што се поврзува со VPN мора да може да се поврзе со сите други уреди. На пример, телефонот треба да може да се поврзе со веб-сервер на лаптоп ако двата уреди се дел од VPN мрежа. Ако поставувањето се испостави дека е прилично едноставно, тогаш можете да размислите за поврзување на работната површина со VPN (преку етернет).
Имајќи предвид дека жичните и безжичните врски стануваат се помалку и помалку безбедни со текот на времето (
Инсталација на софтвер
WireGuard обезбедува
Го имам најновиот 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
На мојот Андроид телефон ја инсталирав апликацијата
Инсталација на клучеви
За автентикација од врсници, 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