Esiste uno script per aggiungere la regola di port forwarding nel router di casa?


15

TL; DR : Sto cercando uno script o un lavoro cron, che verrà periodicamente eseguito su un host linux (fedora su raspberry pi) che controllerà se esiste ancora una regola di port forwarding nel router e lo aggiungerà se non lo è . Lo scopo è quello di avere sempre accesso all'host raspberry pi linux tramite SSH, VNC e l'interfaccia web di trasmissione, da qualsiasi macchina su Internet al di fuori della mia rete domestica. La configurazione è riportata di seguito:

Router :

Beetel 440Tx1 router ADSL2 + modem + wifi.

Installazione :

Il router è connesso a Internet (ISP Broadband) e ha un IP esterno dinamico. Fornisce una rete domestica privata ai miei computer con IP interni 192.168.xy che fungono anche da DHCP.

Host :

Un host ARM raspberry pi con Fedora Linux, sempre in esecuzione con server ssh, vnc, daemon di trasmissione avviati all'avvio. Ha anche il DUC (client di aggiornamento dinamico) no-ip.com dyndns gratuito che controlla abitualmente l'IP esterno e lo lega alla stringa host. Quindi posso sempre trovare l'IP esterno del mio router risolvendo la mia stringa dyndns come myrouter.no-ip.org . Il pi ha un IP interno statico come 192.168.1.z.

Port Forwarding :

Devi accedere al router usando la GUI / il browser con le credenziali di fabbrica solo se connesso a quella rete tramite cavo Ethernet o Wi-Fi protetto da password

http://192.168.1.1/html/index1.html

Ho impostato la regola accedendo per inoltrare qualsiasi traffico alle porte 22, 5900, 9091 sull'IP esterno ai rispettivi programmi di ascolto (sshd, vncserver, trasmissione-demone) sul pi a 192.168.1.z.

Problema :

Questo router perde la suddetta regola di port forwarding quando viene riavviato (il router) o anche se si verifica un picco di energia elettrica e l'UPS deve intervenire momentaneamente e di solito ottiene un IP esterno diverso dal mio ISP in modo dinamico.

Requisito :

Uno script o cron job che può essere eseguito sul mio fedora linux pi che può accedere al mio router e periodicamente eseguire il polling per l'esistenza di quella regola di port forwarding e crearlo se manca. Aiuto apprezzato.


1
Il router supporta l'impostazione del port forwarding tramite UPnP? (i programmi in esecuzione su Windows / Mac / Linux possono impostare automaticamente le regole di port forwarding attualmente?)
Scott Chamberlain,

Penso di sì perché pcwintech.com/showimage?file=files/screenshots/beetel-440txi/… Non so molto di UPnP oltre alla pagina di Wikipedia. Cercare su Google quel tipo di router (in questione) mi ha portato a quella pagina.
PKM,

Risposte:


18

MiniUPnP è un client UPnP a riga di comando che consente di abilitare il port forwarding. Il sorgente è disponibile, quindi dovresti essere in grado di compilarlo nel Pi.

Penso che questa sia la sintassi di cui hai bisogno, ma non ho una macchina su cui testarla. Dovresti semplicemente inserire quanto segue in uno script che configuri le porte uPnP per te

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

che funziona, tuttavia qual è il posto giusto per aggiungerlo in modo che il comando venga eseguito all'avvio?
Ciasto piekarz,

1
Puoi usare @reboot <cmd>nel tuo crontab
Martin il

1
miniupnpc dovrebbe essere disponibile con raspbian con apt
Scott

e upnpc, se eseguito dalla macchina che esegue il servizio, utilizzerà l'indirizzo locale, quindi ifconfig / grep non è necessario
Scott

la ifconfig ...parte non ha funzionato per me, quindi ho usato ifconfig | sed -En 's/127.0.0.1//;s/.*inet (addr:)?(([0-9]*\.){3}[0-9]*).*/\2/p'secondo questa risposta .
Helder S Ribeiro,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.