Jak skonfigurować serwer i klient WireGuard VPN na Ubuntu 20.04?

Jak skonfigurować serwer i klient WireGuard VPN na Ubuntu 20.04?

Skonfiguruj samoobsługową sieć VPN za pomocą Wireguard

VPN (Virtual Private Network) pozwala użytkownikowi na podłączenie do sieci prywatnej zdalnie jakby komputer użytkownika został podłączony bezpośrednio do sieci prywatnej. Technologia została początkowo opracowana w celu umożliwienia zdalnego dostępu do wewnętrznej sieci prywatnej firmy dla pracowników nieobecnych w lokalizacji sieci wewnętrznej.

Serwer VPN jest wdrażany w lokalizacji sieci wewnętrznej. Serwer ten znajduje się w sieci publicznej i pracownik może uzyskać do niego dostęp za pomocą klienta VPN. Do połączenia z serwerem VPN potrzebne jest uwierzytelnienie. Komunikacja między serwerem VPN a klientem VPN jest zabezpieczona za pomocą protokołu tunelowania. Pamiętaj, że ta komunikacja może być szyfrowana lub nie, ale zwykle w większości protokołów VPN jest zaszyfrowana.

Innym zastosowaniem VPN jest uzyskanie anonimowości podczas uzyskiwania dostępu do Internetu lub obchodzenie ograniczeń geograficznych nałożonych podczas uzyskiwania dostępu do niektórych stron internetowych. W takich przypadkach sieć, z którą użytkownik chce się połączyć, nie jest siecią prywatną, lecz Internetem.

Wiele protokołów VPN zostało opracowanych przez lata. Protokoły te wykorzystują różne protokoły tunelowania i algorytmy szyfrowania do komunikacji między serwerem a klientem.

Jednym z takich protokołów, który ostatnio zyskuje szerokie zastosowanie, jest Wireguard . Wireguard jest lżejszy, prostszy i bardziej wydajny niż dobrze znane, tradycyjnie używane protokoły VPN, takie jak OpenVPN, IPSec. Jest już zaimplementowany w systemach Windows, Mac OS i wielu dystrybucjach Linuksa. W Linuksie jest zaimplementowany jako moduł jądra. Jest dostępny w oficjalnych repozytoriach Ubuntu 20.04.

W tym artykule zobaczymy, jak skonfigurować serwer i klient Wireguard VPN w Ubuntu 20.04.

Instalacja

W tym artykule konfiguruję serwer Wireguard na kliencie Linode i Wireguard Ubuntu 20.04 na moim lokalnym komputerze z Ubuntu 20.04.

Pakiet wireguardinstaluje zarówno serwer Wireguard, jak i klienta. Uruchom następujące polecenie zarówno na serwerze, jak i na komputerze klienta.

sudo apt install wireguard

Konfiguracja serwera

Klucze bezpieczeństwa

Musimy wygenerować zestaw par kluczy publiczny/prywatny w celu uwierzytelnienia i zabezpieczenia połączenia Wireguard. Można to zrobić za pomocą następujących poleceń:

sudo su
cd /etc/wireguard
umask 077
wg genkey | tee private_key | wg pubkey > public_key

Zauważ, że wszystkie zadania konfiguracyjne wykonujemy jako superużytkownik. Powodem jest to, że dostęp do katalogu /etc/wireguardjest zablokowany dla zwykłych użytkowników, a dostępu do katalogu nie można uzyskać tylko z uprawnieniami sudo dla zwykłego użytkownika.

Następnie ustawiamy maskę tworzenia pliku na077 . Oznacza to, że za każdym razem, gdy nowy plik zostanie utworzony w tym folderze przez dowolny proces, jego uprawnienia zostaną automatycznie zamaskowane numerem 077. Np. jeśli w tym folderze tworzony jest plik z uprawnieniami 777, jest on automatycznie maskowany, a uprawnienia faktycznie wynoszą 700. Odbywa się to w taki sposób, że tylko właściciel pliku ma wszystkie uprawnienia do pliku, a wszyscy inni nie mają uprawnień.

