Czy istnieje skrypt, aby dodać regułę przekierowania portów w routerze domowym?

15

TL; DR : Szukam skryptu lub zadania cron, które będą okresowo uruchamiane na hoście Linux (fedora na Raspberry pi), który sprawdzi, czy reguła przekierowania portów nadal istnieje w routerze i doda go, jeśli nie jest . Celem jest zawsze mieć dostęp do hosta Raspberry Pi Linux przez SSH, VNC i interfejs sieci transmisyjnej, z dowolnej maszyny w Internecie poza moją siecią domową. Konfiguracja jest podana poniżej:

Router :

Beetel 440Tx1 ADSL2 router + modem + Wi-Fi.

Konfiguracja :

Router jest podłączony do Internetu (ISP Broadband) i ma dynamiczny zewnętrzny adres IP. Zapewnia prywatną sieć domową moim komputerom z wewnętrznymi adresami IP 192.168.xy, działając również jako DHCP.

Host :

Raspberry pi ARM host z Fedorą Linux, działający cały czas z serwerami ssh, vnc, demonami transmisji uruchomionymi w czasie uruchamiania. Ma również no-ip.com dyndns wolnego DUC (klient aktualizacji dynamicznej), który rutynowo sprawdza zewnętrzny adres IP i wiąże go z łańcuchem hosta. Dlatego zawsze mogę znaleźć zewnętrzny adres IP routera, rozwiązując ciąg znaków dyndns, taki jak myrouter.no-ip.org . Pi ma statyczny wewnętrzny adres IP, taki jak 192.168.1.z.

Przekazywanie portów :

Musisz zalogować się do routera za pomocą graficznego interfejsu użytkownika / przeglądarki z fabrycznymi poświadczeniami tylko wtedy, gdy jest podłączony do tej sieci za pomocą kabla Ethernet lub Wi-Fi chronionego hasłem

http://192.168.1.1/html/index1.html

Konfiguruję regułę, logując się, aby przekazywać dowolny ruch na portach 22, 5900, 9091 w zewnętrznym adresie IP do odpowiednich programów nasłuchujących (sshd, vncserver, transmisja-demon) na pi pod 192.168.1.z.

Problem :

Router traci powyższą zasadę przekierowania portów, gdy jest ponownie uruchamiany (router), a nawet jeśli występuje gwałtowny wzrost energii elektrycznej, a UPS musi chwilowo wkroczyć i zwykle dynamicznie otrzymuje inny zewnętrzny adres IP.

Wymagania :

Zadanie skryptu lub crona, które można uruchomić na moim fedora linux pi, które może zalogować się do mojego routera i okresowo sprawdzać, czy istnieje reguła przekierowania portów i utworzyć ją, jeśli jej brakuje. Pomoc doceniona.

PKM
źródło
1
Czy router obsługuje konfigurację przekierowania portów przez UPnP? (czy programy działające w systemie Windows / Mac / Linux automatycznie same same konfigurują reguły przekierowania portów?)
Scott Chamberlain
Myślę, że tak, ponieważ pcwintech.com/showimage?file=files/screenshots/beetel-440txi/ ... Naprawdę niewiele wiem o UPnP poza stroną wikipedii. Google dla tego typu routera (o którym mowa) doprowadził mnie do tej strony.
PKM,

Odpowiedzi:

18

MiniUPnP to klient UPnP z linii poleceń, który umożliwia włączenie przekierowania portów. Źródło jest dostępne, więc powinieneś być w stanie skompilować go do Pi.

Myślę, że jest to składnia, której potrzebujesz, ale nie mam komputera do jej przetestowania. Po prostu umieściłbyś w skrypcie następujące ustawienia, które skonfigurowałyby porty uPnP

upnpc -a `ifconfig wlan0 | grep "inet addr" | cut -d : -f 2 | cut -d " " -f 1` 22 22 TCP
upnpc -a `ifconfig wlan0 | grep "inet addr" | cut -d : -f 2 | cut -d " " -f 1` 5900 5900 TCP
upnpc -a `ifconfig wlan0 | grep "inet addr" | cut -d : -f 2 | cut -d " " -f 1` 9091 9091 TCP
Scott Chamberlain
źródło
to działa, ale jakie jest właściwe miejsce, aby go dodać, aby polecenie było uruchamiane podczas uruchamiania?
Ciasto piekarz
1
Możesz użyć @reboot <cmd>w swoim crontab
Martin
1
miniupnpc powinien być dostępny w wersji raspbian z apt
Scott
a upnpc, jeśli zostanie uruchomiony z komputera, na którym działa usługa, użyje adresu lokalnego, więc ifconfig / grep nie jest potrzebny
Scott
ifconfig ...część nie działa na mnie tak kiedyś ifconfig | sed -En 's/127.0.0.1//;s/.*inet (addr:)?(([0-9]*\.){3}[0-9]*).*/\2/p', jak na tę odpowiedź .
Helder S Ribeiro