DDNSでLANの外から自宅のRaspberry PiにSSH接続する
普通のインターネット回線では、グローバルIPが定期的に変わってしまうため、 自宅に置いたRaspberry Piなんかをサーバー代わりに使うには不便。
かといって、固定グローバルIPアドレスを貰うには月1000円くらい払う必要がある。
そこで、Dynamic DNS (DDNS) というサービスを利用することにする。
DDNSとは
Domain Name System (DNS) は、ドメイン名とIPアドレスを紐付けるシステムのこと。 サーバーへのアクセスは通常、IPアドレスによって対象サーバーを判別するが、 IPアドレスは数値の羅列で人間には覚えにくいので、ドメイン名という覚えやすい名称に変換する。
Dynamic DNSというのは、その紐付けをDynamicに、つまり動的に行う。 グローバルIPが変化しても、ドメイン名との紐付けを再度行うことで、ドメイン名の固定ができるというわけ。
世の中にはこんな便利なサービスを無料で提供してくれる人たちがいる。
登録
いくつか選択肢はあるが、今回はno-ipというサービスを使うことにした。 なぜなら、raspberryPi にnoipでDDNSの設定をする方法というサイトを参考にしたため。
登録・設定から自動実行まで、ほぼほぼこの手順でいける。
ただ、Dynamic Domain Update Client (DUC) の自動起動の設定だけは、少し好みではなかったのでアレンジした。
DUCの自動起動設定
/etc/init.d/noip2
を以下のように書き換えた。
自動起動の設定を先頭に追加しただけ。これにより、わざわざrc.localに起動のためのコマンドを書かなくとも、
自動で起動してくれる。
#! /bin/sh
# /etc/init.d/noip2.sh
### BEGIN INIT INFO
# Provides: noip2
# Required-Start: $all
# Required-Stop:
# Default-Start: 2 3 4 5
# Default-Stop:
### END INIT INFO
# Supplied by no-ip.com
# Modified for Debian GNU/Linux by Eivind L. Rygge <eivind@rygge.org>
# corrected 1-17-2004 by Alex Docauer <alex@docauer.net>
# . /etc/rc.d/init.d/functions # uncomment/modify for your killproc
DAEMON=/usr/local/bin/noip2
NAME=noip2
test -x $DAEMON || exit 0
case "$1" in
start)
echo -n "Starting dynamic address update: "
start-stop-daemon --start --exec $DAEMON
echo "noip2."
;;
stop)
echo -n "Shutting down dynamic address update:"
start-stop-daemon --stop --oknodo --retry 30 --exec $DAEMON
echo "noip2."
;;
restart)
echo -n "Restarting dynamic address update: "
start-stop-daemon --stop --oknodo --retry 30 --exec $DAEMON
start-stop-daemon --start --exec $DAEMON
echo "noip2."
;;
*)
echo "Usage: $0 {start|stop|restart}"
exit 1
esac
exit 0
動作確認
自動起動するかどうか、実際に再起動して確かめる。
sudo reboot
からの、
sudo /usr/local/bin/noip2 -S
Process 445, started as noip2, (version 2.1.9)
Using configuration from /usr/local/etc/no-ip2.conf
Last IP Address set 0.0.0.0
Account hogehoge@gmail.com
configured for:
host hogehoge.ddns.net
Updating every 30 minutes via /dev/wlan0 with NAT enabled.
とすると、なんとIPアドレスが0になってしまっている。 失敗か?と思ったが、特に問題なくつながる。 30分後に再度確認したら正しいIPアドレスがセットされていた。どうやら起動後1発目のIPアドレスセットの内容は反映されないらしい。 Last IP Addressとあるので、初回より前のアドレスを出そうとしているのだろうか。