W następnym wierszu generujemy parę kluczy publiczny/prywatny dla serwera. Są one zapisywane w plikach private_keyi public_key. Aby wyświetlić klucze, uruchom:

cat private_key
cat public_key

Jak skonfigurować serwer i klient WireGuard VPN na Ubuntu 20.04?

Skopiuj klucz prywatny, potrzebujemy go w następnym kroku.

Uwaga: nigdy nie udostępniaj swojego klucza prywatnego publicznie!

Plik konfiguracyjny

Stwórzmy plik konfiguracyjny dla Wireguard Server. Możesz wybrać dowolną nazwę pliku. wg0.confW tym przykładzie utworzymy plik .

vim wg0.conf

Dodaj następujące elementy do pliku.

[Interface]
Address = 10.20.43.1/24
SaveConfig = true
ListenPort = 51190
PrivateKey = 

PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o  -j MASQUERADE; ip6tables -A FORWARD -i wg0 -j ACCEPT; ip6tables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE; ip6tables -D FORWARD -i wg0 -j ACCEPT; ip6tables -t nat -D POSTROUTING -o  -j MASQUERADE

Wklej klucz prywatny, który wcześniej skopiowaliśmy do wiersza 5 w powyższym kodzie.

Musimy skonfigurować Wireguard w innej (wirtualnej) podsieci niż adres IP serwera. Tutaj użyłem 10.20.43.1 dla serwera i użyję 10.20.43.2 dla klienta. Można tutaj użyć dowolnej podsieci. Aby uzyskać adres IP serwera i interfejsu, uruchom:

ifconfig

Jak skonfigurować serwer i klient WireGuard VPN na Ubuntu 20.04?

Podświetlona część to adres IP

Zanotuj adres IP serwera. Jest to wymagane podczas konfiguracji klienta.

Interfejs używany przez serwer, jak widać na powyższym obrazku, to eth0. Nazwa interfejsu może się różnić w zależności od sieci użytkownika, może to być wlan0lub wlp2s0w przypadku, gdy użytkownik jest podłączony do sieci WiFi za pomocą karty bezprzewodowej.

Zastąp in PostUpi PostDownswoim interfejsem; w tym przykładzie jest to eth0. PostUpa PostDowndyrektywy są używane do określenia, które polecenia powinny być uruchamiane, gdy serwer jest odpowiednio uruchamiany i zatrzymywany. W naszym przykładzie używamy iptablespolecenia, aby ustawić reguły IP w taki sposób, aby adres IP serwera był współdzielony przez klientów. Zasady zostaną usunięte po zatrzymaniu serwera.

Zapisz i wyjdź z pliku. Podczas korzystania z vima naciśnij Esc , a następnie wpisz :wqi naciśnij Enter, aby zapisać i wyjść.

Jeśli używasz ufwzapory na serwerze, musimy zezwolić na połączenia UDP z portem serwera VPN, 51190.

ufw allow 51190/udp

Uruchomienie usługi

Teraz po zakończeniu konfiguracji możemy uruchomić usługę Wireguard VPN.

Aby umożliwić uruchamianie usługi w czasie rozruchu, uruchom:

systemctl enable [email protected]

Zauważ, że tutaj wg0jest nazwa pliku konfiguracyjnego.

Aby uruchomić usługę, uruchom:

service [email protected] start

Sprawdź , czy usługa została pomyślnie uruchomiona:

service [email protected] status

Jak skonfigurować serwer i klient WireGuard VPN na Ubuntu 20.04?

Sprawdź, czy interfejs, który utworzyliśmy w pliku konfiguracyjnym, został uruchomiony za pomocą polecenia IP.

ip a show wg0

Jak skonfigurować serwer i klient WireGuard VPN na Ubuntu 20.04?

Serwer VPN Wireguard jest teraz skonfigurowany i uruchomiony. Skonfigurujmy teraz klienta.

Konfiguracja klienta

