これまでの設定は以下の記事に纏めてあるので,最初から読みたい方はどうぞ.
Raspberry Pi を楽天ひかりのIPv4 over IPv6(DS-Lite・Xpass)に対応したルーターにする
Raspberry Pi ルーターで DS-Lite と PPPoE 接続を共存させる
今回は無料で使える No-IP を利用する.
初めに,https://www.noip.com/ にアクセスしてアカウントの作成とホスト名の取得を完了したら,以下の記事に従ってクライアントソフトをビルドする.ただし,ルート権限の取得と make install はしないようにする.
How to Install the Dynamic Update Client on Linux
理由は,/etc とか /usr/local とかを勝手に弄られるのが嫌だから.
$ wget http://www.no-ip.com/client/linux/noip-duc-linux.tar.gz $ cd noip-2.1.9-1 $ make
ビルドが完了したら,以下のコマンドで conf ファイルを作成する.設定は全てデフォルトで良い.
$ ./noip2 -C -c hoge.conf
conf ファイルが作成されたら,IPアドレス更新のテストを実行する.
$ ./noip2 -c hoge.conf -i XXX.XXX.XXX.XXX
No-IP のアカウントページに表示された IP が XXX.XXX.XXX.XXX に更新されていたら,クライアントソフトの設定はひとまず完了.
次はこれを定期的に実行するために,cronを仕込む.
cronで動かすために作成したスクリプトは以下の通り.host コマンドで取得したDDNS によるIPアドレスと,ip コマンドで取得したデバイスの実 IPアドレスが異なっていたら,クライアントソフトを使ってIPアドレスを更新するという流れ.
/home/mirasuni/bin/hoge.sh ---------------------------------------- #!/bin/bash readonly NOIP_DIR="${HOME}/noip-2.1.9-1/" readonly CONF_FILENAME="hoge.conf" readonly HOST_URL="hoge.ddns.net" readonly DEVICE_NAME=ppp0 if HOST_IP=$( host ${HOST_URL} ); then HOST_IP=$( echo ${HOST_IP} | awk '{print $4}' ) echo ${HOST_URL} : ${HOST_IP} else echo Failed : host command exit 1 fi if DEVICE_IP=$( ip addr show dev ${DEVICE_NAME} | grep inet ); then DEVICE_IP=$( echo ${DEVICE_IP} | awk '{print $2}' ) echo ${DEVICE_NAME} : ${DEVICE_IP} else echo Failed : ip command exit 1 fi if [ "${HOST_IP}" != "${DEVICE_IP}" ] ; then cd ${NOIP_DIR} ./noip2 -c ${CONF_FILENAME} -i ${DEVICE_IP} else echo ${HOST_URL} and ${DEVICE_NAME} are same. fi exit 0
スクリプトの動作確認をして,問題なければ,これが5分に1回実行されるようcronを仕込む.
$ crontab -e ---------------------------------------- */5 * * * * /home/mirasuni/bin/hoge.sh
以下,補足.
No-IPが提供するクライアントソフトは-i オプションを付けずに起動すると常駐して,conf ファイル作成時に設定した間隔でアップデートするように動作するが,デフォルトの間隔は30分と長いので,今回はcronで回すようにした.
クライアントソフトの設定を5分間隔にして常駐させてしまうと,頻繁にアップデートが走りサーバーに負荷をかけてしまう恐れがあるので,スクリプトでアップデートの要否を判定してからIPアドレス指定で動作するように仕込むことで,サーバーに負荷をかけずに,IPアドレスが変わった場合のラグも最小限に抑えることを目論んでいる.
次回はラズパイルーターでポートフォワードさせて,LAN 内の端末(こっちもラズパイだけどw)で VPN を構築したいと思う.
0 件のコメント:
コメントを投稿