Spisu treści:

Raspberry Pi VPN Gateway: 6 kroków
Raspberry Pi VPN Gateway: 6 kroków

Wideo: Raspberry Pi VPN Gateway: 6 kroków

Wideo: Raspberry Pi VPN Gateway: 6 kroków
Wideo: Build your OWN WireGuard VPN! Here's how 2024, Listopad
Anonim
Bramka VPN Raspberry Pi
Bramka VPN Raspberry Pi

Aktualizacja 2018-01-07:

  • Zaktualizowano brakujące elementy i wprowadzono zmiany potrzebne do aktualnej wersji Raspiana.
  • Stworzył również specjalny przewodnik dla NordVPN.

Istnieje kilka różnych zastosowań VPN. Albo chcesz chronić swoją prywatność i prywatne dane przed ciekawskimi oczami, albo potrzebujesz źródła z innego kraju. Pozyskiwanie z innego kraju może być bardzo przydatne, aby uzyskać dostęp do usług, które nie są świadczone w Twoim kraju. Obecnie istnieje wiele usług VPN, a większość z nich oferuje łatwe w użyciu oprogramowanie na komputer i aplikacje na tablet lub telefon. Ale jeśli masz inne urządzenia nieobsługiwane przez oprogramowanie, które chcesz przejść przez VPN? Następnie zbuduj bramę, która zapewni Ci dostęp do Internetu przez VPN.

Jeśli spojrzysz na swoją podstawową konfigurację sieci, masz "bramę domyślną", która jest używana dla każdego adresu IP, który nie znajduje się w twojej obecnej podsieci (bardzo uproszczone). Jeśli więc skonfigurujesz bramę, która może kierować ruch internetowy przez ustanowione połączenie VPN, każde urządzenie obsługujące sieć może skorzystać z tunelu VPN.

Moim głównym przypadkiem użycia w moim mieszkaniu w San Francisco jest tunel VPN do mojej ojczystej Szwecji, dzięki czemu mogę przesyłać strumieniowo szwedzkie kanały odtwarzania na moich odtwarzaczach multimedialnych i smart TV. Jest to dość powszechny przypadek użycia dla większości osób potrzebujących tunelu VPN. Ponieważ moje odtwarzacze multimedialne i smart TV nie są obsługiwane przez oprogramowanie VPN, zbudowałem jeden z Raspberry Pi.

Możesz wybrać jeden za mniej niż 40 USD na Amazon. Polecam jednak zakup etui i przyzwoitego zasilacza. Do tego instruktażu potrzebujesz:

  • Raspberry Pi 2 lub 3
  • Sprawa, która Ci się podoba
  • Przyzwoity zasilacz
  • Kabel sieciowy

Krok 1: Wybór usługi VPN

Wybór usługi VPN
Wybór usługi VPN

Ważną rzeczą przy wyborze usługi VPN jest to, aby spełniała Twoje wymagania. W tym przypadku potrzebowałem usługi VPN ze szwedzkim punktem wyjścia, to jest najważniejsza rzecz, ponieważ potrzebuję szwedzkich usług, aby przekonać się, że jestem w Szwecji. Przez lata korzystałem z kilku różnych dostawców, a poniżej przedstawiam rzeczy, które biorę pod uwagę przy wyborze dostawcy VPN dla konkretnego przypadku użycia:

Bezpłatny test

Potrzebuję bezpłatnego okresu testowego lub niewielkiej ilości danych testowych, aby poznać oprogramowanie lub aplikację. Chcę też przetestować wydajność i ogólne wrażenia, zanim za to zapłacę. Miło też sprawdzić, czy mój pomysł zadziała, zanim zacznę płacić.

Prywatność

Jeśli implementacja ma na celu ochronę prywatności, to naprawdę ważne jest, co mówi polityka prywatności. Ważne jest również, z jakiego kraju działa firma i jakie przepisy chronią Twoją prywatność. Użytkownicy naprawdę zainteresowani prywatnością powinni przyjrzeć się usłudze, która stwierdza, że żadne dzienniki ruchu nie są przechowywane i zezwalają na anonimowe płatności na przykład za pośrednictwem Bitcoin.

Dozwolony ruch

