🐕
[Lua] YAMAHAルータでグローバルIPアドレスをDDNSに通知 (MyDNSJP)
要約
- YAMAHAルータ (Lua実装)でグローバルIPアドレスをDDNSのMyDNSJPに通知するLua script
- 実施環境はYAMAHA RTX830 (Lua5.1系実装)
- 自身のグローバルIPアドレス(v4)を表示するサイトから情報を取得
- DDNSへグローバルIPアドレスを通知する
Lua Script内容
- GitHub Gistから参照
使用方法
-
YAMAHAルータにファイルを転送する準備
YAMAHAルータ側で実施
1.1. ルータ側にスクリプト保管ディレクトリ作成
make directory /ディレクトリ名
例:make directory /lua
1.2. ディレクトリ作成後の確認
show file list /
※ファイルの削除
delete ファイルのフルパス
1.3. tftpを有効にする
tftp host 許可するインターフェースorIPアドレスorIPアドレス空間等
例:tftp host lan1/1
参考:http://www.rtpro.yamaha.co.jp/RT/manual/rt-common/setup/tftp_host.html -
Lua scriptを記述し、ファイルを保存する (.lua)
-
ルータにファイル転送 (tftp)
$ tftp IPアドレス
tftp> put 転送ファイル名 /ルータ側ファイルのフルパス/ルータのパスワード
tftp> quit
- Luaスクリプト実行
YAMAHAルータ側で実施
# lua luaファイルのフルパス
例:# lua /lua/rtx_update_mydnsjp.lua
- 実行状況確認
# show status lua
※Syslogの確認
# show log
- YAMAHAルータでのスケジュール登録
NTP同期の登録
例:schedule at 1 */* *:50 * ntpdate ntp.nict.jp
Lua scriptの登録
例:schedule at 10 */* *:55 * lua /lua/rtx_update_mydnsjp.lua
参考:http://www.rtpro.yamaha.co.jp/RT/manual/rt-common/schedule/schedule_at.html
コード説明
- YAMAHAルータでのLuaライブラリは以下のURL
http://www.rtpro.yamaha.co.jp/RT/docs/lua/tutorial/library.html
処理の流れ
- グルーバルIPアドレス情報を取得し、変数に入れる
rsp_gipv4 = rt.httprequest(req_gipv4)
- グローバルIPアドレス情報取得時のHTTPステータスコードで成功 (200)したことをチェック、成功以外の場合はSyslogにメッセージを追記しscriptを終了
rsp_gipv4.code ~= 200
- DDNSのMyDNSJPに通知するURLを生成し変数に入れる
IPアドレスはHTTP bodyから取得:rsp_gipv4.body
- DDNSのMyDNSJPにグロ=バルIPアドレスを通知する
rt.httprequest(req_update_ddns)
- DDNSのMyDNSJPに通知後、HTTP body内容に
Login and IP address notify OK.
の文字列があるかチェックする
string.match(rsp_update_ddns.body,"Login.and.IP.address.notify.OK\.")
- チェックの結果をSyslogにメッセージを追記し、scriptを終了
Discussion