AmazonLinux で メールサーバーを作る(その6)


今回は、no-ip.biz のIPアドレス更新を自動化します。

もっとも、EIP(固定IP)を利用しているので、更新しなくても良いんですがね…。



・更新プロトコルの確認

IP更新のための更新プロトコルが分かれば、例えば curl コマンドなどで IP更新を自動化できます。

ところが、no-ip.biz ではザっと見たところ プロトコルを公開していないような…。



・IP更新ツールのインストール

no-ip.biz 専用の IPアドレス更新ツールが存在するようなので、コレをダウンロードしてインストールしてみます。

no-ip.biz 用 Linux DUF (IPアドレス更新ツール) - https://www.noip.com/downloads.php?page=linux

tar.gzを展開すると、以下のようなファイルが展開されます。

noip-2.1.9-1
|
|-- COPYING
|-- LEEME.PRIMERO
|-- LIESMICH.ERST.deutsch
|-- LISEZMOI.ENPREMIER
|-- Makefile
|-- README.FIRST
|-- README.FIRST-SWE
|-- README.FIRST.FRANCAIS
|-- README.FIRST.ITALIANO
|-- README.FIRST.JAPANESE
|-- README.FIRST.pt_BR
|-- README.FIRST_PT
|-- binaries
| |-- noip2-i686
| `-- noip2-x86_64
|-- debian.noip2.sh
|-- gentoo.noip2.sh
|-- mac.osx.startup
|-- noip2.c
`-- redhat.noip.sh
README.FIRSTを読むとビルド方法が書かれていますが…。AmazonLinuxには gccはインストールされていない(インストールするのもメンドクサイ)ので、中身含まれているビルド済みバイナリを利用することにします。

binaries にあるものを /usr/local/bin に入れて、その中の 32bit 版の symlink を用意します(OSかせ32bitなので)。
$ cd  no-ip.duf/noip-2.1.9-1/binaries/
$ sudo cp noip2-* /usr/local/sbin/noip-2.1.9-1/

$ cd /usr/local/sbin
$ ls
noip-2.1.9-1
$ sudo ln -s noip-2.1.9-1/noip2-i686 noip2

$ cd
次に、設定ファイルが必要みたいなので、作成します。
$ sudo /usr/local/sbin/noip2 -C

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

Please enter the login/email string for no-ip.com *****
Please enter the password for user '*****' ***************

Only one host [~.no-ip.biz] is registered to this account.
It will be used.
Please enter an update interval:[30] 120
Do you wish to run something at successful update?[N] (y/N) N

New configuration file '/usr/local/etc/no-ip2.conf' created
EIP(固定IP)を利用しているので、そんなに頻繁にDDNS用IPアドレスを更新する必要は無いので、ここでは 120分の更新間隔を指定しておきます。
$ sudo /usr/local/sbin/noip2
$ sudo /usr/local/sbin/noip2
$ One noip2 process is already active,
and the multiple instance flag (-M) is not set.

$ ps auxwww | grep noip2
nobody 4493 0.0 0.1 2280 808 ? Ss 20:31 0:00 noip2
ec2-user 4504 0.0 0.0 2484 512 pts/1 S+ 20:35 0:00 grep noip2
デーモンとして起動するようですね…。


添付されていた README.FIRST に従って、以下のようなバッチを作成し、/etc/rc.d/init.d/noip2
 として配備します。
#!/bin/sh

# chkconfig: - 98 02
# description: noip2 DDNS update service ... see http://no-ip.biz

source /etc/rc.d/init.d/functions

EXEPATH=/usr/local/sbin

case "$1" in
start)
echo "Starting noip2."
${EXEPATH}/noip2
echo -en '\n'
;;
stop)
echo -n "Shutting down noip2."
killproc ${EXEPATH}/noip2
echo -en '\n'
;;
restart)
echo -n "Shutting down noip2."
killproc ${EXEPATH}/noip2
echo -en '\n'
sleep 5
echo "Starting noip2."
${EXEPATH}/noip2
echo -en '\n'
;;
status)
${EXEPATH}/noip2 -S
echo -en '\n'
;;
*)
echo "Usage: $0 {start|stop|restart|status}"
exit 1
esac
exit 0
作成したら、chkconfig の支配下に追加し、自動起動するようにしておきます。
$ sudo chmod og=rx /etc/rc.d/init.d/noip2

$ sudo chkconfig --add noip2

$ chkconfig --list noip2
noip2 0:off 1:off 2:off 3:off 4:off 5:off 6:off

$ sudo chkconfig noip2 on

$ chkconfig --list noip2
noip2 0:off 1:off 2:on 3:on 4:on 5:on 6:off
バッチリ設定出来たので、OS(EC2インスタンス)を再起動してみて 自動起動出来ていることを確認します。
$ sudo reboot

~再起動完了後~


$ sudo service noip2 status
1 noip2 process active.

Process 1493, started as noip2, (version 2.1.9)
Using configuration from /usr/local/etc/no-ip2.conf
Last IP Address set **.**.**.**
Account *****
configured for:
host ~.no-ip.biz
Updating every 120 minutes via /dev/eth0 with NAT enabled.

期待通りに動作しているようです。


今回はここまで。