Mogą istnieć ograniczenia dotyczące rodzaju ruchu, który będziesz mógł prowadzić. Poważniejsi dostawcy zazwyczaj blokują ruch peer-to-peer. Ma to na celu nie tylko uniknięcie problemów prawnych, ale także utrzymanie wydajności dla wszystkich użytkowników. Istnieje jednak wielu dobrych dostawców, którzy umożliwiają komunikację typu peer-to-peer i nadal zapewniają wysoką jakość usług. Ale jeśli to nie jest twoja główna rekuperacja, polecam wybrać usługę, która nie pozwala na peer-to-peer.

Limit danych

Nigdy nie korzystaj z usługi, która utrzymuje limit danych nad płacącymi użytkownikami. To po prostu wyczerpie się w najgorszym możliwym czasie, dokładnie tak jak dane w telefonie tuż przed zabawną częścią w klipie wideo!

Kraje wyjścia

W zależności od przypadku użycia ma to różne znaczenie. W przypadku użycia takiego jak mój, w którym muszę wylądować w określonym kraju, oczywiście musi to być na liście. Muszę również mieć możliwość wybrania kraju, w którym wyjeżdżam. Istnieją usługi, w których nie możesz wybrać kraju wyjazdu, trzymaj się od nich z daleka. Możesz wylądować w kraju, w którym obowiązują przepisy dotyczące złej wydajności lub prywatności. Nawet jeśli nie potrzebujesz konkretnego kraju, powinieneś wybrać usługę z kilkoma różnymi krajami do wyświetlania, aby móc znaleźć taką, która ma dobre wyniki.

Rodzaj oprogramowania i wsparcie

To jeden z głównych powodów, dla których wolę usługi z bezpłatnym testem. Jest tak wielu dostawców ze złym oprogramowaniem, które zawiera błędy, jest niepewne lub po prostu nie działa. Do wdrożenia Raspberry Pi potrzebuję dostawcy obsługującego OpenVPN.

Mój wybór

Do tego buildu wybrałem Tunnel Bear. Oferowany jest bezpłatny test do 500 GB, więc mogłem sprawdzić, czy rzeczywiście mogę przesyłać strumieniowo, zanim cokolwiek zapłacę. Mają siedzibę w Kanadzie, która obok Szwecji ma jedne z najsilniejszych przepisów dotyczących prywatności na świecie. Brak limitu danych w płatnych usługach, a także mogę mieć kilka urządzeń podłączonych jednocześnie. Tak więc ochrona mojego telefonu, tabletu i komputera podczas podróży przez niezabezpieczone Wi-Fi jest również sortowana. Węzeł wyjściowy w Szwecji jest obsługiwany, w rzeczywistości jest dostarczany przez Bahnhof, który jest znany z silnej prywatności w Szwecji. W przypadku płatnych planów oferują obsługę OpenVPN. Nie do darmowego testu, ale wystarczyło uruchomić go z mojego laptopa, aby upewnić się, że usługi przesyłania strumieniowego działają.

Krok 2: Zainstaluj Raspberry Pi

Do takich wdrożeń używam systemu operacyjnego Raspbian Lite. Ponieważ w ogóle nie potrzebuję GUI. Tutaj możesz pobrać najnowszą wersję.

Używam Win32DiskImager do załadowania pliku.img na kartę SD dla Raspberry Pi.

Po uruchomieniu Raspberry Pi przeglądam listę DHCP mojego routera, aby uzyskać adres IP, a następnie połączyć się przez SSH z Putty. Standardowa nazwa użytkownika i hasło to pi/raspberry

Po podłączeniu uruchamiam narzędzie raspi-config, aby zmienić podstawowe ustawienia.

sudo raspi-config

Najważniejsze rzeczy, o które należy zadbać w tej konfiguracji, to:

  • Rozwiń system plików
  • Zmień hasło

Możesz także zmienić nazwę hosta swojego Raspberry Pi, jeśli chcesz. Mój DHCP ma bardzo długie dzierżawy i mogę też zarezerwować konkretny adres. Jeśli nie masz takiej możliwości, musisz skonfigurować Raspberry Pi tak, aby używał statycznego adresu IP. Ponieważ inne urządzenia będą używać tego jako bramy domyślnej, ważne jest, aby używała tego samego adresu IP. Oto post, który napisałem o ustawianiu statycznego adresu IP w Raspbian Jessie.

Następnie musimy zaktualizować wszystko do najnowszej wersji:

sudo apt-get aktualizacje sudo apt-get upgrade sudo apt-get dist-upgrade

Krok 3: Zainstaluj OpenVPN