Konfiguracja klienta dla Wireguard jest mniej więcej taka sama jak konfiguracja serwera. Generujemy klucze dla klienta, a następnie tworzymy plik konfiguracyjny.

Klucze bezpieczeństwa

Aby wygenerować parę kluczy publiczny/prywatny dla klienta, uruchom:

sudo su
cd /etc/wireguard
umask 077
wg genkey | tee client_private_key | wg pubkey > client_public_key

Klucze publiczny i prywatny dla klienta są teraz generowane odpowiednio w plikach client_private_keyi client_public_key.

Sprawdź, czy zostały utworzone, używając catpolecenia.

cat client_private_key
cat client_public_key

Skopiuj wyświetlony klucz prywatny, ponieważ musimy go dodać do pliku konfiguracyjnego klienta.

Plik konfiguracyjny

Utwórz plik konfiguracyjny o dowolnej nazwie. Stworzymy go z nazwą wg0-clientdla tego przykładu.

vim wg0-client.conf

Dodaj następującą konfigurację.

[Interface]
# IP Address and Private Key of the Client
Address = 10.20.43.2/24
PrivateKey = 

[Peer]
# Public key, IP Address and Port of the Server
PublicKey = 
Endpoint = :51190
AllowedIPs = 0.0.0.0/0, ::/0

Wprowadź adres podsieci klienta. Jak opisano wcześniej, 10.20.43.2 w tym przykładzie używamy dla klienta.

Dodaj klucz prywatny klienta wygenerowany w poprzednim kroku w wierszu 4 w powyższym kodzie konfiguracyjnym.

W sekcji „Peer” dodajemy informacje o serwerze Wireguard VPN, z którym chcemy się połączyć.

Wprowadź klucz publiczny serwera. Wpisz adres IP serwera , który wcześniej odnotowaliśmy, oraz port w podanym formacie względem Endpoint . Jest to port, który określiliśmy w pliku konfiguracyjnym serwera i na którym uruchomiona została usługa VPN na serwerze.

Dozwolone adresy IP należy wprowadzać zgodnie z podanymi (0.0.0.0/0), aby każde żądanie dotyczące dynamicznego publicznego adresu IP używanego przez klienta zawsze było przekazywane do serwera VPN.

Zapisz i wyjdź z pliku. Podczas korzystania z vima naciśnij Esc , a następnie wpisz :wqi naciśnij Enter, aby zapisać i wyjść.

Włącz usługę klienta, aby działała przy każdym uruchomieniu i uruchom ją.

systemctl enable [email protected]
service [email protected] start

Sprawdź, czy usługa została uruchomiona.

service [email protected] status

Jak skonfigurować serwer i klient WireGuard VPN na Ubuntu 20.04?

Dodawanie peera do serwera

Teraz mamy uruchomiony serwer i klient VPN. Jednak bezpieczny tunel między nimi nie zostanie ustanowiony, chyba że nawiążemy połączenie peer-to-peer między serwerem a klientem.

Wróć na serwer. Najpierw zatrzymaj usługę VPN .

service [email protected] stop

Następnie otwórz plik konfiguracyjny, aby dodać konfigurację dla peera (klienta).

vim /etc/wireguard/wg0.conf

Dołącz do pliku następujące wiersze.

[Peer]
PublicKey = 
AllowedIPs = 10.20.43.2/32

Teraz ponownie uruchom usługę VPN .

service [email protected] start

Otóż ​​to! To jest cała konfiguracja potrzebna do konfiguracji klienta i serwera Wireguard VPN. Przetestujmy teraz naszą sieć VPN.

Testowanie VPN

Najpierw wykonajmy prosty ping od klienta do serwera, aby upewnić się, że komunikacja tunelowa VPN działa. Uruchom następujące na kliencie :

ping 10.20.43.1

Jak skonfigurować serwer i klient WireGuard VPN na Ubuntu 20.04?

