Jeśli masz szczęście i Twój dostawca usług internetowych (ISP) zapewnia dedykowany adres IP, możesz skonfigurować serwer domowy i udostępnić go Internetowi, dodając do routera kilka reguł przekierowania portów (przekazywanie ). Ale jeśli Twój dostawca usług internetowych zmusi Cię do udostępnienia tego adresu IP sąsiadom, przekierowanie portów nie pomoże. Inni dostawcy po prostu blokują połączenia przychodzące poprzez reguły zapory sieciowej.
Użytkownicy mogą pokonać wszystkie te ograniczenia za pomocą wirtualnych serwerów prywatnych. Wszystko będzie działać z mniej niż 512MB RAM-u, bo wystarczy, że przekieruje ruch sieciowy. Nie zużywa dużo pamięci RAM i procesora. Serwer będzie odbierał połączenia przychodzące i przekierowywał je do komputera poprzez „ odwrotny tunel SSH ”. W ten sposób możesz skonfigurować dowolny typ serwera domowego za bardzo niewielką miesięczną opłatą.
Wyobraź sobie, że tworzysz serwer NextCloud do przesyłania lub synchronizowania plików. Chronisz prywatność swoich plików, gdy znajdują się one na Twoim domowym serwerze, a jeśli zajdzie taka potrzeba, możesz dokupić dysk twardy o pojemności 6 TB, aby zwiększyć pojemność. Miesięczny rachunek za energię elektryczną wynosi mniej niż 5 USD miesięcznie (115 000 VND) za wirtualny serwer prywatny. Tańszy niż miesięczny rachunek za serwer o pojemności 6 TB.
Uwaga : Ta metoda służy wyłącznie do przekierowywania ruchu sieciowego TCP. Protokół TCP jest używany przez serwer WWW (port 80/tcp). UDP jest używany przez niektóre (ale nie wszystkie) serwery gier, na przykład Counter Strike (port 27015/UDP). Tunelowanie UDP jest również możliwe, ale wymaga pewnych sztuczek.
Umożliwia zewnętrzne połączenie z komputerem
Windows 10 ma teraz wbudowanego klienta SSH
Nie trzeba już używać PuTTY do inicjowania połączeń SSH. W tym samouczku użyjemy wbudowanego klienta SSH do skonfigurowania tunelu. Przeczytaj artykuł: Jak zainstalować OpenSSH na Windows 10 autorstwa LuckyTemplates, aby dowiedzieć się więcej.
Przygotuj wirtualny serwer prywatny do połączenia tunelowego
Utwórz wirtualny serwer prywatny u swojego ulubionego dostawcy. Najważniejszą rzeczą jest wybranie lokalizacji serwera jak najbliżej, aby zminimalizować opóźnienia sieci. Spróbuj skonfigurować serwer w taki sposób, abyś mógł zalogować się bezpośrednio na konto root, najlepiej za pomocą klucza SSH, ponieważ jest to bezpieczniejsze. Jest to wymagane, jeśli chcesz, aby serwer „nasłuchiwał” połączeń przychodzących na portach poniżej 1024, zwanych także portami uprzywilejowanymi.
Otwórz wiersz poleceń (lub terminal, jeśli używasz systemu Linux) i zaloguj się do serwera przez SSH.
Edytuj ustawienia serwera OpenSSH:
nano /etc/ssh/sshd_config
Jeśli nie jesteś zalogowany jako root, ale jako zwykły użytkownik, będziesz musiał użyć tego polecenia, aby móc zapisać plik:
sudo nano /etc/ssh/sshd_config
Przewiń w dół, aż znajdziesz zmienną o nazwie GatewayPorts. Ta linia może wyglądać następująco:
#GatewayPorts no
Usuń # (aby zmienić go z komentarza na część programu) i zmień linię na:
GatewayPorts yes
Jeśli nie możesz znaleźć tej linii, po prostu przewiń w dół i sam dodaj linię:
GatewayPorts yes

Naciśnij Ctrl + X , następnie naciśnij y i na koniec Enter , aby zapisać plik.
Załaduj ponownie demona SSH, aby pobrał nowe ustawienia.
systemctl reload ssh.service
Wyjdź z sesji SSH.
exit
Jak skonfigurować odwrotny tunel SSH
Parametry poleceń są takie same w systemie Linux, Windows, a nawet BSD. Ogólna składnia jest następująca:
ssh -R remote_port:host:localport your_username@IP-of-server
- port_zdalny informuje serwer, aby przekierowywał połączenia do niego na tym porcie.
- host przekazuje serwerowi adres IP, na który zostanie przekierowane połączenie. Do przekierowania na komputer użytkownika zostanie użyty tutaj adres 127.0.0.1 .
- localport instruuje, do którego portu pakiety powinny zostać przekierowane. W tym miejscu należy ustawić numer portu, na którym „nasłuchuje” aplikacja zainstalowana na komputerze lokalnym.
Na przykład, aby przekierować wszystkie połączenia na porcie 80 (do serwera) i wysłać je do portu 8080 na komputerze lokalnym, polecenie będzie wyglądać:
ssh -R 80:127.0.0.1:8080 root@203.0.113.1
Zakłada się, że masz serwer WWW, taki jak Apache lub Nginx, nasłuchujący lokalnie na porcie 8080. Ale jeśli Apache/Nginx nasłuchuje na domyślnym porcie 80, nie ma problemu z dwukrotnym użyciem tego samego portu w poprzednim poleceniu (ponieważ odnoszą się one do portu 80 na innym serwerze).
ssh -R 80:127.0.0.1:80 root@203.0.113.1
W tym momencie, jeśli ktoś wprowadzi adres IP Twojego wirtualnego serwera prywatnego w pasku adresu przeglądarki, jego połączenie zostanie przekierowane i obsługiwane przez Twój komputer lokalny.
![Jak korzystać z odwrotnego tunelu SSH, aby umożliwić zewnętrzne połączenia z komputerem Jak korzystać z odwrotnego tunelu SSH, aby umożliwić zewnętrzne połączenia z komputerem]()
Na powyższym obrazku wykorzystano prosty serwer WWW dla przeglądarki Chrome, który domyślnie nasłuchuje na porcie 8887. Użytkownicy mogą sami wypróbować tę konfigurację, instalując aplikację, a następnie używając polecenia, jak pokazano na obrazku.
Warto wspomnieć, że aby tunel był aktywny, sesja SSH musi pozostać aktywna. Aby zamknąć tunel, wpisz exit w oknie terminala lub wiersza poleceń.
Jak widać, utworzenie odwrotnego tunelu SSH nie jest trudne, ale zabezpieczenie strony internetowej to co innego. Jeśli więc zdecydujesz się na wdrożenie pomysłu takiego jak lokalny serwer NextCloud, wyizoluj go przynajmniej na maszynie wirtualnej. Dzięki temu, jeśli witryna zostanie zhakowana, przynajmniej reszta systemu operacyjnego nie ucierpi.
Kolejną ważną rzeczą, o której należy pamiętać, jest to, aby zawsze tworzyć kopie zapasowe tego, czego nie chcesz ryzykować utraty!
Mam nadzieję, że odniesiesz sukces.