Zainstaluj OpenVPN
Zainstaluj OpenVPN

Teraz musimy zainstalować OpenVPN na Raspberry Pi.

sudo apt-get zainstaluj openvpn

Następnie musimy upewnić się, że usługa uruchamia się poprawnie.

sudo systemctl włącz openvpn

Po zakończeniu instalacji musimy skopiować pliki konfiguracyjne i certyfikaty OpenVPN do pudełka. Zostanie to dostarczone przez dostawcę VPN. W moim przypadku, korzystając z TunnelBear, znalazłem tam post na blogu o wsparciu dla Linuksa. Na tej stronie znajduje się link do pliku zip zawierającego wszystko, czego potrzebujemy.

Plik zawiera pliki certyfikatów i plik konfiguracyjny.opvn dla każdego kraju, do którego można tunelować. Potrzebujesz wszystkich plików certyfikatów i pliku konfiguracyjnego.opvn dla wybranego kraju, w moim przypadku Szwecji. Rozpakuj potrzebne pliki i użyj winscp, aby przesłać pliki do Raspberry Pi. Ta sama nazwa użytkownika/hasło, które zostały użyte do SSH, przeniesie Cię do /home/pi, po prostu upuść tam pliki.

Następnie wracamy do terminala SSH i przenosimy pliki do folderu OpenVPN. Pierwsze polecenie to tylko upewnienie się, że znajdujemy się w folderze /home/pi.

cd /home/pi

sudo mv * /etc/openvpn/

Teraz musimy dokonać pewnych modyfikacji w plikach. Najpierw musimy zmienić nazwę pliku konfiguracyjnego z.ovpn na.conf. Każdy plik kończący się na.conf w folderze /etc/openvpn zostanie automatycznie uruchomiony po uruchomieniu demona OpenVPN. Najpierw musimy dostać się do tego katalogu.

cd /etc/openvpn

Następnie zmieniamy nazwę pliku konfiguracyjnego. Możesz nazwać go jak chcesz, o ile kończy się na.conf. Wolę używać nazw plików bez spacji, w tym przypadku używam swe.conf.

sudo mv *.ovpn swe.conf

Następnie potrzebujemy pliku uwierzytelniającego zawierającego nazwę użytkownika i hasło używane w tunelu VPN. Otwórz edytor tekstu i wpisz nazwę użytkownika i hasło w osobnych wierszach. Nazwiemy ten plik auth.txt.

sudo nano auth.txt

Treść powinna wyglądać jak w tym przykładzie:

Nazwa Użytkownika

hasło

Następnie użyj CTRL + O, aby zapisać do pliku i CTRL + X, aby wyjść z edytora tekstu nano. Musimy również chronić plik auth.txt zawierający nasze dane uwierzytelniające.

sudo chmod 600 /etc/openvpn/auth.txt

Następnie musimy edytować plik konfiguracyjny, aby upewnić się, że wszystkie ścieżki są poprawne i dodać odwołanie do nowo utworzonego pliku auth.txt.

sudo nano swe.conf

Linie, które należy zmienić, to te odnoszące się do innych plików, muszą to być ścieżki bezwzględne. W tym przykładzie właśnie tego szukamy:

ca CACcertificate.crt

cert UserCertificate.crt klucz PrivateKey.key

Zmieniamy je na ścieżki bezwzględne w ten sposób:

ca /etc/openvpn/CACertificate.crt

cert /etc/openvpn/UserCertificate.crt klucz /etc/openvpn/PrivateKey.key

Następnie na końcu pliku dodajemy odwołanie do pliku auth.txt, takie jak:

auth-user-pass /etc/openvpn/auth.txt

Ponownie używamy CTRL + O, aby zapisać plik, a następnie CTRL + X, aby wyjść z nano. Teraz możemy ponownie uruchomić demona OpenVPN i sprawdzić, czy tunel działa.

usługa sudo openvpn restart

Jeśli uruchomisz polecenie ifconfig, powinieneś zobaczyć adapter tun0 oprócz adapterów eth0 i lo, jeśli tunel jest uruchomiony. Możesz także uruchomić polecenie to polecenie, aby sprawdzić swój publiczny adres IP:

wget https://ipinfo.io/ip -qO -

Jeśli masz problemy z uruchomieniem tunelu, najpierw spróbuj ponownie uruchomić Raspberry Pi, a następnie dwukrotnie sprawdź konfigurację pod kątem błędów.