Następnie otwórz przeglądarkę internetową i otwórz dowolną witrynę internetową, aby sprawdzić, czy możesz połączyć się z Internetem z komputera klienckiego. Możesz także sprawdzić połączenie internetowe z wiersza poleceń, używając wget.

wget 

Jak skonfigurować serwer i klient WireGuard VPN na Ubuntu 20.04?

Teraz sprawdziliśmy łączność tunelową i łączność internetową. Jeśli oba działają, musimy teraz upewnić się, że cały ruch internetowy przychodzący do klienta przechodzi przez serwer.

W tym celu wystarczy sprawdzić adres IP klienta widziany przez Internet. Jednym ze sposobów na to jest przejście do whatsmyip.org . Albo z wiersza poleceń możemy wysłać zapytanie do innej podobnej usługi o nazwie IP info, używając Curl.

Uruchom następujące na komputerze klienta

curl https://ipinfo.io/ip

Jak skonfigurować serwer i klient WireGuard VPN na Ubuntu 20.04?

Tak. Jest to publiczny adres IP Linode, na którym znajduje się serwer VPN. W ten sposób uzyskuje się anonimowość za pomocą VPN, ponieważ teraz w całym Internecie widoczny jest adres IP serwera VPN, a nie komputera.

Wniosek

Łatwość konfiguracji jest jedną z najważniejszych zalet Wireguard w porównaniu z tradycyjnym oprogramowaniem VPN, takim jak OpenVPN, które wymaga wyższego poziomu znajomości sieci i routingu, aby skonfigurować. Jednak brakuje szczegółowej oficjalnej dokumentacji dla Wireguard, co może powodować problemy, jeśli twoja konfiguracja Wireguard zgłasza błędy lub nie działa zgodnie z oczekiwaniami.

Niemniej jednak Wireguard jest doskonałym wyborem, jeśli chcesz mieć VPN z własnym hostem do bezpiecznej komunikacji przez Internet. Aby dowiedzieć się więcej o Wireguard oraz protokołach i technologiach, z których korzysta, możesz odwiedzić oficjalną stronę .


Jak zainstalować serwer FTP na Ubuntu w 5 krokach

Jak zainstalować serwer FTP na Ubuntu w 5 krokach

Jeśli konfigurujesz serwer Linux, będziesz potrzebować dostępu do FTP. Oznacza to najpierw zainstalowanie serwera FTP w systemie Linux. Powinna to być jedna z pierwszych rzeczy, które robisz po zainstalowaniu systemu operacyjnego serwera.

Jak naprawić make: polecenie nie zostało znalezione Błąd w Ubuntu

Jak naprawić make: polecenie nie zostało znalezione Błąd w Ubuntu

Polecenie make jest prawdopodobnie jednym z najczęściej używanych poleceń w ekosystemie Linuksa. To polecenie służy do budowania i kompilowania programów bezpośrednio z kodu źródłowego.

10 najlepszych dystrybucji Linuksa dla programistów

10 najlepszych dystrybucji Linuksa dla programistów

Chociaż Linux może nie być ulubionym systemem operacyjnym dla zwykłych użytkowników, jest to wybór dla większości programistów i programistów. Linux jest bardziej praktycznym systemem operacyjnym, który został specjalnie zaprojektowany z myślą o programowaniu i programistach.

Jak zainstalować Git na Ubuntu 20.04 LTS?

Jak zainstalować Git na Ubuntu 20.04 LTS?

Jedna z pierwszych rzeczy, które powinieneś zainstalować na swoim komputerze z systemem Linux

Jak zaktualizować Firefoksa z terminala na komputerach z systemem Ubuntu Linux?

Jak zaktualizować Firefoksa z terminala na komputerach z systemem Ubuntu Linux?

Dowiedz się, jak zaktualizować Firefoksa z terminala na komputerze z systemem Ubuntu Linux

Jak zmienić hasło roota w Ubuntu 20.04

Jak zmienić hasło roota w Ubuntu 20.04

Ustaw, zresetuj i zmień hasło roota w Ubuntu 20.04

