Witam
Jak od prawie dwóch miesięcy korzystam z powodzeniem z WireGuard VPN to postanowieniem pokazać jak zaprzęgnąć
go do pracy jak standardowy VPN
potrzebujemy do tego jakiś serwer KVM + jakiś system niestety póki co tylko Linux lub BSD
ale ja pokażę dla pary Linux - Linux
Instalacja Serwera WireGuard
Czyli na początku musimy zaktualizować system na KVM
dla systemów Ubuntu Serwer wszystkie komendy dla konta root:
apt update && apt upgrade
potem instalujemy potrzebne nam pakiety:
apt install software-properties-common python-software-properties
add-apt-repository ppa:wireguard/wireguard
apt update
apt install wireguard-tools wireguard-dkms
zatwierdzamy jak jest coś do zatwierdzenia
przechodzimy teraz do właściwej konfiguracji a więc idziemy do katalogu
cd /etc/wireguard
tam wykonujemy następujące komendy generujemy potrzebne nam klucze
umask 077
wg genkey | tee privatekey | wg pubkey > publickey
potem musimy te klucze zapisać bo będą potrzebne w dalszej części konfiguracji
cat privatekey
cat publickey
najlepiej zapisać żeby nie zginęły
teraz edytujemy plik wg0.config
nano wg0.conf
i dodajemy następującą zawartość
[Interface]
Address = 10.168.3.1/24
SaveConfig = true
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o IFACE -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o IFACE -j MASQUERADE
ListenPort = 51820
PrivateKey = klucz serwera
[Peer]
PublicKey = klucz klienta
AllowedIPs = 10.168.3.2/32
tu gdzie jest IFACE
Ty wpisujesz swój interfejs
klucz klienta - będzie w sekcji gdzie będziemy instalować ustawienia dla klienta
Instalacja WireGuard u klienta
Jako że posiadam Arch Linux to komendy będą ale tego Linux’a
aktualizacja systemu
pacman -Syu
teraz instalujemy potrzebne paczki
pacman -S wireguard-tools wireguard-dkms
teraz tworzymy klucze przechodząc do
cd /etc/wireguard
a następnie
umask 077
wg genkey | tee privatekey | wg pubkey > publickey
edytujemy klucze
cat privatekey
cat publickey
zapisujemy i uzupełniamy na serwerze w privatekey
przechodzimy do edycji wg0.conf
nano wg0.conf
i dodajemy następującą zawartość
[Interface]
Address = 10.168.3.2/24
PostUp = echo nameserver dns | resolvconf -a tun.%i -m 0 -x
PostDown = resolvconf -d tun.%i
ListenPort = 51820
PrivateKey = klucz klienta
[Peer]
PublicKey = klucz serwera
AllowedIPs = 0.0.0.0/0
Endpoint = ip publiczne serwera:51820
tu gdzie jest dns
wpisujesz dns
z jakiego chcesz korzystać
To by było na tyle jeśli chodzi o konfigurację po stronie serwera i klienta
Ważne dla systemów Ubuntu pochodnych instalacja dla klienta jest taka sama jak dla serwera
No to teraz wypadało by wszystko odpalić a mianowicie
na serwerze
systemctl start wg-quick@wg0.service
żeby po jakimkolwiek reboot
serwer WireGuard wystartował sam
systemctl enable wg-quick@wg0.service
teraz sprawdzamy czy na serwerze działa poprawnie
systemctl status wg-quick@wg0.service
jeśli zobaczymy
● wg-quick@wg0.service - WireGuard via wg-quick(8) for wg0
Loaded: loaded (/lib/systemd/system/wg-quick@.service; enabled; vendor preset: enabled)
Active: active (exited) since sob 2018-11-17 19:01:49 CET; 1 day 15h ago
Docs: man:wg-quick(8)
man:wg(8)
https://www.wireguard.com/
https://www.wireguard.com/quickstart/
https://git.zx2c4.com/WireGuard/about/src/tools/man/wg-quick.8
https://git.zx2c4.com/WireGuard/about/src/tools/man/wg.8
Main PID: 712 (code=exited, status=0/SUCCESS)
lis 17 19:01:49 ip229 systemd[1]: Starting WireGuard via wg-quick(8) for wg0...
lis 17 19:01:49 ip229 wg-quick[712]: [#] ip link add wg0 type wireguard
lis 17 19:01:49 ip229 wg-quick[712]: [#] wg setconf wg0 /dev/fd/63
lis 17 19:01:49 ip229 wg-quick[712]: [#] ip address add 10.168.3.1/24 dev wg0
lis 17 19:01:49 ip229 wg-quick[712]: [#] ip link set mtu 1420 dev wg0
lis 17 19:01:49 ip229 wg-quick[712]: [#] ip link set wg0 up
lis 17 19:01:49 ip229 wg-quick[712]: [#] iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
lis 17 19:01:49 ip229 systemd[1]: Started WireGuard via wg-quick(8) for wg0.
znaczy że wszystko działa poprawnie
teraz jak chcemy u klienta żeby WireGuard startował sam po reboot
wykonujemy takie same komendy jak na serwerze
u mnie wygląda to tak
● wg-quick@wg0.service - WireGuard via wg-quick(8) for wg0
Loaded: loaded (/usr/lib/systemd/system/wg-quick@.service; enabled; vendor preset: disabled)
Active: active (exited) since Mon 2018-11-19 10:47:52 CET; 3s ago
Docs: man:wg-quick(8)
man:wg(8)
https://www.wireguard.com/
https://www.wireguard.com/quickstart/
https://git.zx2c4.com/WireGuard/about/src/tools/man/wg-quick.8
https://git.zx2c4.com/WireGuard/about/src/tools/man/wg.8
Process: 32478 ExecStop=/usr/bin/wg-quick down wg0 (code=exited, status=0/SUCCESS)
Process: 32542 ExecStart=/usr/bin/wg-quick up wg0 (code=exited, status=0/SUCCESS)
Main PID: 32542 (code=exited, status=0/SUCCESS)
lis 19 10:47:52 arch-bspwm wg-quick[32542]: [#] wg setconf wg0 /dev/fd/63
lis 19 10:47:52 arch-bspwm wg-quick[32542]: [#] ip address add 10.168.3.2/24 dev wg0
lis 19 10:47:52 arch-bspwm wg-quick[32542]: [#] ip link set mtu 1420 dev wg0
lis 19 10:47:52 arch-bspwm wg-quick[32542]: [#] ip link set wg0 up
lis 19 10:47:52 arch-bspwm wg-quick[32542]: [#] wg set wg0 fwmark 51820
lis 19 10:47:52 arch-bspwm wg-quick[32542]: [#] ip -4 route add 0.0.0.0/0 dev wg0 table 51820
lis 19 10:47:52 arch-bspwm wg-quick[32542]: [#] ip -4 rule add not fwmark 51820 table 51820
lis 19 10:47:52 arch-bspwm wg-quick[32542]: [#] ip -4 rule add table main suppress_prefixlength 0
lis 19 10:47:52 arch-bspwm wg-quick[32542]: [#] echo nameserver 1.0.0.1 | resolvconf -a tun.wg0 -m 0 -x
no chyba że ktoś nie chce żeby WireGuard starował u klienta samoczynnie to wystarczy
wg-quick up wg0
a jak chcemy wyłączyć vpn
wg-quick down wg0
Teraz w prosty sposób możemy sprawdzić czy WireGuard działa na serwerze jak i u klienta
na serwerze
wg show
interface: wg0
public key: klucz serwera
private key: (hidden)
listening port: 51820
peer: klucz klienta
endpoint: ip klienta:51820
allowed ips: 10.168.3.2/32
latest handshake: 17 seconds ago
transfer: 40.45 KiB received, 39.16 KiB sent
u klienta
wg show
interface: wg0
public key: klucz klienta
private key: (hidden)
listening port: 51820
fwmark: 0xca6c
peer: klucz serwera
endpoint: ip publiczne serwera:51820
allowed ips: 0.0.0.0/0
latest handshake: 16 seconds ago
transfer: 2.50 MiB received, 870.43 KiB sent
a żeby zobaczyć jeszcze w necie przechodzimy na:
http://whatismyip.network/proxy-check-tool-detect-how-isp-transparent/
jeśli zobaczymy IP serwera KVM
i coś takiego
A Proxy, VPN IP or TOR exit Node was detected.
Your real IP address is hidden.
For more info, leave a comment below.
to jest wszystko ok.
Czym się posiłkowałem w pisaniu poradnika
Installing WireGuard, the Modern VPN – Kudelski Security Research
mały dodatek z poglądowymi przykładami i bardziej szczegółowym opisem…
Od siebie dodam że jest szybszy od OpenVPN z którego korzystałem bez przerwy od ponad 2 lat
Pozdrawiam i życzę miłego korzystania