DBanaszewski | 2018-09-01 19:26:53 UTC | #1
WireGuard to aplikacja open-source, który implementuje techniki wirtualnej sieci prywatnej (VPN) w celu tworzenia bezpiecznych połączeń typu point to point
(nie mylić z peer to peer
) w różnych konfiguracjach.
Poradnik został wykonany na VPS KVM z Ubuntu 16.04.
Aby móc z tego korzystać musisz posiadać MINIMUM 2 VPSy KVM.
Zakładam, że posiadasz już skonfigurowany serwer MySQL (lub pochodny - np. MariaDB).
Jeżeli chcesz używać WireGuard do zabezpieczenia ruchu innej aplikacji - postępuj zgodnie z poniższą instrukcją, ale zamiast konfigurowania serwera MySQL, skonfiguruj swoją aplikację.
Przed każdą komendą jest sudo
. Jeżeli wszystkie komendy wykonujesz z konta root
(co jest niezalecane), możesz ignorować ten prefix.
Przydałoby się zaktualizować system i pakiety, więc…
sudo apt-get update
sudo apt-get upgrade
Przydałyby się pewne komendy, które ułatwią nam pracę.
Wpisz komendę sudo add-apt-repository
.
Jeżeli otrzymasz ten wynik: sudo: add-apt-repository: command not found
przejdź do kroku 2.1.
Jeżeli otrzymasz ten wynik: Error: need a repository as argument
przejdź do kroku 3.
Nie posiadasz komend, które ułatwią Ci pracę oraz umożliwią instalację wymaganych paczek.
Aby zainstalować to ułatwienie, wpisz:
sudo apt-get install software-properties-common python-software-properties
Po instalacji wróć do kroku 2.
Posiadasz ułatwienie, które nam pomoże pracować.
Możemy przejść do instalacji.
Najpierw musimy dodać repozytoria WireGuard, czyli:
sudo add-apt-repository ppa:wireguard/wireguard
Potwierdzamy przyjęcie klucza GPG przyciskiem ENTER
.
Teraz musimy ponownie zaktualizować repozytoria przy pomocy:
sudo apt-get update
Repozytoria dodane, teraz instalujemy ową aplikację.
sudo apt-get install wireguard-dkms wireguard-tools
Podczas instalacji musimy potwierdzić chęć instalacji podając Y
lub T
(w zależności od języka na VPSie).
Po zainstalowaniu przechodzimy dalej.
Serwer WireGuard został zainstalowany.
Przechodzimy do folderu owej aplikacji:
sudo -i
cd /etc/wireguard/
Owa aplikacja używa specjalnych kluczy do szyfrowania połączenia, więc musimy takowy wygenerować.
Wszystkie oba klucze generujemy przy pomocy:
umask 077
wg genkey | tee privatekey | wg pubkey > publickey
Po wygenerowaniu odczytaj klucze przy pomocy:
sudo cat privatekey
sudo cat publickey
Zapisz je w notatniku! Przydadzą się za kilka chwil.
Idziemy dalej.
Tutaj potrzebujesz drugiego VPSa.
Na VPSie nr 2 wykonaj wszystkie kroki od 1 do 5.
Mam nadzieję, że zapisałeś/aś sobie klucze z VPS #1 i #2.
Będą bardzo potrzebne.
Teraz edytujemy konfigurację na serwerze nr 1. Ja użyję do tego vim
.
Uruchamiamy edytor (musisz być w folderze aplikacji):
sudo vim wg0.conf
Do tego pliku dodajemy następującą treść:
[Interface]
Address = 192.168.2.1
PrivateKey = KLUCZ PRYWATNY #1
ListenPort = 5555
[Peer]
PublicKey = KLUCZ PUBLICZNY #2
AllowedIPs = 192.168.2.2/32
Wyjaśniam:
- KLUCZ PRYWATNY #1
to klucz privatekey
z VPSa nr 1.
- KLUCZ PUBLICZNY #2
to klucz publickey
z VPSa nr 2.
Po uzupełnieniu kluczy, klikamy przycisk ESC
i wpisujemy :wq
.
Konfiguracja na serwerze nr 1 została zapisana.
Teraz edytujemy konfigurację na serwerze nr 2.
Uruchamiamy edytor (musisz być w folderze aplikacji):
text
sudo vim wg0.conf
Do tego pliku dodajemy następującą treść:
[Interface]
Address = 192.168.2.2
PrivateKey = KLUCZ PRYWATNY #2
ListenPort = 5555
[Peer]
PublicKey = KLUCZ PUBLICZNY #1
Endpoint = ADRES IP SERWERA NR 1:5555
AllowedIPs = 192.168.2.1/24
PersistentKeepalive = 25
Wyjaśniam:
- KLUCZ PRYWATNY #2
to klucz privatekey
z VPSa nr 2.
- KLUCZ PUBLICZNY #1
to klucz publickey
z VPSa nr 1.
Po uzupełnieniu kluczy, klikamy przycisk ESC
i wpisujemy :wq
.
Konfiguracja na serwerze nr 2 została zapisana.
Idziemy dalej.
Teraz możemy uruchomić naszego WireGuard’a.
Zrobimy to przy pomocy:
sudo systemctl start wg-quick@wg0
Wykonaj tę komendę na serwerze nr 1 i 2.
Ta komenda uruchamia naszego VPNa jednorazowo.
Aby aplikacja uruchamiała się razem z systemem musimy wpisać:
sudo systemctl enable wg-quick@wg0
Idziemy dalej!
Teraz możemy przetestować, czy istnieje połączenie pomiędzy VPSami.
Możemy to sprawdzić pingując adresy IP z VPSów.
U mnie to tak wygląda:
Ping: serwer WG do klient WG
Ping: klient WG do serwer WG
Widzimy, że połączenie istnieje.
To sukces!
Skoro mamy już połączenie, przydałoby się skonfigurować bazę MySQL.
Ja osobiście używam MariaDB.
Aby skonfigurować serwer MariaDB musimy edytować plik konfiguracyjny przy pomocy:
sudo vim /etc/mysql/mariadb.conf.d/50-server.cnf
Edytujemy linijkę (nie musi być ona taka sama, zamiast 127.0.0.1
może być 0.0.0.0
lub linijka będzie komentarzem):
bind-address = 127.0.0.1
na podaną niżej:
bind-address = 192.168.2.1
Klikamy przycisk ESC
i wpisujemy :wq
.
Teraz przeładujemy serwer MariaDB przy pomocy:
sudo service mysql restart
Od teraz nasza baza danych jest dostępna tylko poprzez WireGuard - mamy pewność, że nikt z zewnątrz nie będzie mógł się połączyć z bazą itp.
MySQL na VPSie #1, phpMyAdmin na VPSie #2 - działa? Działa i jest bezpiecznie :slight_smile:
PS. Moje oko już nie widzi błędów, ale przejrzyj poradnik i daj znać ;)
LinGruby | 2018-11-17 18:37:56 UTC | #2
https://forum.lvlup.pro/t/pochwal-sie-jakie-masz-lacze-neta/650/134
Back | 2018-12-12 03:31:34 UTC | #3
Kiedy włączyłem klienta to wywaliło mnie z putty. Co zrobić abym mógł połączyć przez putty?
Kicpro | 2020-11-04 17:23:18 UTC | #4
Jak mógłbym teraz dodać w dockerze IP tego 2 vps’a?
Glenor | 2021-04-16 23:58:50 UTC | #5
Mogę połączyć tak 3 serwery? Czy tylko dwa?