Existe um script para adicionar regra de encaminhamento de porta no roteador doméstico?

15

TL; DR : Estou procurando um script ou um trabalho cron, que será executado periodicamente em um host linux (fedora no raspberry pi) que verificará se ainda existe uma regra de encaminhamento de porta no roteador e o adicionará se não houver . O objetivo é sempre ter acesso ao host raspberry pi linux via SSH, VNC e a interface da web de transmissão, de qualquer máquina na Internet fora da minha rede doméstica. A configuração é dada abaixo:

Roteador :

Roteador ADSL2 Beetel 440Tx1 + modem + wifi.

Configuração :

O roteador está conectado à Internet (ISP Broadband) e possui um IP externo dinâmico. Ele fornece uma rede doméstica privada para meus computadores com IPs internos 192.168.xy, que também atuam como DHCP.

Anfitrião :

Um host ARM raspberry pi com o Fedora Linux, rodando o tempo todo com servidores ssh, vnc, daemon de transmissão iniciados no momento da inicialização. Ele também possui o DUC gratuito do dyndns no-ip.com (cliente de atualização dinâmica), que verifica regularmente o IP externo e o vincula à string do host. Para que eu possa sempre encontrar o IP externo do meu roteador, resolvendo minha string dyndns como myrouter.no-ip.org . O pi tem um IP interno estático como 192.168.1.z.

Encaminhamento de porta :

É necessário fazer login no roteador usando a GUI / navegador com credenciais de fábrica somente se conectado a essa rede por meio de cabo Ethernet ou wi-fi protegido por senha

http://192.168.1.1/html/index1.html

Configurei a regra efetuando login para encaminhar qualquer tráfego nas portas 22, 5900, 9091 no IP externo para os respectivos programas ouvintes (sshd, vncserver, daemon de transmissão) no pi em 192.168.1.z.

Problema :

Este roteador perde a regra de encaminhamento de porta acima quando (o roteador) é reiniciado, ou mesmo se houver um pico de energia elétrica e o no-break precisar intervir momentaneamente, e geralmente obtém um IP externo diferente do meu ISP dinamicamente.

Exigência :

Um script ou tarefa cron que pode ser executada no meu fedora linux pi que pode efetuar login no meu roteador e pesquisar periodicamente a existência dessa regra de encaminhamento de porta e criá-la se ela estiver ausente. Ajuda apreciada.

PKM
fonte
1
O roteador suporta a configuração de encaminhamento de porta via UPnP? (programas podem executar no Windows / Mac / Linux automaticamente configurar regras de envio de porta em si atualmente?)
Scott Chamberlain
Acho que sim, porque pcwintech.com/showimage?file=files/screenshots/beetel-440txi/… realmente não sei muito sobre UPnP além da página da wikipedia. Pesquisar no Google por esse tipo de roteador (em questão) me levou a essa página.
PKM

Respostas:

18

MiniUPnP é um cliente UPnP de linha de comando que permite ativar o encaminhamento de porta. A fonte está disponível para que você possa compilá-la no Pi.

Acho que essa é a sintaxe que você precisa, mas não tenho uma máquina para testá-la. Você apenas colocaria o seguinte em um script que configuraria as portas uPnP para você

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
fonte
que funciona, no entanto, qual é o lugar certo para adicioná-lo para que o comando seja executado na inicialização?
ciasto Piekarz
1
Você pode usar @reboot <cmd>no seu crontab
Martin
1
O miniupnpc deve estar disponível com raspbian com apt
Scott
e upnpc, se correr a partir da máquina executando o serviço, vai usar o endereço local de modo a ifconfig / grep é desnecessário
Scott
a ifconfig ...peça não funcionou para mim, então eu usei de ifconfig | sed -En 's/127.0.0.1//;s/.*inet (addr:)?(([0-9]*\.){3}[0-9]*).*/\2/p'acordo com esta resposta .
Helder S Ribeiro