Есть ли скрипт для добавления правила переадресации портов в домашнем маршрутизаторе?

15

TL; DR : я ищу сценарий или задание cron, которое будет периодически запускаться на хосте linux (fedora на raspberry pi), которое проверит, существует ли правило переадресации портов в маршрутизаторе, и добавит его, если его нет , Цель состоит в том, чтобы всегда иметь доступ к хосту raspberry pi linux через SSH, VNC и веб-интерфейс передачи с любой машины в Интернете за пределами моей домашней сети. Настройка приведена ниже:

Маршрутизатор :

Beetel 440Tx1 ADSL2 роутер + модем + wifi.

Настройка :

Маршрутизатор подключен к Интернету (ISP Broadband) и имеет динамический внешний IP. Он предоставляет частную домашнюю сеть моим компьютерам с внутренними IP-адресами 192.168.xy, действующими как DHCP.

Хост :

ARM-хост raspberry pi с Fedora Linux, постоянно работающий с ssh, vnc, серверы-демоны передачи, запускались во время загрузки. Он также имеет бесплатный DUC (динамический клиент обновления) no-ip.com, который регулярно проверяет внешний IP и привязывает его к строке хоста. Поэтому я всегда могу найти внешний IP-адрес моего маршрутизатора, разрешив строку dyndns, например myrouter.no-ip.org . Пи имеет статический внутренний IP-адрес, такой как 192.168.1.z.

Переадресация портов :

Необходимо войти в маршрутизатор с помощью графического интерфейса пользователя / браузера с заводскими учетными данными, только если он подключен к этой сети через кабель Ethernet или защищенный паролем Wi-Fi

http://192.168.1.1/html/index1.html

Я установил правило, войдя в систему для пересылки любого трафика через порты 22, 5900, 9091 на внешний IP-адрес соответствующим программам-слушателям (sshd, vncserver, translation-daemon) на pi на 192.168.1.z.

Проблема :

Этот маршрутизатор теряет вышеупомянутое правило переадресации порта, когда он (маршрутизатор) перезапускается, или даже если есть скачок в электрической мощности, и ИБП должен на мгновение вступить, и обычно динамически получает другой внешний IP от моего провайдера.

Требование :

Сценарий или задание cron, которое может выполняться на моем fedora linux pi, которое может войти в мой маршрутизатор и периодически проверять наличие этого правила переадресации портов и создавать его, если оно отсутствует. Помощь оценена.

PKM
источник
1
Поддерживает ли маршрутизатор настройку переадресации портов через UPnP? (Могут ли программы, работающие в Windows / Mac / Linux, автоматически устанавливать правила переадресации портов в настоящее время?)
Скотт Чемберлен
Я так думаю, потому что pcwintech.com/showimage?file=files/screenshots/beetel-440txi/… Я не очень много знаю об UPnP, кроме страницы Википедии. Поиск в Google по этому типу маршрутизатора привел меня на эту страницу.
PKM

Ответы:

18

MiniUPnP - это клиент UPnP для командной строки, который позволяет включить переадресацию портов. Источник доступен, поэтому вы должны иметь возможность скомпилировать его для Pi.

Я думаю, что это тот синтаксис, который вам нужен, но у меня нет машины для его тестирования. Вы бы просто поместили следующее в скрипт, который бы настраивал порты 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
Скотт Чемберлен
источник
это работает, однако, каково правильное место, чтобы добавить его, чтобы команда запускалась при запуске?
Ciasto piekarz
1
Вы можете использовать @reboot <cmd>в своем crontab
Martin
1
miniupnpc должен быть доступен с raspbian с apt
Скотт
и upnpc, если он запускается с компьютера, на котором запущена служба, будет использовать локальный адрес, поэтому ifconfig / grep не нужен
Скотт,
ifconfig ...часть не работал для меня , так что я использовал ifconfig | sed -En 's/127.0.0.1//;s/.*inet (addr:)?(([0-9]*\.){3}[0-9]*).*/\2/p'в соответствии с этим ответом .
Helder S Ribeiro