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, которое может войти в мой маршрутизатор и периодически проверять наличие этого правила переадресации портов и создавать его, если оно отсутствует. Помощь оценена.
Ответы:
MiniUPnP - это клиент UPnP для командной строки, который позволяет включить переадресацию портов. Источник доступен, поэтому вы должны иметь возможность скомпилировать его для Pi.
Я думаю, что это тот синтаксис, который вам нужен, но у меня нет машины для его тестирования. Вы бы просто поместили следующее в скрипт, который бы настраивал порты uPnP для вас
источник
@reboot <cmd>
в своем crontabifconfig ...
часть не работал для меня , так что я использовалifconfig | sed -En 's/127.0.0.1//;s/.*inet (addr:)?(([0-9]*\.){3}[0-9]*).*/\2/p'
в соответствии с этим ответом .