ラズパイでDDNS自動更新的なやつを作りたい!【その3 固定IPとDDNS更新編】
最終目的
ラズパイ使って以前構築したVPNのDDNSを自動で更新したい!
前回の拡張編では無線LANの有効かとリモートアクセスを可能にし、今回はその第3弾。
ついに目的達成!
Raspberry Pi2 Model B ボード&ケースセット (Standard, Clear)-Physical Computing Lab
- 出版社/メーカー: TechShare
- メディア: エレクトロニクス
- この商品を含むブログ (10件) を見る
IP固定
DDNS更新するだけなので正直必要はないんだけど、今後機能拡張するってなるとSSHでのログインとかが頻発すると思うから固定しとくと楽だよなぁってことで…。
/etc/network/interfacesの編集
manualで記載されてたとこをstaticに変えてIPとか指定するだけ。簡単。
#iface wlan0 inet manual # コメントアウト
iface wlan0 inet static # staticに変更
address 192.168.11.25 # IP指定
netmask 255.255.255.0 # マスク指定
gateway 192.168.11.1 # GW指定
変更の反映
インタフェース再起動して変更を反映。
$ sudo ifdown wlan0
$ sudo ifup wlan0
確認
よし、無事に指定のIPに変更されたっぽい!
DDNS自動更新
ついに今回の最終目的が見えた。
実はieServerではperlのスクリプトが既に用意されてたりするのでそれを転用。
こちらを参考にさせていただきました。
Raspberry Piで自宅ウェブサーバ立て直した話 - shuto_log.aep
スクリプト用意
http://ieserver.net/tools.html
スクリプトの配置
適当な場所にディレクトリ作って、さっきのスクリプトをそのままぶち込む。
$ mkdir /usr/local/ddns/
定期実行の設定
windowsで言うとこのタスクスケジューラ的な。
/etc/crontabの編集
書式:分 時 日 月 曜日 実行ユーザ 実行コマンド
今回は毎時5分から5分間隔で実行させるように設定。
以下を追加。
5,15,25,35,45,55 * * * * root perl /usr/local/ddns/ddns-update.pl
毎時 5,15,25,35,45,55にroot権限でperlのddns-update.plを実行、的な。
結構いろんなパターンが記述できるみたい。他にも色々作れそう、つーか作りたい。
cronリスタート
$ sudo systemctl restart cron
定期的にグローバルIPを取得し、変わってたらログ吐いて更新する。
ログは/root/ip_update.logに吐き出される。
よしよし、ちゃんとログ生成されてる。
完成!
これで念願の機能が実装できた。
ルータ再起動されても5分後には更新される…はず!
一度実際に再起動かけて更新されるか試してみよう♪
最後に
なんとなく電子工作っぽくて手が出しにくかったラズパイだったけど、蓋を開けてみればなんてこたぁないただのマイコンだったね。
cronでの定期実行もわかったし、アラームとか色々作れそう。
時間あれば機能追加してみよう。