Jak włączyć SSH na Ubuntu 20.04

Jak włączyć SSH na Ubuntu 20.04

Bezpieczny dostęp do komputera Ubuntu z dowolnego miejsca

Jak zainstalować Notepadqq na Ubuntu 20.04, godną alternatywę dla Notepad ++?

Jak zainstalować Notepadqq na Ubuntu 20.04, godną alternatywę dla Notepad ++?

Szukasz godnej alternatywy dla Notepad ++ na Ubuntu? Nie szukaj dalej niż bezpłatna aplikacja Notepadqq

Jak zainstalować Google Chrome na Ubuntu 20.04

Jak zainstalować Google Chrome na Ubuntu 20.04

Szybki przewodnik po instalacji Google Chrome z wiersza poleceń na Ubuntu 20.04

Jak przenosić pliki systemu Linux za pomocą polecenia Mv?

Jak przenosić pliki systemu Linux za pomocą polecenia Mv?

Chociaż prawdopodobnie już wiesz, jak przenieść plik w systemie Linux za pomocą przeglądarki plików GUI, możesz się zastanawiać, czy w terminalu jest polecenie przenoszenia, które pozwala szybko przenosić pliki do różnych katalogów. Polecenie mv jest tym, którego potrzebujesz i jest łatwe w użyciu dzięki prostej składni i kilku opcjonalnym flagom bezpieczeństwa.

10 najlepszych dystrybucji Linuksa opartych na Debianie

10 najlepszych dystrybucji Linuksa opartych na Debianie

Standardowy Debian i jego popularna wersja Ubuntu to świetne, wszechstronne opcje dla systemu Linux, ale jeśli masz bardziej wyspecjalizowane potrzeby, możesz chcieć alternatywy dla Debiana.

Jak stworzyć użytkownika Sudo na Ubuntu 20.04 LTS

Jak stworzyć użytkownika Sudo na Ubuntu 20.04 LTS

Przyznaj uprawnienia roota każdemu użytkownikowi z sudo na Ubuntu 20.04 LTS

Jak wyłączyć stację dokującą Ubuntu w systemie Ubuntu 20.04

Jak wyłączyć stację dokującą Ubuntu w systemie Ubuntu 20.04

Czasami lepiej opuścić dok i odpłynąć!

Wi-Fi nie działa na Ubuntu? Oto jak to naprawić

Wi-Fi nie działa na Ubuntu? Oto jak to naprawić

Ubuntu jest popularne ze względu na swoją solidność i stosunkowo mniej błędów. Ale na pewno nie jest bez worka problemów. Jednym z takich problemów jest sterownik Wi-Fi. Możesz włączyć system tylko po to, aby stwierdzić, że Wi-Fi nie działa.

Dowiedz się, jak zainstalować Npm i Node.js na Ubuntu

Dowiedz się, jak zainstalować Npm i Node.js na Ubuntu

Node.js jest w rzeczywistości wieloplatformowym środowiskiem wykonawczym JavaScript typu open source. Po włączeniu Node.js możesz uruchamiać JavaScript na swoim komputerze Ubuntu bez martwienia się o otwieranie jakiejkolwiek przeglądarki. Jest zbudowany na silniku JavaScript V8 przeglądarki Chrome i można go zainstalować na wiele sposobów w systemie Linux.

10 najlepszych aplikacji do wideokonferencji dla systemu Linux

10 najlepszych aplikacji do wideokonferencji dla systemu Linux

Dla freelancerów i pracowników, którzy regularnie pracują w domu, komunikacja zdalna jest jedną z wielu rzeczy, o które trzeba zadbać. Obecnie dla wielu z nas wideokonferencje zastąpiły spotkania w biurze. Narzędzia takie jak Zoom i Skype odnotowały ogromny wzrost.

Jak zainstalować serwer FTP na Ubuntu w 5 krokach

Jak zainstalować serwer FTP na Ubuntu w 5 krokach

