概要
DDNS (ダイナミックDNS) は、動的に変化するIPアドレスに対して、固定のドメイン名を関連付けることができるサービスである。
一般的な家庭用インターネット回線では、ISPから割り当てられるグローバルIPアドレスは定期的に変更される場合が多いが、
DDNSを利用することにより、変更されるグローバルIPアドレスに常に同じドメイン名でアクセスすることが可能になる。
具体的な仕組みとしては、ユーザのネットワーク機器 (HGW、ルータ等) やPCにDDNSクライアントソフトウェアをインストールして、定期的にグローバルIPアドレスの変更を監視する。
IPアドレスが変更された場合、DDNSサービスプロバイダに対して自動的に更新情報を送信する。
例えば、example.ddns.netというドメイン名を取得した場合、グローバルIPアドレスが203.0.113.1から203.0.113.2に変更されたとする。
この時、DDNSサービスが自動的に新しいIPアドレスとドメイン名の紐づけを更新する。
そのため、ユーザは常に同じドメイン名でアクセスすることができる。
この技術は、特に以下に示すような用途で使用されている。
- 自宅サーバの運用 (自宅でWebサーバを構築する場合は、DDNSは必要不可欠である)
- リモートアクセス環境の構築
- 監視カメラシステムの遠隔アクセス
DDNSサービスを利用する場合は、多くの場合、サービスプロバイダへの登録が必要となる。
無料サービスと有料サービスが存在しており、用途に応じて選択することができる。
また、最近のルータには、DDNS機能が標準で搭載されているものも多く、設定も比較的簡単に行うことができるようになっている。
セキュリティの観点からは、DDNSを利用する場合は適切なファイアウォール設定やアクセス制御を行うことが重要である。
また、定期的なパスワード変更やアクセスログの確認等も推奨される。
DDNSサービスへの登録
DDNS Now
DDNS Nowは、2013年から運用している利用料無料のダイナミックDNSサービスである。
料金 | 永久無料 (全機能) |
利用期間 | 無期限 (定期的な更新も不要) |
プライバシー | 登録にメールアドレスや個人情報は不要。 一部の機能のご利用や、AIがリスクと判定した登録には本人確認を実施する場合がある。 |
更新間隔 | 制限なし |
更新回数 | 制限なし |
ドメイン数 | 1 (ユーザ名.f5.si) |
対応レコード | A / AAAA / CNAME / ワイルドカードCNAME / TXT / URLリダイレクト / サブドメイン / NS |
TTL | 60秒 |
更新方法 |
|
DNSサーバロケーション | 日本 (東京) を含む世界29地点 最も地理的に近いサーバが応答 |
Public Suffix List | 対応済み (DDNS Nowで取得したドメインは独自ドメインとして取り扱われ、Cloudflare、AdSense、Bluesky等に登録が可能) |
- DDNS Nowの公式Webサイトにアクセスする。
- まず、希望するサブドメインを入力する。(半角英数字のみが使用可能)
- 例えば「myserver.now.im」のような形式になる。
- サブドメイン名は3文字以上、16文字以下である必要がある。
- 次に、メールアドレスを入力する。
- このメールアドレスは登録確認やパスワードリセットなどに使用されるため、確実に受信できるアドレスを使用すること。
- 続いて、パスワードを設定する。
- 利用規約に同意のチェックを入れて、[登録]ボタンを押下する。
- 登録したメールアドレスに確認メールが送信されるので、メール内のリンクをクリックして登録を完了させる。
- 登録完了後、ログインすると以下の情報が表示される。
- 現在のIPアドレス
- 最終更新日時
- DDNSの更新用URL
ieServer.Net
ieServer.Netは、1999年からサービスを開始しており、長年にわたって無料のDDNSサービスを提供してきた老舗のサービスである。
多くの個人ユーザに愛用されており、特に日本国内での知名度が高いサービスである。
しかし、2021年をもってサービスを終了している。
この終了は、長年の無料サービス提供による運営コストの増加やシステムの維持管理の負担が大きな要因とされている。
ieServer.Netのサービス終了に伴い、ユーザには代替サービスへの移行が推奨されている。
代替サービスとしては、以下に示すようなDDNSプロバイダが挙げられる。
- MyDNS
- No-IP
- Cloudflare
- Duck DNS
紐付け更新スクリプトをcronに登録する
まず、Raspberry Piにて、必要なディレクトリを作成する。(ここでは、/var/log/ieseverと/usr/local/ddnsを作成する)
sudo mkdir /var/log/ieserver sudo mkdir /usr/local/ddns
そこから、紐付け更新スクリプト(ddns-update.pl)を作成して、グローバルIPアドレスが変化しているか確認した後、変化していれば自動で紐付けする。
sudo nano /usr/local/ddns/ddns-update.pl
ddns-update.plには以下を記述する。
但し、変数である$ACCOUNTや$DOMAIN、$PASSWORDには、それぞれ、ieServer.Netで登録したユーザ名やドメイン名、パスワードを入力する。(◯◯◯を書き換えること)
ddns-update.plの内容
#!/usr/bin/perl
$CURRENT_IP_FILE = "/var/log/ieserver/current_ip";
$LOG_FILE = "/var/log/ieserver/ip_update.log";
$REMOTE_ADDR_CHK = "http://ieserver.net/ipcheck.shtml";
$DDNS_UPDATE = "http://ieserver.net/cgi-bin/dip.cgi";
$ACCOUNT = "◯◯◯";
$DOMAIN = "◯◯◯";
$PASSWORD = "◯◯◯";
if(!open(FILE,"$CURRENT_IP_FILE"))
{
$CURRENT_IP = '0.0.0.0';
}
else
{
$CURRENT_IP = <FILE>;
close FILE;
}
$NEW_IP = '0.0.0.0';
$NEW_IP = `wget -q -O - $REMOTE_ADDR_CHK`;
if($NEW_IP ne "0.0.0.0" and $CURRENT_IP ne $NEW_IP)
{
$STATUS = `wget -q -O - '$DDNS_UPDATE?username=$ACCOUNT&domain=$DOMAIN&password=$PASSWORD&updatehost=1'`;
if($STATUS =~ m/$NEW_IP/)
{
open(FILE ,">$CURRENT_IP_FILE");
print FILE $NEW_IP;
close FILE;
$TIME = localtime;
open(FILE ,">>$LOG_FILE");
print FILE "$TIME $ACCOUNT.$DOMAIN Updated $CURRENT_IP to $NEW_IP\n";
close FILE;
}
else
{
$TIME = localtime;
open(FILE, ">>$LOG_FILE");
print FILE "$TIME $ACCOUNT.$DOMAIN Update aborted $CURRENT_IP to $NEW_IP\n";
close FILE;
}
}
exit;
作成したddns-update.plファイルのパーミッションを変更する。
sudo chmod 755 /usr/local/ddns/ddns-update.pl
次に、ddns-update.plをcronで自動実行させる。
ここでは、10分毎に実行させる設定にする。
sudo nano crontab -e
crontabが起動したら、以下を追記する。
*/10 * * * * /usr/local/ddns/ddns-update.pl
これで、DDNSの設定は完了である。