LinGruby | 2020-03-06 08:01:30 UTC | #1
Witam
Jak od paru dni korzystam z powodzeniem z WireGuard VPN to postanowieniem pokazać jak zaprzęgnąć
go do pracy jak standardowy VPN, jako tunel pokazał już @DBanaszewski ;-)
potrzebujemy do tego jakiś serwer KVM + jakiś system niestety puki co tylko Linux lub BSD
ale ja pokarzę 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
https://www.wireguard.com/install/
https://research.kudelskisecurity.com/2017/06/07/installing-wireguard-the-modern-vpn/
A tu testy VPN
https://forum.lvlup.pro/t/pochwal-sie-jakie-masz-lacze-neta/650/134
mały dodatek z poglądowymi przykładami i bardziej szczegółowym opisem…
https://github.com/pirate/wireguard-docs
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 :-D
anon40709621 | 2018-11-23 20:56:55 UTC | #2
Dwa błędy się wtargnęły ;)
[quote=”LinGruby, post:1, topic:9020”]
namo wg0.conf
[/quote]
tutaj powinno być nano
[quote=”LinGruby, post:1, topic:9020”]
apt install wireguard-tols
[/quote]
[quote=”LinGruby, post:1, topic:9020”]
pacman -S wireguard-tols
[/quote]
tutaj powinno być wireguard-tools
A co do poradnika to przydatny :)
LinGruby | 2018-11-23 21:15:40 UTC | #3
no jeszcze parę znalazłem literówek :-D
IceMelt | 2018-11-23 21:55:12 UTC | #4
To i ja znajdę pare literówek :slight_smile:
[quote=”LinGruby, post:1, topic:9020”]
teraz musimy edytujemy plik wg0.config
[/quote]
edytować*
[quote=”LinGruby, post:1, topic:9020”]
gdzie tu gdzie jest IFACE
Ty wpisujesz swoj interfejs
[/quote]
Hm, może lepiej tam gdzie jest IFACE - wpisujemy swój interfejs
, bardziej oficjalniej i lepiej wygląda :wink:
[quote=”LinGruby, post:1, topic:9020”]
wypadało by
[/quote]
wypadałoby*
[quote=”LinGruby, post:1, topic:9020”]
WireGurd
[/quote]
WireGuard* (x2)
[quote=”LinGruby, post:1, topic:9020”]
dział
[/quote]
WireGuard działa*
[quote=”LinGruby, post:1, topic:9020”]
teraz jak chcemy u klienta coby WireGuard startował sam po reboot
[/quote]
Jest jeszcze trochę
błędów z interpunkcją, ale myślę że tu nie ma co poprawiać ;)
Błędów w komendach nie znalazłem, ale poradnik przydatny.
:+1:
MTGmati | 2018-12-10 17:58:30 UTC | #5
Postąpiłem zgodnie z instrukcją instalacji, utworzyłem plik wg0.conf
oraz uzupełniłem wygenerowane klucze
w wyznaczone miejsca.
Uruchomiłem serwer oraz klienta, sprawdziłem status połączenia z wg show
, port, adresy oraz latest handshake - pobierana poprawnie. Problem polega na braku transferu ze strony klienta do serwera VPN. (port 5182
dodałem do whitelisty UDP oraz iptables przed uruchomieniem wyczyściłem).
LinGruby | 2018-12-10 18:16:17 UTC | #6
[quote=”MTGmati, post:5, topic:9020”]
(port 5182
dodałem do whitelisty UDP oraz iptables przed uruchomieniem wyczyściłem).
[/quote]
nigdy nie bawiłem się z whitelist UDP więc nie powiem czemu nie działa :-)
u mnie komunikacja jest w obie strony bez problemu…
a wszystko co jest w poradniku to robiłem u siebie ( tylko nie kombinowałem nic z whitelist )
a co do portu to może coś już wykorzystuje?
acz nie wiem czy coś może pracować jeszcze na porcie 5182
MTGmati | 2018-12-11 12:52:26 UTC | #7
Udało się, łącze działa poprawnie, mam jeszcze pytanie, ponieważ, kiedy używam clienta, (na drugim serwerze VPS) to połączenie przez IP PUBLIC Clienta jest zrywane i niedostępne. Pytanie brzmi, w jaki sposób mogę utworzyć blackdora
który pozwoli mi na połączenie do Clienta przez jego publiczny adres (aby odpowiadał na ping oraz połączenie ssh)?
LinGruby | 2018-12-11 21:14:54 UTC | #8
Dokładnie nie łapę o co Tobie chodzi ;-)
Ale z tego co widzę ( acz się domyślam ) to postawiłeś VPN:
VPS > VPS
Nie testowałem tego bo nie mam potrzeby puki co łączyć się do swojej sieci domowej która robi za Clienta a co do VPS na którym jest WG VPN to łączę się bez problemu czy to przez IP publiczne czy przez IP tunelowe i to po SSH
U mnie to połączenia działa cały czas client > serwer
z racji że cały czas siedzę na VPN ( z pewnych względów )
@MTGmati jak chciałeś mieć tylko tunel to trzeba było wykorzystać
https://forum.lvlup.pro/t/uzycie-wireguard-do-zabezpieczenia-ruchu-mysql-i-nie-tylko-pomiedzy-2-vps-kvm/8102
tunelowanie działa poprawnie bo sprawdzałem zanim postawiłem 100% VPN ;-)
A więcej szczegółów może znajdziesz na:
https://www.wireguard.com/
MTGmati | 2018-12-14 04:55:29 UTC | #9
[quote=”LinGruby, post:8, topic:9020”]
a co do VPS na którym jest WG VPN to łączę się bez problemu czy to przez IP publiczne czy przez IP tunelowe i to po SSH
[/quote]
Tak z tym też nie mam problemu, połączenie pomiędzy Clientem a VPNem lub JA -> VPN działa, pytanie brzmi jak mogę uzyskać dostęp do klienta nie przez połączenie LAN tylko JA -> VPS(Client)
LinGruby | 2018-12-12 01:18:48 UTC | #10
To znaczy u mnie jest tak
JA ( client ) --> > VPS ( VPN serwer ) // tak u mnie wygląda
nie łączyłem dwóch VPS bo i po co ( jeden VPS spełnia jedną rolę / drugi VPS spełnia inną rołę )
no chyba że nie łapę ( bo akurat nad czymś innym pracuję ) i myśli mam rozbiegane ( czasu brak )
LinGruby | 2018-12-13 09:00:03 UTC | #12
[quote=”MTGmati, post:11, topic:9020”]
a istnieje możliwość wykluczenia portu/ów z tunelowania?
[/quote]
nie testowałem ma robić jako VPN i robi…
no na to to może znajdziesz odpowiedź niżej ;-)
[quote=”LinGruby, post:8, topic:9020”]
A więcej szczegółów może znajdziesz na:
https://www.wireguard.com/
[/quote]
LinGruby | 2020-03-06 08:04:30 UTC | #13
mały dodatek na końcu poradnika…
Axerr | 2022-03-02 09:19:31 UTC | #15
[quote=”LinGruby, post:1, topic:9020”]
puki
[/quote]
póki*
musicgames_tv | 2022-04-26 12:18:44 UTC | #16
Gut