ホームルーターにポート転送ルールを追加するスクリプトはありますか?


15

TL; DR:Linuxホスト(raspberry piのフェドラ)で定期的に実行されるスクリプトまたはcronジョブを探しています。目的は、ホームネットワークの外部にあるインターネット上の任意のマシンから、SSH、VNC、および送信Webインターフェイスを介してraspberry pi Linuxホストに常にアクセスできるようにすることです。セットアップは次のとおりです。

ルーター

Beetel 440Tx1 ADSL2ルーター+モデム+ Wifi。

セットアップ

ルーターはインターネット(ISPブロードバンド)に接続されており、動的な外部IPを持っています。DHCPとしても機能する内部IP 192.168.xyを持つコンピューターにプライベートホームネットワークを提供します。

ホスト

Fedora Linuxを搭載したraspberry pi ARMホストは、起動時に常にssh、vnc、伝送デーモンサーバーで実行されます。また、no-ip.com dyndns free DUC(動的更新クライアント)があり、これは定期的に外部IPをチェックし、ホスト文字列にバインドします。そのため、myrouter.no-ip.orgのようなdyndns文字列を解決することで、ルーターの外部IPをいつでも見つけることができます。piには、192.168.1.zのような静的内部IPがあります。

ポート転送

イーサネットケーブルまたはパスワードで保護されたwi-fiを介してネットワークに接続している場合にのみ、工場の資格情報でGUI /ブラウザーを使用してルーターにログインする必要があります

http://192.168.1.1/html/index1.html

外部IPのポート22、5900、9091のトラフィックを192.168.1.zのpiのそれぞれのリスナープログラム(sshd、vncserver、transmission-daemon)に転送するためにログインしてルールを設定します。

問題点

このルーターは、ルーター(ルーター)を再起動したとき、または電力が急増してUPSが一時的に介入しなければならず、通常はISPから異なる外部IPを動的に取得した場合、上記のポート転送ルールを失います。

要件

fedora linux piで実行できるスクリプトまたはcronジョブ。ルーターにログインし、定期的にポート転送ルールの存在をポーリングし、欠落している場合は作成します。感謝します。


1
ルーターはUPnPによるポート転送の設定をサポートしていますか?(windows / mac / linuxで実行されているプログラムは、現在、ポート転送ルールを自動的に設定できますか?)
Scott Chamberlain

なぜなら、pcwintech.com / showimage?file = files / screenshots / beetel-440txi / …Wikipediaページ以外のUPnPについてはあまり知らないからです。そのルーターのタイプ(問題の)をグーグルで検索すると、そのページに移動しました。
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

それは機能しますが、起動時にコマンドが実行されるように追加する適切な場所は何ですか?
シアストピエカルツ16

1
あなたは使用することができ@reboot <cmd>、あなたのcrontabに
マーティン

1
miniupnpcは、aptを備えたraspbianで利用可能になります
Scott

ifconfigコマンド/ grepのは不必要であるようにupnpcは、サービスを実行しているマシンから実行する場合は、ローカルアドレスを使用します
スコット・

そのifconfig ...部分は私のためにうまくいきませんでしたので、私ifconfig | sed -En 's/127.0.0.1//;s/.*inet (addr:)?(([0-9]*\.){3}[0-9]*).*/\2/p'この答えに従って使いました。
ヘルダーSリベイロ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.