GL-iNet GL-AR750Sを使っていると、 WAN IP アドレスを更新すべく WAN インターフェースを再起動させたり、時には機器そのものを再起動させたのに、結局ISPから貰えるのは以前と同じ WAN IP アドレスと言うことが多々有ります。 OpenWRT に於いて強制的に現有 IP を破棄の上、新しい IP を取得する確実な方法を調べてみました。
LuCIのInterface頁にてWANインターフェースのRestartやStop/Startを試しますが、今まで使っていたIPアドレスが再割り当てされるだけで変化はありません。Edit押して設定ページに行っても、何かIPアドレスを再取得してくれそうな機能は有りませんでした。
以前、ddWRT搭載ルータを使っていた頃、WAN IPアドレスの再取得に繋がる機能があって、時々使っていたような記憶が有ります。ルータや前段のISPモデムを物理的に再起動させることなく、外向きIPアドレスを更新する機能は経常的に使うものではないものの、トラブルシューティングの際などに有用なことも多いでしょう。解決策を調べてみると、フォーラムでCLIベースで出来そうな記述を見つけ、これをベースに単純なバッチスクリプトを組んでみました(IPアドレス取得に外部サービスを使っている手抜き仕様をご容赦)。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
#!/bin/sh echo "Current Public IP is:" `curl -s https://api.ipify.org/` killall -SIGUSR2 udhcpc echo "Releasing DHCP, wait for 60s..." sleep 60 killall -SIGUSR1 udhcpc echo "Renewing DHCP..." ifdown wan echo "WAN I/F Down, wait for 2s..." sleep 2 ifup wan echo "WAN I/F Up, wait for 15s..." sleep 15 echo "Current Public IP is:" `curl -s https://api.ipify.org/` exit 0 |
上記スクリプト中のSleep値については、もしかすると個々のISPによって状況は異なるかも知れません。現にDHCPリリース後のSleep値は元々30秒としていましたが、それではIPアドレスの再取得には繋がりませんでした。
実際にこのスクリプトを使うには、sshから入って実行するか、LuCI上で任意のコマンドを実行できるパッケージ「 luci-app-commands」をインストールしてそこから実行することになりますが、セキュリティを鑑みると前者にとどめておくのが良いでしょう。