Jeśli konfigurujesz serwer Linux, będziesz potrzebować dostępu do FTP. Oznacza to najpierw zainstalowanie serwera FTP w systemie Linux. Powinna to być jedna z pierwszych rzeczy, które robisz po zainstalowaniu systemu operacyjnego serwera.

Jak łatwo szyfrować i odszyfrowywać pliki i katalogi w systemie Linux

Jak łatwo szyfrować i odszyfrowywać pliki i katalogi w systemie Linux

Czy kiedykolwiek chciałeś szybko i łatwo szyfrować pliki w systemie Linux bez konieczności instalowania i uczenia się nowych pakietów oprogramowania? Oto doskonały i łatwy sposób na łatwe szyfrowanie plików lub katalogów za pomocą AES256 zabezpieczonego hasłem, co pomaga trzymać pliki z dala od wścibskich oczu.

Jak naprawić make: polecenie nie zostało znalezione Błąd w Ubuntu

Jak naprawić make: polecenie nie zostało znalezione Błąd w Ubuntu

Polecenie make jest prawdopodobnie jednym z najczęściej używanych poleceń w ekosystemie Linuksa. To polecenie służy do budowania i kompilowania programów bezpośrednio z kodu źródłowego.

Jak znaleźć i usunąć zduplikowane pliki w systemie Linux za pomocą fdupes

Jak znaleźć i usunąć zduplikowane pliki w systemie Linux za pomocą fdupes

Podczas pracy z dużą ilością multimediów i dokumentów często zdarza się, że na komputerze gromadzi się wiele kopii tego samego pliku. Nieuchronnie pojawia się zaśmiecona przestrzeń dyskowa wypełniona zbędnymi plikami, co powoduje okresowe sprawdzanie duplikatów plików w systemie.

Stabilne czy Bleeding-Edge Dystrybucje Linuksa: Którą z nich wybrać?

Stabilne czy Bleeding-Edge Dystrybucje Linuksa: Którą z nich wybrać?

Jednym z głównych wyborów, przed którymi staje wielu użytkowników Linuksa przy wyborze dystrybucji Linuksa, jest jej stabilność lub to, jak bardzo zmienia się oprogramowanie.

Czy rok 2020 jest rokiem pandemii szkodliwego oprogramowania dla Linuksa?

Czy rok 2020 jest rokiem pandemii szkodliwego oprogramowania dla Linuksa?

Jego reputacja w zakresie bezpieczeństwa oznacza, że ​​Linux jest często uważany za mniej podatny na rodzaje zagrożeń, które regularnie nękają systemy Microsoft Windows. Wiele z tego postrzeganego bezpieczeństwa pochodzi ze stosunkowo małej liczby systemów Linux, ale czy cyberprzestępcy zaczynają dostrzegać wartość w wybieraniu jakości, a nie ilości?

Jak pobrać i zainstalować uGet Download Manager w systemie Linux

Jak pobrać i zainstalować uGet Download Manager w systemie Linux

Menedżery pobierania to popularne narzędzie do zarządzania wszystkimi pobranymi plikami w jednej aplikacji i zapewniają przydatne funkcje. Jeśli niedawno przeszedłeś z systemu operacyjnego Windows na Linuksa, być może szukasz alternatywy dla słynnego Internet Download Managera (IDM).

Notatki na Chromebookach ułatwiające kursywą

Notatki na Chromebookach ułatwiające kursywą

Cursive to progresywna aplikacja internetowa (PWA), którą firma Google wprowadziła wraz z wydaniem Chromebooka HP x2 11. Możesz używać tej aplikacji do robienia odręcznych notatek na Chromebooku wyposażonym w rysik.

Jak korzystać z Vima: Przewodnik po podstawach

Jak korzystać z Vima: Przewodnik po podstawach

Vim to najpotężniejszy i najbardziej wszechstronny edytor kodu dostępny dla systemów uniksopodobnych. Jest to rozszerzenie edytora Vi opracowanego przez Billa Joya. Vim jest domyślnie dostępny w większości systemów Linux i BSD.