Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Połączenie do serwera http za NAT bez przekierowania portów

szaleniec 23 Lut 2011 20:28 17439 0
  • #1 23 Lut 2011 20:28
    szaleniec
    VIP Zasłużony dla elektroda

    Niniejszy poradnik pokrótce przedstawia, jak połączyć się do serwera http będącego za natem w przypadku braku możliwości przekierowania portu.

    W przedstawieniu udział biorą:
    1. Maszyna A, która jest za natem i na której jest serwer http, do którego chcemy się dostać. Na maszynie jest zainstalowany Linux lub BSD. Przynajmniej jednorazowo potrzebny będzie dostęp lokalny do maszyny.
    2. Serwer pośredniczący B, na którym też jest Linux lub BSD
    3. Komputer C, z którego chcemy się dostać do serwera, dla własnej wygody opiszę przypadek, gdy na tym komputerze jest zainstalowany Linux.

    Najpierw jak wspomniałem należy uzyskać jednorazowy dostęp do serwera A, następnie należy utworzyć odwrotny tunel z A do B:

    Code:
    ssh -nNT -R 10002:localhost:777 B

    * port 777 to port, na którym nasłuchuje usługa ssh na serwerze A
    Powyższe możemy sobie dodać do crona lub napisać skrypt podtrzymujący połączenie ssh albo skorzystać z auto ssh. Aby skrypt mógł się sam przez ssh połączyć potrzebna będzie autoryzacja przez klucze, ale to inna bajka.

    Mamy utworzony odwrotny tunel i możemy zalogować się przez ssh bezpośrednio na serwer A:
    Code:
    ssh user@B -p 10002


    Teraz pozostaje jedynie utworzyć tunel ssh z komputera C do serwera A:
    Code:
    ssh -fND localhost:11111 user@A -p 10002


    Teraz pozostaje jedynie skonfigurować przeglądarkę (na przykładzie firefoksa):
    Połączenie do serwera http za NAT bez przekierowania portów

    Teraz aby połączyć się z serwerem http na maszynie A wpisujemy w pasku adresu przeglądarki:
    localhost


    Mała uwaga: aby można korzystać z odwrotnego tunelu, należy na serwerze pośredniczącym B wprowadzić małe zmiany w konfiguracji openssh:
    Code:
    TCPKeepAlive yes
    
    ClientAliveInterval 30
    ClientAliveCountMax 99999
    GatewayPorts yes


    Jeśli na maszynie C jest windows, to tunel można otworzyć za pomocą programu putty.
    Uwagi proszę kierować na pw. Poradnik nie jest kierowany do osób początkujących.


    Fajne!