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