Przekierowuj CAŁY ruch przez VPS


3

Niedawno kupiłem Raspberry Pi i przygotowuję go do różnych rzeczy. Mam router lokalny, do którego podłączony jest Pi wraz z komputerem stacjonarnym. Chcę mieć dostęp do Pi spoza mojej sieci lokalnej. Mam dostęp do mojego osobistego routera, więc wszystko działa w MOJEJ sieci, ale mój router jest podłączony do większej sieci, która jest zablokowana z oczywistych względów bezpieczeństwa, więc nie mogę uzyskać bezpośredniego dostępu do mojego routera / Pi.

Mam domenę za pośrednictwem Namecheap, która pozwala mi korzystać z dynamicznego DNS, i mam ten DDNS pracujący z moim Pi przy użyciu inadyn(skonfigurowanego w subdomenie). Mam również VPS z systemem Ubuntu Server 14.10, który korzysta z tej domeny.

Jaki byłby najlepszy sposób, aby umożliwić połączenia z moim Pi przez Internet? Chcę dostęp do wszystkich portów i co nie jest normalne. Zacząłem konfigurować OpenVPN na VPS, ale przestałem zadawać to pytanie tutaj. Czy istnieje sposób na tunelowanie połączenia mojego Pi przez subdomenę mojego VPS i uzyskiwanie dostępu do Pi przy użyciu tej subdomeny (ponownie, umożliwiając dostęp do moich portów, np. Pi.website.com:22 dla SSH lub cokolwiek innego), czy jest coś innego / lepszy sposób to zrobić?

Odpowiedzi:


1

Musisz skonfigurować zdalne przekierowywanie portów z serwera do Raspberry Pi. Poniżej znajduje się tylko krótkie wyjaśnienie, co to oznacza. 1

Zdalne przekierowanie portów
Teraz jest druga część tego samouczka, czyli zdalne przekierowanie portów. To znowu najlepiej wyjaśnić przykładem.

Powiedz, że tworzysz aplikację Rails na swoim komputerze lokalnym i chcesz ją pokazać znajomemu. Niestety twój dostawca usług internetowych nie podał ci publicznego adresu IP, więc nie można połączyć się z maszyną bezpośrednio przez Internet.

Czasami można to rozwiązać, konfigurując NAT (Network Address Translation) na routerze, ale to nie zawsze działa i wymaga zmiany konfiguracji routera, co nie zawsze jest pożądane. To rozwiązanie nie działa również, gdy nie masz dostępu administratora w sieci.

Aby rozwiązać ten problem, musisz mieć inny komputer, który jest publicznie dostępny i ma dostęp do SSH. Może to być dowolny serwer w Internecie, o ile można się z nim połączyć. Powiemy SSH, aby wykonał tunel, który otwiera nowy port na serwerze i łączy go z lokalnym portem na twoim komputerze.

Możesz także zajrzeć do MOSH, 2, który został zaprojektowany w celu przezwyciężenia trudności w łączeniu się z urządzeniami w sieci mobilnej, w której często zmienia się adres IP, a samo urządzenie nie ma adresu publicznego. Nie mam osobiście żadnego doświadczenia w korzystaniu z niego.


Zakładając, że możesz teraz przekierowywać ruch z określonego portu na serwerze do skrzynki Raspberry Pi, możesz następnie skonfigurować subdomenę, aby przekierowywać ruch do przekazywanego portu. Na przykład, jeśli przekierowujesz ruch z serwera przez port 8888 do swojego Raspberry Pi, możesz skonfigurować coś takiego. 3)

NameVirtualHost *:80

<VirtualHost *>
    ServerAdmin me@mydomain.com
    ServerName dev.mydomain.com
    ProxyPreserveHost On

    # setup the proxy
    <Proxy *>
        Order allow,deny
        Allow from all
    </Proxy>
    ProxyPass / http://localhost:8888/
    ProxyPassReverse / http://localhost:8888/
</VirtualHost>

Zwykle możesz ustanowić rekord A wskazujący tę subdomenę na adres IP twojego Raspberry Pi, ale ponieważ nie pozwoli ci to na zdalne ssh, myślę, że powyższy przykład jest najlepszym wyborem.


Wygląda to bardzo obiecująco, ale kiedy próbuję użyć portu 80 (aby uzyskać dostęp do Apache na moim Pi za pośrednictwem mojego VPS), pojawia się błąd informujący, że zdalne przekazywanie portów nie powiodło się dla portu nasłuchiwania 80. Używam tego polecenia: ssh -nNT -R 80:localhost:3180 username@site.com, a moje hasło zostało wpisane poprawnie. Dodałem również polecenie GatewayPorts sshd_config.
vaindil

Odkryłem na innej stronie, że możliwy jest czteroczęściowy argument za -R. To polecenie pozwoliło na połączenie, ale gdy próbuję połączyć się z portem 3180, pojawia się błąd odmowy połączenia. ssh -nNT -R serverhostname:3180:localhost:80 username@serverhostname
vaindil

1
Zdarzyło mi się też to, co wydaje się być instrukcją dokładnie tego, co chcesz zrobić. gist.github.com/padde/c3fc672a435fc71e621a
iyrin

1
Ach, rozgryzłem to! Byłem głupi; Przypadkowo dodałem GatewayPortsdyrektywę do MatchGroupdyrektywy, więc nie została zastosowana do całego serwera. Dziękuję bardzo za Twoją pomoc! Przyznam nagrodę, gdy będę w stanie; witryna zmusza mnie do dłuższego oczekiwania, zanim będę mogła.
vaindil

1
Nie musiałem tego robić - polecenie, którego używam, działa ssh -f -N -R 3180:localhost:80 user@website.comi działa idealnie, aby przekierować port 3180 na moim VPS do mojego portu Pi 80 (dzięki czemu mogę uzyskać dostęp do serwera WWW na moim Pi z mojej nazwy domeny na porcie 3180 ).
vaindil
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.