ど忘れSEの備忘録

日々集めた何かしらを残すための何か。 共有とか疑問解決とかできたらいいな。 iPhoneとかiOSとかその他スクリプトとか色々。

ラズパイでDDNS自動更新的なやつを作りたい!【その3 固定IPとDDNS更新編】

最終目的

ラズパイ使って以前構築したVPNDDNSを自動で更新したい!
前回の拡張編では無線LANの有効かとリモートアクセスを可能にし、今回はその第3弾。
ついに目的達成!

 

 

IP固定

DDNS更新するだけなので正直必要はないんだけど、今後機能拡張するってなるとSSHでのログインとかが頻発すると思うから固定しとくと楽だよなぁってことで…。

/etc/network/interfacesの編集

manualで記載されてたとこをstaticに変えてIPとか指定するだけ。簡単。

f:id:forgeserem:20161014163748p:plain

#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指定

変更の反映

f:id:forgeserem:20161014163942p:plain

インタフェース再起動して変更を反映。

$ sudo ifdown wlan0
$ sudo ifup wlan0

 確認

f:id:forgeserem:20161014163858p:plain

よし、無事に指定のIPに変更されたっぽい!

DDNS自動更新

ついに今回の最終目的が見えた。
実はieServerではperlスクリプトが既に用意されてたりするのでそれを転用。
こちらを参考にさせていただきました。

Raspberry Piで自宅ウェブサーバ立て直した話 - shuto_log.aep

スクリプト用意

http://ieserver.net/tools.html

f:id:forgeserem:20161014164445p:plain

スクリプトの配置

適当な場所にディレクトリ作って、さっきのスクリプトをそのままぶち込む。

$ mkdir /usr/local/ddns/

f:id:forgeserem:20161014164703p:plain

定期実行の設定

windowsで言うとこのタスクスケジューラ的な。

/etc/crontabの編集

書式:分 時 日 月 曜日 実行ユーザ 実行コマンド
今回は毎時5分から5分間隔で実行させるように設定。

f:id:forgeserem:20161014165411p:plain

以下を追加。

5,15,25,35,45,55 * * * * root perl /usr/local/ddns/ddns-update.pl

毎時 5,15,25,35,45,55にroot権限でperlddns-update.plを実行、的な。
結構いろんなパターンが記述できるみたい。他にも色々作れそう、つーか作りたい。

Cron - プログラムの定期実行

cronリスタート

f:id:forgeserem:20161014165736p:plain

$ sudo systemctl restart cron

定期的にグローバルIPを取得し、変わってたらログ吐いて更新する。
ログは/root/ip_update.logに吐き出される。

f:id:forgeserem:20161014170216p:plain

よしよし、ちゃんとログ生成されてる。

完成!

これで念願の機能が実装できた。
ルータ再起動されても5分後には更新される…はず!
一度実際に再起動かけて更新されるか試してみよう♪

最後に

なんとなく電子工作っぽくて手が出しにくかったラズパイだったけど、蓋を開けてみればなんてこたぁないただのマイコンだったね。
cronでの定期実行もわかったし、アラームとか色々作れそう。
時間あれば機能追加してみよう。