Wraz z rosnącą cenzurą Internetu przez reżimy autorytarne, coraz więcej przydatnych zasobów i stron internetowych jest blokowanych. W tym informacje techniczne.
W ten sposób pełne korzystanie z Internetu staje się niemożliwe i narusza fundamentalne prawo do wolności słowa, zapisane w art uniwersalna Deklaracja Praw Człowieka.
Artykuł 19
Każdy ma prawo do wolności opinii i wypowiedzi; prawo to obejmuje wolność posiadania poglądów bez ingerencji oraz poszukiwania, otrzymywania i rozpowszechniania informacji i poglądów wszelkimi środkami i bez względu na granice
W tym przewodniku wdrożymy nasze własne bezpłatne oprogramowanie* w 6 krokach. Usługa VPN w oparciu o technologię Wireguard, w infrastrukturze chmurowej Amazon Web Services (AWS), korzystając z bezpłatnego konta (na 12 miesięcy), na instancji (maszynie wirtualnej) zarządzanej przez Serwer Ubuntu 18.04 LTS.
Starałem się, aby ten przewodnik był jak najbardziej przyjazny dla osób niebędących informatykami. Wymagana jest jedynie wytrwałość w powtarzaniu opisanych poniżej kroków.
Założenie darmowego konta AWS wymaga podania prawdziwego numeru telefonu oraz ważnej karty kredytowej Visa lub Mastercard. Polecam korzystanie z kart wirtualnych, które są dostarczane za darmo Yandex lub portfel qiwi. Aby sprawdzić ważność karty, podczas rejestracji pobierany jest 1 $, który jest później zwracany.
Numer karty, data ważności i imię i nazwisko posiadacza karty.
1.5. Weryfikacja konta
Na tym etapie numer telefonu jest potwierdzany, a z karty płatniczej pobierany jest bezpośrednio 1 USD. Na ekranie komputera wyświetlany jest 4-cyfrowy kod, a określony telefon odbiera połączenie z Amazon. Podczas rozmowy należy wybrać kod widoczny na ekranie.
1.6. Wybór planu taryfowego.
Wybierz - Plan podstawowy (bezpłatny)
1.7. Zaloguj się do konsoli zarządzania
1.8. Wybór lokalizacji centrum danych
1.8.1. Testowanie prędkości
Przed wyborem centrum danych zaleca się przetestowanie https://speedtest.net szybkość dostępu do najbliższych centrów danych, w mojej lokalizacji następujące wyniki:
Singapur
Paryż
Frankfurt
Sztokholm
Londyn
Najlepsze wyniki pod względem szybkości osiąga data center w Londynie. Wybrałem go więc do dalszej personalizacji.
2. Utwórz instancję AWS
2.1 Utwórz maszynę wirtualną
2.1.1. Wybór typu instancji
Domyślnie wybrana jest instancja t2.micro, której potrzebujemy, wystarczy nacisnąć przycisk Dalej: Konfiguruj szczegóły instancji
2.1.2. Ustawianie opcji instancji
W przyszłości będziemy podłączać stałe publiczne IP do naszej instancji, więc na tym etapie wyłączamy automatyczne przypisywanie publicznego IP i wciskamy przycisk Dalej: Dodaj pamięć
2.1.3. Połączenie pamięci masowej
Określ rozmiar „dysku twardego”. Do naszych celów wystarczy 16 gigabajtów i wciskamy przycisk Dalej: Dodaj tagi
2.1.4. Konfigurowanie tagów
Gdybyśmy stworzyli kilka instancji, można by je pogrupować według tagów, aby ułatwić administrację. W takim przypadku ta funkcja jest zbędna, natychmiast naciśnij przycisk Dalej: Skonfiguruj grupę zabezpieczeń
2.1.5. Otwieranie portów
W tym kroku konfigurujemy zaporę ogniową, otwierając wymagane porty. Zestaw otwartych portów jest nazywany grupą zabezpieczeń. Musimy utworzyć nową grupę zabezpieczeń, nadać jej nazwę, opis, dodać port UDP (Custom UDP Rule), w polu Rort Range należy przypisać numer portu z zakresu dynamiczne porty 49152-65535. W tym przypadku wybrałem numer portu 54321.
Po wypełnieniu wymaganych danych kliknij przycisk Przejrzyj i uruchom
2.1.6. Przegląd wszystkich ustawień
Na tej stronie znajduje się przegląd wszystkich ustawień naszej instancji, sprawdzamy czy wszystkie ustawienia są w porządku i wciskamy przycisk Premiera
2.1.7. Tworzenie kluczy dostępu
Następnie pojawia się okno dialogowe oferujące utworzenie lub dodanie istniejącego klucza SSH, za pomocą którego później zdalnie połączymy się z naszą instancją. Wybieramy opcję „Utwórz nową parę kluczy”, aby utworzyć nowy klucz. Nadaj mu nazwę i kliknij przycisk Pobierz parę kluczyaby pobrać wygenerowane klucze. Zapisz je w bezpiecznym miejscu na lokalnym komputerze. Po pobraniu kliknij przycisk. Uruchom instancje
2.1.7.1. Zapisywanie kluczy dostępu
Tutaj pokazano etap zapisywania wygenerowanych kluczy z poprzedniego kroku. Po tym, jak nacisnęliśmy przycisk Pobierz parę kluczy, klucz jest zapisywany jako plik certyfikatu z rozszerzeniem *.pem. W tym przypadku nadałem mu nazwę wireguard-awskey.pem
2.1.8. Przegląd wyników tworzenia instancji
Następnie widzimy komunikat o pomyślnym uruchomieniu właśnie utworzonej przez nas instancji. Do listy naszych instancji możemy przejść klikając w przycisk przeglądać instancje
2.2. Tworzenie zewnętrznego adresu IP
2.2.1. Rozpoczęcie tworzenia zewnętrznego adresu IP
Następnie musimy utworzyć stały zewnętrzny adres IP, przez który będziemy łączyć się z naszym serwerem VPN. W tym celu w panelu nawigacyjnym po lewej stronie ekranu wybierz element Elastyczne adresy IP z kategorii SIEĆ I BEZPIECZEŃSTWO i naciśnij przycisk Przydziel nowy adres
2.2.2. Konfigurowanie tworzenia zewnętrznego adresu IP
W następnym kroku musimy włączyć opcję basen amazoński (domyślnie włączone) i kliknij przycisk Przeznaczyć
2.2.3. Przegląd wyników tworzenia zewnętrznego adresu IP
Następny ekran wyświetli otrzymany zewnętrzny adres IP. Zaleca się zapamiętanie go, a nawet lepiej zapisać. przyda się niejeden raz w procesie dalszej konfiguracji i korzystania z serwera VPN. W tym przewodniku używam adresu IP jako przykładu. 4.3.2.1. Po wprowadzeniu adresu naciśnij przycisk Zamknij
2.2.4. Lista zewnętrznych adresów IP
Następnie zostaje nam przedstawiona lista naszych stałych publicznych adresów IP (elastics IP).
2.2.5. Przypisywanie zewnętrznego adresu IP do instancji
Na tej liście wybieramy otrzymany adres IP i naciskamy prawy przycisk myszy, aby wyświetlić menu rozwijane. Wybierz w nim przedmiot adres stowarzyszonyaby przypisać go do utworzonej wcześniej instancji.
2.2.6. Ustawienie przypisania zewnętrznego adresu IP
W kolejnym kroku wybieramy z rozwijanej listy naszą instancję i wciskamy przycisk Współpracownik
2.2.7. Przegląd wyników przypisania zewnętrznego adresu IP
Następnie widzimy, że nasza instancja i jej prywatny adres IP są powiązane z naszym stałym publicznym adresem IP.
Teraz możemy połączyć się z naszą nowo utworzoną instancją z zewnątrz, z naszego komputera przez SSH.
3. Połącz się z instancją AWS
SSH to bezpieczny protokół do zdalnego sterowania urządzeniami komputerowymi.
3.1. Łączenie przez SSH z komputera z systemem Windows
Aby połączyć się z komputerem z systemem Windows, musisz najpierw pobrać i zainstalować program kit.
3.1.1. Importuj klucz prywatny dla Putty
3.1.1.1. Po zainstalowaniu programu Putty należy uruchomić dołączone do niego narzędzie PuTTYgen, aby zaimportować klucz certyfikatu w formacie PEM do formatu odpowiedniego do użycia w programie Putty. W tym celu wybierz pozycję w górnym menu Konwersje->Importuj klucz
3.1.1.2. Wybór klucza AWS w formacie PEM
Następnie wybierz klucz, który wcześniej zapisaliśmy w kroku 2.1.7.1, w naszym przypadku jego nazwę wireguard-awskey.pem
3.1.1.3. Ustawianie kluczowych opcji importu
Na tym etapie musimy podać komentarz do tego klucza (opis) oraz ustawić hasło i potwierdzenie dla bezpieczeństwa. Będzie to wymagane przy każdym połączeniu. W ten sposób chronimy klucz hasłem przed niewłaściwym użyciem. Nie musisz ustawiać hasła, ale jest to mniej bezpieczne, jeśli klucz dostanie się w niepowołane ręce. Po naciśnięciu przycisku Zapisz klucz prywatny
3.1.1.4. Zapisywanie zaimportowanego klucza
Otworzy się okno dialogowe zapisywania pliku i zapisujemy nasz klucz prywatny jako plik z rozszerzeniem .ppknadaje się do użycia w programie kit.
Podaj nazwę klucza (w naszym przypadku wireguard-awskey.ppk) i naciśnij przycisk Oszczędzać.
3.1.2. Tworzenie i konfiguracja połączenia w Putty
3.1.2.1. Utwórz połączenie
Otwórz program Putty, wybierz kategorię Sesja (domyślnie jest otwarty) oraz w terenie Nazwa hosta wprowadź publiczny adres IP naszego serwera, który otrzymaliśmy w kroku 2.2.3. W polu Zapisana sesja wprowadź dowolną nazwę dla naszego połączenia (w moim przypadku wireguard-aws-londyn), a następnie naciśnij przycisk Zapisz aby zapisać zmiany, które wprowadziliśmy.
Więcej w kategorii Statystyki z konta, wybierz podkategorię Dane i w terenie Nazwa użytkownika automatycznego logowania Wpisz nazwę użytkownika ubuntu jest standardowym użytkownikiem instancji na AWS z Ubuntu.
3.1.2.3. Wybór klucza prywatnego do połączenia przez SSH
Następnie przejdź do podkategorii Połączenie/SSH/Aut i obok pola Plik klucza prywatnego do uwierzytelnienia naciśnij przycisk Paść się… aby wybrać plik z certyfikatem klucza.
3.1.2.4. Otwieranie zaimportowanego klucza
Określ klucz, który zaimportowaliśmy wcześniej w kroku 3.1.1.4, w naszym przypadku jest to plik wireguard-awskey.ppki naciśnij przycisk Otwórz.
3.1.2.5. Zapisywanie ustawień i rozpoczynanie połączenia
Powrót do strony kategorii Sesja ponownie nacisnąć przycisk Zapisz, aby zapisać zmiany wprowadzone wcześniej w poprzednich krokach (3.1.2.2 - 3.1.2.4). A potem wciskamy przycisk Otwarte aby otworzyć zdalne połączenie SSH, które utworzyliśmy i skonfigurowaliśmy.
3.1.2.7. Konfigurowanie zaufania między hostami
W następnym kroku, przy pierwszej próbie połączenia, otrzymujemy ostrzeżenie, że nie mamy skonfigurowanego zaufania między dwoma komputerami i pytamy, czy ufać komputerowi zdalnemu. Wciśniemy przycisk Tak, tym samym dodając go do listy zaufanych hostów.
3.1.2.8. Wprowadzenie hasła dostępu do klucza
Następnie otworzy się okno terminala, w którym zostaniesz poproszony o podanie hasła do klucza, jeśli ustawiłeś je wcześniej w kroku 3.1.1.3. Podczas wprowadzania hasła na ekranie nie jest wykonywana żadna czynność. Jeśli popełnisz błąd, możesz użyć klucza Backspace.
3.1.2.9. Wiadomość powitalna o pomyślnym połączeniu
Po pomyślnym wprowadzeniu hasła w terminalu pojawia się tekst powitalny, który informuje nas, że zdalny system jest gotowy do wykonania naszych poleceń.
4. Konfigurowanie serwera Wireguard
Najbardziej aktualne instrukcje dotyczące instalacji i korzystania z Wireguard za pomocą opisanych poniżej skryptów można znaleźć w repozytorium: https://github.com/isystem-io/wireguard-aws
4.1. Instalacja WireGuarda
W terminalu wprowadź następujące polecenia (możesz skopiować do schowka i wkleić w terminalu, naciskając prawy przycisk myszy):
4.1.1. Klonowanie repozytorium
Sklonuj repozytorium za pomocą skryptów instalacyjnych Wireguard
Uruchom jako administrator (użytkownik root) skrypt instalacyjny Wireguard
sudo ./initial.sh
Proces instalacji poprosi o podanie pewnych danych wymaganych do skonfigurowania Wireguard
4.1.3.1. Wejście punktu połączenia
Wprowadź zewnętrzny adres IP i otwórz port serwera Wireguard. Otrzymaliśmy zewnętrzny adres IP serwera w kroku 2.2.3 i otworzyliśmy port w kroku 2.1.5. Wskazujemy je razem, oddzielając je np. dwukropkiem 4.3.2.1:54321a następnie naciśnij klawisz Wchodzę Przykład wyjścia:
Enter the endpoint (external ip and port) in format [ipv4:port] (e.g. 4.3.2.1:54321): 4.3.2.1:54321
4.1.3.2. Wprowadzenie wewnętrznego adresu IP
Wprowadź adres IP serwera Wireguard w bezpiecznej podsieci VPN, jeśli nie wiesz, co to jest, po prostu naciśnij klawisz Enter, aby ustawić wartość domyślną (10.50.0.1) Przykład wyjścia:
Enter the server address in the VPN subnet (CIDR format) ([ENTER] set to default: 10.50.0.1):
4.1.3.3. Określanie serwera DNS
Wprowadź adres IP serwera DNS lub po prostu naciśnij klawisz Enter, aby ustawić wartość domyślną 1.1.1.1 (Publiczny DNS Cloudflare) Przykład wyjścia:
Enter the ip address of the server DNS (CIDR format) ([ENTER] set to default: 1.1.1.1):
4.1.3.4. Określanie interfejsu WAN
Następnie musisz wprowadzić nazwę zewnętrznego interfejsu sieciowego, który będzie nasłuchiwał na wewnętrznym interfejsie sieci VPN. Po prostu naciśnij Enter, aby ustawić domyślną wartość dla AWS (eth0) Przykład wyjścia:
Enter the name of the WAN network interface ([ENTER] set to default: eth0):
4.1.3.5. Określenie nazwy klienta
Wprowadź nazwę użytkownika VPN. Faktem jest, że serwer Wireguard VPN nie będzie mógł się uruchomić, dopóki nie zostanie dodany co najmniej jeden klient. W tym przypadku wpisałem nazwę Alex@mobile Przykład wyjścia:
Enter VPN user name: Alex@mobile
Następnie na ekranie powinien zostać wyświetlony kod QR z konfiguracją nowo dodanego klienta, który należy odczytać za pomocą klienta mobilnego Wireguard na Androida lub iOS, aby go skonfigurować. A także poniżej kodu QR zostanie wyświetlony tekst pliku konfiguracyjnego w przypadku ręcznej konfiguracji klientów. Jak to zrobić, zostanie omówione poniżej.
4.2. Dodanie nowego użytkownika VPN
Aby dodać nowego użytkownika, musisz wykonać skrypt w terminalu add-client.sh
sudo ./add-client.sh
Skrypt pyta o nazwę użytkownika: Przykład wyjścia:
Enter VPN user name:
Również nazwy użytkowników mogą być przekazywane jako parametr skryptu (w tym przypadku Alex@mobile):
sudo ./add-client.sh Alex@mobile
W wyniku wykonania skryptu w katalogu z nazwą klienta wzdłuż ścieżki /etc/wireguard/clients/{ИмяКлиента} zostanie utworzony plik konfiguracyjny klienta /etc/wireguard/clients/{ИмяКлиента}/{ИмяКлиента}.conf, a na ekranie terminala zostanie wyświetlony kod QR służący do konfigurowania klientów mobilnych oraz zawartość pliku konfiguracyjnego.
4.2.1. Plik konfiguracyjny użytkownika
Możesz wyświetlić zawartość pliku .conf na ekranie, w celu ręcznej konfiguracji klienta, za pomocą polecenia cat
[Interface]
PrivateKey = Приватный ключ клиента
Address = IP адрес клиента
DNS = ДНС используемый клиентом
[Peer]
PublicKey = Публичный ключ сервера
PresharedKey = Общи ключ сервера и клиента
AllowedIPs = Разрешенные адреса для подключения (все - 0.0.0.0/0, ::/0)
Endpoint = IP адрес и порт для подключения
4.2.2. Kod QR do konfiguracji klienta
Możesz wyświetlić konfiguracyjny kod QR dla wcześniej utworzonego klienta na ekranie terminala za pomocą polecenia qrencode -t ansiutf8 (w tym przykładzie używany jest klient o nazwie Alex@mobile):
Następnie należy zaimportować konfigurację poprzez odczyt kodu QR z konfiguracją klienta (patrz paragraf 4.2.2) i nadać jej nazwę:
Po pomyślnym zaimportowaniu konfiguracji możesz włączyć tunel VPN. Udane połączenie będzie wskazywane przez schowek klucza w zasobniku systemowym Androida
5.2. Konfiguracja klienta Windows
Najpierw musisz pobrać i zainstalować program TunSafe dla systemu Windows jest klientem Wireguard dla systemu Windows.
5.2.1. Tworzenie pliku konfiguracyjnego importu
Kliknij prawym przyciskiem myszy, aby utworzyć plik tekstowy na pulpicie.
5.2.2. Skopiuj zawartość pliku konfiguracyjnego z serwera
Następnie wracamy do terminala Putty i wyświetlamy zawartość pliku konfiguracyjnego żądanego użytkownika, jak opisano w kroku 4.2.1.
Następnie kliknij prawym przyciskiem myszy tekst konfiguracyjny w terminalu Putty, po zakończeniu wyboru zostanie on automatycznie skopiowany do schowka.
5.2.3. Kopiowanie konfiguracji do lokalnego pliku konfiguracyjnego
W tym polu wracamy do utworzonego wcześniej pliku tekstowego na pulpicie i wklejamy do niego tekst konfiguracyjny ze schowka.