TL; DR : estoy buscando un script o un trabajo cron, que se ejecutará periódicamente en un host de Linux (fedora en raspberry pi) que verificará si todavía existe una regla de reenvío de puertos en el enrutador y la agregará si no es así . El objetivo es tener siempre acceso al host Linux raspberry pi a través de SSH, VNC y la interfaz web de transmisión, desde cualquier máquina en Internet fuera de mi red doméstica. La configuración se da a continuación:
Enrutador :
Beetel 440Tx1 ADSL2 enrutador + módem + wifi.
Configuración :
El enrutador está conectado a Internet (ISP Broadband) y tiene una IP externa dinámica. Proporciona una red doméstica privada a mis computadoras con IP internas 192.168.xy que también actúan como DHCP.
Anfitrión :
Un host ARM de raspberry pi con Fedora Linux, que se ejecuta todo el tiempo con ssh, vnc, servidores de transmisión-demonio iniciados en el momento del arranque. También tiene el no-ip.com dyndns free DUC (cliente de actualización dinámica) que verifica rutinariamente la IP externa y la vincula a la cadena del host. Por lo tanto, siempre puedo encontrar la IP externa de mi enrutador resolviendo mi cadena dyndns como myrouter.no-ip.org . El pi tiene una IP interna estática como 192.168.1.z.
Reenvío de puertos :
Debe iniciar sesión en el enrutador utilizando la GUI / navegador con credenciales de fábrica solo si está conectado a esa red, ya sea a través de un cable de ethernet o wifi protegido con contraseña
http://192.168.1.1/html/index1.html
Configuré la regla al iniciar sesión para reenviar cualquier tráfico en los puertos 22, 5900, 9091 en la IP externa a los respectivos programas de escucha (sshd, vncserver, transmission-daemon) en el pi en 192.168.1.z.
Problema :
Este enrutador pierde la regla de reenvío de puertos anterior cuando se reinicia (el enrutador), o incluso si hay un pico de energía eléctrica y el UPS tiene que intervenir momentáneamente, y generalmente obtiene una IP externa diferente de mi ISP dinámicamente.
Requisito :
Un trabajo de secuencia de comandos o cron que puede ejecutarse en mi fedora linux pi que puede iniciar sesión en mi enrutador y sondear periódicamente la existencia de esa regla de reenvío de puertos y crearla si falta. Ayuda apreciada.
Respuestas:
MiniUPnP es un cliente UPnP de línea de comandos que le permite habilitar el reenvío de puertos. La fuente está disponible, por lo que debería poder compilarla en Pi.
Creo que esta es la sintaxis que necesita, pero no tengo una máquina para probarla. Simplemente pondría lo siguiente en un script que configuraría los puertos uPnP por usted
fuente
@reboot <cmd>
en tu crontabifconfig ...
parte no funcionó para mí, así que utilicéifconfig | sed -En 's/127.0.0.1//;s/.*inet (addr:)?(([0-9]*\.){3}[0-9]*).*/\2/p'
según esta respuesta .