設定 - DDNS

提供:MochiuWiki : SUSE, EC, PCB
2024年11月10日 (日) 21:56時点におけるWiki (トーク | 投稿記録)による版 (→‎概要)
ナビゲーションに移動 検索に移動

概要

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サービスである。


ieServer.Net

ieserver.Netは、2021年にサービスが終了した。


紐付け更新スクリプトを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の設定は完了である。