Wireguard staje się ostatnio coraz popularniejszy, a wszelkie testy wskazują na dużo większą wydajność względem OpenVPN.
Aby zainstalować pakiet na systemie Raspbian mamy dwa wyjścia – dodanie repozytorium 'unstable' lub kompilacja ze źródeł.
Łatwiejsza droga to repozytorium, poniżej instrukcja jak dodać repo:
Najwygodniej będzie działać przez chwilę z konta root:
$ sudo su -
Dodajemy linię ze źródłem pakietów niestabilnych:# echo "deb http://deb.debian.org/debian/ unstable main" > /etc/apt/sources.list.d/unstable.list
Nadajemy pakietom z tego repozytorium niższy priorytet – będą z niego pobierane tylko paczki nieobecne w gałęzi stable.# printf 'Package: *\nPin: release a=unstable\nPin-Priority: 90\n' > /etc/apt/preferences.d/limit-unstable
Dodajemy klucz do repo:# wget -O - https://ftp-master.debian.org/keys/archive-key-$(lsb_release -sr).asc | sudo apt-key add -
Wychodzimy z roota, aktualizujemy listę pakietów, i instalujemy wireguarda# exit
$ sudo apt update
$ sudo apt install wireguard wireguard-tools qrencode
Po instalacji sprawdzamy status przekazywania pakietów IP w systemie:sudo sysctl net.ipv4.ip_forward
Jeśli zwrócona zostanie wartość „1
” jak poniżej, to możemy działać dalej.
net.ipv4.ip_forward = 1
Jeśli natomiast otrzymamy „0
” to musimy aktywować przekazywanie. Można to zrobić na dwa sposoby:$ sudo sysctl -w net.ipv4.ip_forward=1
$ sudo echo 0 > /proc/sys/net/ipv4/ip_forward
Po tej operacji obowiązkowy restart:$ sudo reboot
Ok, czas na konfigurację samego wireguarda. Zaczynamy od wygenerowania dwóch par kluczy – dla serwera i klienta (peer). Ponownie wygodnie będzie działać nam na koncie root.
Jeśli przewidujesz więcej urządzeń, możesz wygenerować więcej kluczy „peer”$ sudo su -
# cd /etc/wireguard
# umask 077
# wg genkey | tee server_privkey | wg pubkey > server_pubkey
# wg genkey | tee peer1_privkey | wg pubkey > peer1_pubkey
Tworzymy plik konfiguracyjny:# nano /etc/wireguard/wg0.conf
i wklejamy poniższą konfigurację:
[Interface]
Address = 10.8.0.1/24
ListenPort = 51820
PrivateKey = <TU WKLEJ KLUCZ server_privkey> (wynik komendy cat server_privkey
)
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
[Peer]
#Peer-1
PublicKey = <TU WKLEJ KLUCZ
peer1_pubkey> (wynik komendy cat peer1_pubkey)
AllowedIPs = 10.8.0.2/32
#PersistentkeepAlive = 120
Do konfiguracji trzeba wkleić zawartość kluczy wygenerowanych wcześniej.
Klucz z pliku wyciągamy po prostu za pomocą cat
Zwróć uwagę, że dla klienta podajemy klucz publiczny, a dla interfejsu serwera klucz prywatny.
Można również zmienić port na którym będzie nasłuchiwał serwer VPN. Ten port należy przekierować na routerze dla protokołu UDP.
Następnie konfiguracja klienta (peer1):# nano /etc/wireguard/peer1.conf
Poniżej zawartość pliku:
[Interface] Address = 10.8.0.2/32
DNS = 192.168.x.x
PrivateKey = peer1_privkey
[Peer] PublicKey = server_pubkey
Endpoint = {publiczne IP/adres DDNS}:51820
AllowedIPs = 0.0.0.0/0, ::/0
PersistentkeepAlive = 120
Tutaj również wklejamy zawartość kluczy. Oprócz tego podajemy adres serwera DNS (IP routera lub np. PiHole jeśli używamy) oraz publiczne IP serwera, lub adres dyndns, jeśli mamy zmienne IP.
Zabezpieczamy pliki konfiguracyjne obcinając prawa dostępu:# chown -R root:root /etc/wireguard/
# chmod -R og-rwx /etc/wireguard/*
Aktywujemy naszą konfigurację VPN jako usługę systemową:systemctl enable wg-quick@wg0
I startujemy serwer:$ sudo wg-quick up wg0
Pozostała nam konfiguracja klienta.
Dla laptopa możemy przenieść plik z konfiguracją klienta, natomiast telefon można łatwo skofigurować za pomocą kodu QR, który można wygenerować za pomocą qrencode, które zainstalowaliśmy już wcześniej. 🙂# qrencode -t ansiutf8 < /etc/wireguard/peer1.conf
Kod skanujemy w appce wireguard na telefonie i konfiguracja zaimportowana. 🙂