Raspberry piにNo-IP DUCをインストールしてダイナミックDNSのIPを更新させる

2021年1月14日

Dynamic DNSのip更新をRaspberry piに設定する方法。No-IPのDynamic Update Clientをインストールして設定すればできたのでメモ。

目次

事前準備

当然だけど、No-IP(https://www.noip.com)のアカウントがなければ作成しておく。

No-IP DUCをインストール

ここ(https://www.noip.com/support/knowledgebase/install-ip-duc-onto-raspberry-pi/)を参考にインストールしていく。

まずはRaspberry piにSSHで接続(ユーザー名は「pi」、IPアドレスは「192.168.xxx.xxx」の場合ね)。

ssh pi@192.168.xxx.xxx

ダウンロードするファイルを入れておくためのディレクトリを作成し、移動。

mkdir /home/pi/noip
cd /home/pi/noip

DUCをダウンロードして展開。

wget https://www.noip.com/client/linux/noip-duc-linux.tar.gz
tar vzxf noip-duc-linux.tar.gz

展開された「noip-2.1.9-1」ディレクトリに移動して、インストールする。

cd noip-2.1.9-1
sudo make
sudo make install

途中にインターネットに接続しているインターフェースを選ぶよう言われるので、数字を入力する。

Auto configuration for Linux client of no-ip.com.

Multiple network devices have been detected.

Please select the Internet interface from this list.

By typing the number associated with it.
0	eth0
1	wlan0

今回は有線なので「0」を入力。

Please enter the login/email string for no-ip.com

次に、No-IPのログイン名を入力。

Please enter the password for user 'ログイン名'  

で、パスワードを入力。

2 hosts are registered to this account.
Do you wish to have them all updated?[N] (y/N) 

登録ホスト名が複数あると全部設定するか?と聞かれるけど、今回は1つだけ設定するので「N」。

Do you wish to have host [xxxxxxxx.ddns.net] updated?[N] (y/N)

すると、1つずつ設定するか聞いてくるので、設定するドメインで「y」。

Please enter an update interval:[30]

IPを更新するインターバル(デフォルトは30分)を聞かれるので数字を入力する。

Do you wish to run something at successful update?

IP更新した時に何かを実行するか聞かれるけど、必要ないので「N」。

これでインストール完了。

No-IP DUCの起動確認

下のコマンドで起動する。

sudo /usr/local/bin/noip2

特にエラーが出なければ次のコマンドで起動確認。(最後の「S」は大文字なので注意!)

sudo noip2 -S

問題がなければ下のような感じ。

1 noip2 process active.

Process 32175, started as /home/pi/noip/noip-2.1.9-1/noip2, (version 2.1.9)
Using configuration from /usr/local/etc/no-ip2.conf
Last IP Address set 10.5.5.14
Account user name
configured for:
	host  user-name.ddns.net
Updating every 5 minutes via /dev/eth0 with NAT enabled.

自動起動の設定

続いて、自動起動の設定ファイルをコピーする。

sudo cp debian.noip2.sh /etc/init.d/noip2

コピーしたファイルを編集する。

sudo vi /etc/init.d/noip2

自動起動させるために、設定ファイルに下のコマンドを追記する。

### BEGIN INIT INFO
# Provides:          noip2
# Required-Start:    $all
# Required-Stop:
# Default-Start:     2 3 4 5
# Default-Stop:
### END INIT INFO

最終的にはこんな感じ。

#! /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 chmod +x /etc/init.d/noip2

自動起動の登録を更新する。

sudo update-rc.d noip2 defaults

設定終わり! あとは再起動して自動起動するか確認。

sudo reboot

再起動したら下のコマンドで起動しているか確認する。

sudo noip2 -S

以上!
これで、自動的にダイナミックDNSのIPを更新してくれるようになるはず!

参考