Krok 4: Konfiguracja routingu

Teraz musimy włączyć przekazywanie IP. Umożliwia przepływ ruchu sieciowego z jednego interfejsu sieciowego i wyjście z drugiego. Zasadniczo tworzenie routera.

sudo /bin/su -c "echo -e '\n#Włącz routing IP\nnet.ipv4.ip_forward = 1' > /etc/sysctl.conf"

Jeśli uruchomisz sudo sysctl -p, na ekranie powinien pojawić się komunikat:

net.ipv4.ip_forward = 1

Teraz routing jest włączony, a ruch może przechodzić przez Raspberry Pi, przez tunel i przez Internet.

Krok 5: Skonfiguruj zaporę sieciową i NAT

Ponieważ będziemy mieć kilku klientów wewnątrz korzystających z Internetu za pośrednictwem jednego publicznego adresu IP, musimy użyć NAT. Oznacza translację adresów sieciowych i będzie śledzić, na którym kliencie zażądał jakiego ruchu, gdy informacje zwrócą się przez tunel. Musimy również ustawić pewne zabezpieczenia wokół samego Raspberry Pi i tunelu.

sudo iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE

Włączam translację adresów sieciowych.

sudo iptables -A FORWARD -i eth0 -o tun0 -j AKCEPTUJ

Zezwalanie na ruch z eth0 (wewnętrzny) przez tun0 (tunel).

sudo iptables -A FORWARD -i tun0 -o eth0 -m state --state ZWIĄZANE, USTANOWIONE -j AKCEPTUJ

Zezwalanie na ruch z tun0 (tunel) na powrót przez eth0 (wewnętrzny). Ponieważ określamy stan RELATED, ESTABLISHED będzie on ograniczony do połączenia inicjowanego z sieci wewnętrznej. Blokowanie ruchu zewnętrznego podczas próby zainicjowania nowego połączenia.

sudo iptables -A WEJŚCIE -i lo -j AKCEPTUJ

Zezwolenie na własny ruch pętli zwrotnej Raspberry Pi.

sudo iptables -A WEJŚCIE -i eth0 -p icmp -j AKCEPTUJ

Zezwalanie komputerom w sieci lokalnej na pingowanie Raspberry Pi.

sudo iptables -A INPUT -i eth0 -p tcp --dport 22 -j AKCEPTUJ

Zezwalanie na SSH z sieci wewnętrznej.

sudo iptables -A INPUT -m stan --stan USTANOWIONO, POWIĄZANE -j AKCEPTUJ

Zezwolenie na powrót całego ruchu zainicjowanego przez Raspberry Pi. Jest to ten sam dyrektor stanu, co wcześniej.

sudo iptables -P Spadek do przodu

sudo iptables -P INPUT DROP sudo iptables -L

Jeśli ruch nie pasuje do żadnej z określonych reguł, zostanie odrzucony.

sudo apt-get install iptables-persistent

sudo systemctl włącz netfilter-persistent

Pierwsza linia instaluje spokój kodu, który sprawia, że reguły iptable, które właśnie stworzyliśmy, są trwałe między restartami. Drugi zapisuje zasady po ich zmianie. Tym razem wystarczy uruchomić pierwszy. Jeśli zmienisz zasady, uruchom drugą, aby zapisać. Reguły Iptable zaczynają obowiązywać, gdy tylko je dodasz, jeśli zepsujesz i stracisz dostęp, po prostu uruchom ponownie komputer, a te, które nie zostały jeszcze zapisane, zostaną przywrócone.

Krok 6: Wniosek

Teraz możesz korzystać z tego tunelu z dowolnego urządzenia lub komputera w tej samej sieci. Po prostu zmień domyślną bramę na dowolny adres IP, który ma twoje Raspberry Pi. W moim przypadku oba moje centra multimedialne Kodi (jedna sypialnia i jeden salon) korzystają z tego połączenia, dzięki czemu mogę przesyłać strumieniowo moje szwedzkie kanały odtwarzania. Oczywiście są też inne rzeczy, do których możesz to wykorzystać.

Pamiętaj tylko, że w zależności od wybranego dostawcy VPN i szybkości połączenia internetowego wydajność może być niska.

Jeśli masz jakieś pytania lub chcesz, żebym coś wyjaśnił, daj mi znać w komentarzach! Aby uzyskać więcej postów technicznych, odwiedź mój blog Hackviking!

Zalecana: