Jak skonfigurować VPN dla swojego zespołu programistów internetowych?

Opublikowany: 2021-10-11

Główną cechą współczesnego Internetu jest jego stała dostępność. Nie ma potrzeby lokalnego przechowywania danych, które są szybko dostępne przez sieć. Więcej problemów pojawia się, gdy te dane nagle stają się niedostępne w nieprzewidywalnym momencie. Większość programistów pracuje zdalnie i może brakować zasobów, jeśli pochodzą z niektórych części. W tym artykule przyjrzymy się, jak skonfigurować VPN dla swojego zespołu programistów internetowych.

Typowe problemy z Internetem

Co praktycznie oznacza niedostępność zasobu internetowego?

- Niektóre biblioteki nie są pobierane - środowisko programistyczne projektu nie powstanie. To jest główny i największy problem!

- Zoom, Slack lub Telegram nie działają - nie będziesz mógł skontaktować się ze współpracownikami.

- Niektóre strony są niedostępne, na przykład GitHub - nie można opublikować swojej pracy.

To nie wszystkie możliwe przykłady, ale nawet one mogą znacząco obniżyć produktywność zespołu.

Kto jest winny?

W praktyce opisane powyżej ograniczenia są zazwyczaj realizowane przez dostawcę Internetu. I nie ma sensu obwiniać za nie dostawcy, ponieważ ograniczenia zostały wprowadzone przez akty administracyjne państw. Dostawca powinien być zaangażowany w biznes, a nie walkę polityczną.

Ale czasami dostawca okazuje się złoczyńcą. Na przykład z nieznanego powodu mogą blokować ruch na określonych portach TCP lub modyfikować niezaszyfrowany ruch http i zmieniać kod html strony, dodawać reklamy. Tego oczekujesz od niektórych oszustów, ale na pewno nie od dużej firmy, więc jest to podwójnie nieprzyjemne (jeśli jesteś zainteresowany, wygoogluj „reklamę na stronach innych osób”).

Co robić?

Gdy skala problemu jasno pokazuje, że należy go rozwiązać na poziomie firmy, a nie pozostawić na łasce członków zespołu, możesz skorzystać z technologii VPN.

VPN to wirtualna sieć prywatna. Jest to nazwa grupy technologii, które pozwalają stworzyć wirtualną, nieistniejącą fizycznie (nakładkową) sieć komputerową w oparciu o istniejącą fizyczną sieć komputerową.

Daje to dodatkowe możliwości zwiększenia prywatności. W sieci fizycznej, w pierwszym przybliżeniu, Twój ruch jest dostępny dla wszystkich uczestników wymiany sieci, wszystkich routerów itp. W sieci wirtualnej nie ma dodatkowych uczestników, tylko Ty i punkt, z którym się łączysz. Jeśli konfigurujesz go dla swojego zespołu programistów internetowych, jest to serwer VPN. Między wami budowany jest zaszyfrowany tunel.

Interfejsy sieci wirtualnej TUN są tworzone na komputerze klienta i serwerze. Zaszyfrowana wymiana danych odbywa się bezpośrednio między nimi. Twoje dane są skutecznie chronione przed atakami typu man-in-the-middle (MITM). Nikt, kto ma fizyczny dostęp do sprzętu, przez który przechodzi Twój ruch, nie może przechwycić ani zastąpić Twoich informacji.

Umożliwia także dostęp do zasobów niedostępnych w sieci domowej, ale dostępnych z serwera VPN.

Dzięki technologii VPN klient staje się częścią podsieci, której częścią jest serwer. I może uzyskać dostęp do zasobów tej podsieci. Dzięki temu można ominąć ograniczenia i rozwiązać każdy inny problem, który wymaga zdalnego i bezpiecznego połączenia z podsiecią.

Wybór implementacji VPN

Decydować to nie robić. Istnieje kilka powszechnych darmowych wdrożeń technologii VPN. Możesz spróbować darmowej wersji próbnej Surfshark VPN, aby przekonać się, co możesz zyskać.

Co jeszcze możesz wybrać po uzyskaniu odpowiedniej sieci VPN

IPsec to zestaw protokołów do bezpiecznej transmisji danych. Pojawił się w połowie lat 90. Jest duży i elastyczny, ale trudny do skonfigurowania i niskopoziomowy. Zbyt skomplikowane dla niektórych celów.

WireGuard to młody projekt (2015) mający na celu szybkie przygotowanie do pracy. Potencjalnie szybszy w przesyłaniu danych niż różne sieci VPN, wykorzystuje bardziej nowoczesne protokoły szyfrowania — wieloplatformowe, dostępne we wszystkich głównych systemach. Wada jest taka sama jak zaleta. Aby zapewnić szybką i łatwą instalację, w rdzeniu programu podejmowanych jest wiele niskopoziomowych decyzji. Na przykład użycie protokołu UDP, który może nie być skuteczny dla wszystkich.

Wybór sposobu rozpoczęcia i użytkowania

Ręcznie

Najbardziej oczywistym sposobem jest wynajęcie VPS, połączenie przez SSH i utworzenie serwera zgodnie z instrukcją. Jest to dość długi proces ze względu na wiele poleceń i plików, które trzeba ręcznie przenieść.

Dzięki tej metodzie za każdym razem, gdy tworzysz nowy serwer, będziesz musiał to zrobić ponownie. Aby zaoszczędzić czas, możesz skorzystać z systemów zarządzania konfiguracją lub systemów konteneryzacji.

Systemy zarządzania konfiguracją to oprogramowanie, które pozwala zautomatyzować konfigurację zdalnych serwerów (puppet, ansible itp.). Zaletą tego podejścia jest możliwość skonfigurowania zdalnego serwera VPN za pomocą kilku poleceń. Wszystkie konfiguracje, szablony konfiguracyjne są jawnie umieszczane w formacie tekstowym na maszynie kontrolującej. Możesz sam stworzyć skrypt wdrożenia lub wziąć gotowy, na przykład na GitHub.

Nieco inne podejście jest stosowane w systemach kontenerowych. Najpopularniejszym takim wirtualnym systemem konteneryzacji jest docker. Instalacja kontenera docker z VPN na zdalnym serwerze może być nawet szybsza niż instalacja serwera przez ansible, co jest plusem. Jednak lista dostępnych konfiguracji może być ograniczona przez twórców obrazu. Obrazy są plikami binarnymi, więc może nie działać, jeśli musisz naprawić jakąś egzotyczną konfigurację.

Architektura serwera

Po pierwsze, jak już wspomniano, technologię VPN można wykorzystać do łączenia się np. z zamkniętą podsiecią za pośrednictwem komputera będącego częścią tej podsieci i jednocześnie serwera VPN. Jeśli masz cenne zasoby w swojej podsieci, nie chcesz, aby nikt nie łączył się z serwerem VPN. Aby to zrobić, większość sieci VPN zwykle tworzy z niej oddzielną maszynę, w ogóle nie połączoną z żadną siecią, być może w sejfie (nie żartuję). A prośby o podpisanie i podpisane certyfikaty są przesyłane na nośniki wymienne.

Uruchomienie serwera

Aby uruchomić skrypt ansible, musisz zainstalować ansible na swoim komputerze, wynająć serwer wirtualny z Debian/Ubuntu i skonfigurować dostęp do serwera przez SSH. Wypożyczając serwer, pamiętaj, że niektóre usługi nie pozwalają na stworzenie interfejsu tun ani na przekazywanie pakietów. Sprawdź to przed zakupem.

Cała interakcja z serwerem odbywa się za pomocą trzech poleceń:

1. Uruchom skrypt do tworzenia serwera i urzędu certyfikacji.

2. Rejestracja nowego użytkownika.

3. Odwołaj certyfikat według nazwy klienta.

Rozwój sposobów omijania blokad jest pod wieloma względami podobny do relacji między drapieżnikami a ofiarami w naturze. Dla każdego nowego ruchu jest kontr-ruch. Połączenia VPN nie są wyjątkiem.

Korzystając z VPN, możesz korzystać z różnych zasobów sieciowych. Ale ponieważ wszystkie dane trafiają do Ciebie przez tunel z serwera VPN, dla dostawcy wygląda na to, że wymieniasz dane tylko z jednym adresem IP.