Temat: Podłączenie się do routera będącego za NAT'em

Poszukuje sposobu na połączenie się do routera (WRT160NL) który nie posiada zewnętrznego adresu IP. Do dyspozycji mam serwer z zewnętrznym IP na którym myślałem o postawieniu VPN i łączeniu się do niego z routera. Mam jednak wrażenie że to może być lekki overkill, zwłaszcza że potrzebuję jedynie dostępu do kilku usług, nie psując tym samym dostępu do internetu sieci za routerem. Czy ktoś może mnie naprowadzić na temat?

2

Odp: Podłączenie się do routera będącego za NAT'em

Zwykły tunel ssh nawiązany z tego linksysa?

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

3

Odp: Podłączenie się do routera będącego za NAT'em

No tak, reverse SSH. Właściwie to chciałbym jeszcze zmusić OpenWRT żeby okresowo sprawdzał czy ma połączenie z serwerem i w razie porażki łączył się ponownie, jest jakiś taki sprytny skrypt uruchamiany przy starcie routera? [:

4

Odp: Podłączenie się do routera będącego za NAT'em

Tzn czy jest skrypt? Tak: http://eko.one.pl/?p=openwrt-skrypty#sk … ciesystemu

Co do sprawdzania: crona do roboty weź...

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

5

Odp: Podłączenie się do routera będącego za NAT'em

Dzięki, wszystko śmiga jak trzeba. Gdyby ktoś równie niezmyślny jak ja potrzebował, to załączam prosty skrypt który uruchamiany przez cron'a nadzoruje pracę tunelu:

#!/bin/sh
COMMAND="ssh -f -NT -R 1234:localhost:22 user@myserver.org -i /root/.ssh/id_rsa"
pgrep -f "$COMMAND" > /dev/null 2>&1 || $COMMAND

6

Odp: Podłączenie się do routera będącego za NAT'em

1. Czy authorized_keys  nie powinien być w /etc/dropbear?
2. Co zrobić jak połączenie zerwało (nie wiadomo dlaczego) a proces "ssh..." dalej chodzi?

Takie coś mi się przywiesiło:

#!/bin/sh
T="ssh -f -y -i /root/.ssh/rsakey root@adres -R 2022:127.0.0.1:22 ssh -N -f -g -y -p 2022 -i /root/.ssh/rsakey root@127.0.0.1 -L 5555:127.0.0.1:5555"
pgrep -f "$T" > /dev/null 2>&1 || $T

dopiero kill -9 pomogło

hmm

7

Odp: Podłączenie się do routera będącego za NAT'em

Jak się autoryzujesz po kluczach to tak. Zauważ że tu jawnie podajesz gdzie jest klucz.

Jak tunel nie działa a ssh wisi to w/w pierwotny skrypt tego nie sprawdzi, on tylko sprawdza istnienie procesu. musiał byś sobie sprawdzać czy druga strona odpowiada np. np pingi i kilować ssh jak nie.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

8

Odp: Podłączenie się do routera będącego za NAT'em

No właśnie ciekawa sprawa. Na routerze A za firewalem chodzi proces ssh, a na routerze B z public IP nie ma śladu o połączeniu (z nieznanej przyczyny), a rano jeszcze było wink. Zrobiłem na B nawet reset. Ale A dalej trzyma proces. "Kill" nie pomogło, dopiero "Kill -9". Potem podany skrypt przywrócił co miał przywrócić.

Jak dam ping, to B odpowie bo chodzi.
wiem że "netstat -l" na B pokazuje czy port otwarty czy nie (ten 5555)

może jakby A wykonał poprzez ssh na B polecenie netstat i sprawdził czy 5555 otwary, tylko jak wynik przekazać do A?

9

Odp: Podłączenie się do routera będącego za NAT'em

Ale sprawdzaj nie hosta tylko drugą stronę tunelu. Bo coś tam jest i pewnie nasłuchuje, nie?

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

10 (edytowany przez uggp 2012-04-17 07:28:14)

Odp: Podłączenie się do routera będącego za NAT'em

Takie coś wykombinowałem:

#!/bin/sh
T="ssh -f -y -i /root/.ssh/rsakey root@adres -R 2022:127.0.0.1:22 ssh -N -f -g -y -p 2022 -i /root/.ssh/rsakey root@127.0.0.1 -L 5555:127.0.0.1:5555"
N=$(echo -n | nc adres 5555 2>&1)
S=$(echo $N | grep -o "cannot")
if [ "$S" == "cannot" ]; then
pkill -9 -f "$T" > /dev/null 2>&1 || $T
fi
pgrep -f "$T" > /dev/null 2>&1 || $T

Edit: Dodałem skrypt

11

Odp: Podłączenie się do routera będącego za NAT'em

Hejo, mam pewien problem.

Taki skrypcior

#!/bin/sh
T="ssh -fNT -i /etc/dropbear/dropbear_ed25519_host_key -R 9001:localhost:22 sshtunnel@goldentk.mywire.org"
pgrep -f "$T" > /dev/null 2>&1 || $T

Ale przy próbie połączenia z serwera dostaję:

root@OpenWrt:~# ssh root@127.0.0.1 -p 9001
ssh: Connection to root@127.0.0.1:9001 exited: Remote closed the connection

Netstat pokazuje że połączenie jest utrzymywane.

root@OpenWrt:~# netstat -l -n -p | grep -e 9001
tcp        0      0 127.0.0.1:9001          0.0.0.0:*               LISTEN      12992/dropbear
tcp        0      0 ::1:9001                :::*                    LISTEN      12992/dropbear

Ktoś wie o co może chodzić?

12 (edytowany przez mar_w 2023-08-17 00:29:26)

Odp: Podłączenie się do routera będącego za NAT'em

Golden_T napisał/a:

Hejo, mam pewien problem.

Taki skrypcior

#!/bin/sh
T="ssh -fNT -i /etc/dropbear/dropbear_ed25519_host_key -R 9001:localhost:22 sshtunnel@goldentk.mywire.org"
pgrep -f "$T" > /dev/null 2>&1 || $T

Ale przy próbie połączenia z serwera dostaję:

root@OpenWrt:~# ssh root@127.0.0.1 -p 9001
ssh: Connection to root@127.0.0.1:9001 exited: Remote closed the connection

...

Ktoś wie o co może chodzić?

a może dlatego, że logujesz się na konto root któremu wyłączyłeś zdalne logowanie po ssh....

opcja nr 2:
zainstaluj openssh-server oraz openssh-client odpowiednio na serwerze i kliencie smile

Xiaomi AX3000T @ Netgear R6220
* DVBT2 - T230C *

13

Odp: Podłączenie się do routera będącego za NAT'em

mar_w napisał/a:
Golden_T napisał/a:

Hejo, mam pewien problem.

Taki skrypcior

#!/bin/sh
T="ssh -fNT -i /etc/dropbear/dropbear_ed25519_host_key -R 9001:localhost:22 sshtunnel@goldentk.mywire.org"
pgrep -f "$T" > /dev/null 2>&1 || $T

Ale przy próbie połączenia z serwera dostaję:

root@OpenWrt:~# ssh root@127.0.0.1 -p 9001
ssh: Connection to root@127.0.0.1:9001 exited: Remote closed the connection

...

Ktoś wie o co może chodzić?

a może dlatego, że logujesz się na konto root któremu wyłączyłeś zdalne logowanie po ssh....

opcja nr 2:
zainstaluj openssh-server oraz openssh-client odpowiednio na serwerze i kliencie smile

Hmm, SSH remote dla root jest włączone z poziomu LUCI. Czemu zamiast dropbear’a instalować openSSH?

14

Odp: Podłączenie się do routera będącego za NAT'em

Ok, rozwiązałem problem! Zamiast localhost podałem adres routera 192.168.1.1 i tunel zaczął działać poprawnie smile.

15

Odp: Podłączenie się do routera będącego za NAT'em

Super że Ci się udało i podałeś rozwiązanie.

"Czemu zamiast dropbear’a instalować openSSH?"
... Bo działa po adresie 127.0.0.1 ?
A poza tym niektóre polecenia w dropbear są okrojone i często instaluję pełne wersje z pakietów, żeby mieć pewność, że to nie jest "biedny kuzyn" prosiaczka wink

Xiaomi AX3000T @ Netgear R6220
* DVBT2 - T230C *