CentOS7でお名前.comのDDNSサービスを利用する方法

参考記事

LinuxやMacで お名前.com ダイナミックDNS の IPアドレスを更新する – Qiita

https://qiita.com/ats124/items/59ec0f444d00bbcea27d

はじめに

上記のサイトを参考にさせていただきました。

ただ、上記サイトの手順ですと、自動更新が行えないためこれらを自動化してサーバー再起動時に自動的に更新がなされるように設定したいと思います。

前提条件

以下の条件で設定を進めていきます。環境が変わるとコマンドなどがそのまま使えないことがあるので代替手段を用意してください。

  • Cent OS7
  • PHPが導入されている

自身のIPアドレスを取得する

ここでは、かんたんに自分のIPを取得する方法としてipinfo.ioの情報を利用することにしました。
ipinfo.ioとは、簡単に言うとcurlなどでアクセスるとjsonでIPアドレスに関する情報を返してくれるサイトです。

ipinfo.ioから取得した情報はjson形式となっている為、IPアドレスのみを返してくれるPHPスクリプトを作成しました。
PHPが入っていない環境であればPythonなどを使うと良いでしょう。

特にエラー処理とかもしてないダメなコードの代表例みたいなのができましたね。
これを/usr/local/bin/myip.phpとかにぶち込んでおきましょう。

<?php
$fp = fopen("http://ipinfo.io","r");
$result = json_decode(stream_get_contents($fp));
echo $result->ip;
?>

こんな感じでコマンドを実行してみてあなたのIPアドレスが表示されればOKです。

[user@host ~]$ echo $(php /usr/local/bin/myip.php)
35.200.94.41

お名前.comに接続してドメインの更新を行う

続いてシェルスクリプトを作りましょう。
これはwww.example.comのアドレスを更新するスクリプトになります。
必要な部分は書き換えてください。

#!/bin/bash
ONAMAEID="" #お名前.comのID
ONAMAEPW="" #お名前.comのパスワード
echo -e "LOGIN\nUSERID:$ONAMAEID\nPASSWORD:$ONAMAEPW\n.\nMODIP\nHOSTNAME:www\nDOMNAME:example.com\nIPV4:$(php /usr/local/bin/myip.php)\n.\nLOGOUT\n." | openssl s_client -connect ddnsclient.onamae.com:65010 -quiet

サブドメイン(www.の部分)がない場合は\nHOSTNAME:の部分は空白などにせず、消してください。

このスクリプトも/usr/local/bin/update_ip.shに配置しましょう。
また、実行権限も忘れず付与してください。

試しにシェル上で実行してみて「000 COMMAND SUCCESSFUL」という文字列が4回表示されれば正常です。

[user@host ~]$ /usr/local/bin/update_ip.sh
depth=2 C = BE, O = GlobalSign nv-sa, OU = Root CA, CN = GlobalSign Root CA
verify return:1
depth=1 C = BE, O = GlobalSign nv-sa, CN = GlobalSign Domain Validation CA - SHA256 - G2
verify return:1
depth=0 OU = Domain Control Validated, CN = *.onamae.com
verify return:1
000 COMMAND SUCCESSFUL
.
000 COMMAND SUCCESSFUL
.
000 COMMAND SUCCESSFUL
.
000 COMMAND SUCCESSFUL
.

自動実行

起動時に自動実行させるために/etc/rc.localファイルに以下のように追記してください。
また、実行権限が必要との情報もあったので念の為付加しておきましょう。

/usr/local/bin/update_ip.sh

これでサーバーを再起動してみて無事に新しいIPアドレスが適応されていれば成功です。

コメントを残す