新世代レンタルサーバーをいち早く体験!
Oneレンタルサーバーβ版が【1年間無料】詳細へ

ダイナミックDNS(DDNS)とは?DDNSの利用方法を徹底解説!

2025年9月16日User Note

ダイナミックDNS(DDNS)とは?

自宅サーバーや監視カメラを外出先からアクセスしたいときに役立つのが「ダイナミックDNS(DDNS)」という仕組みです。IPアドレスが変わっても、常に同じドメイン名でアクセスできるようになるため、動的IP環境でも安定した接続を実現できます。

しかし、DDNSサービスには「無料だけど不安定」「独自ドメインで使えない」などの制約も多く、選び方を間違えると運用が大変になることもあります。

そこでおすすめなのが、ドメイン管理の老舗である「バリュードメイン」が提供するDDNSサービスです。
Value Domainなら、独自ドメインでそのままDDNSを利用でき、しかも設定は非常にシンプル。長年の安定運用と高い信頼性で、個人から法人まで幅広く支持されています

本記事では、DDNSの基礎知識から、Value DomainのDDNS機能の設定手順、実際の活用事例(監視カメラ、自宅サーバー、リモート接続など)まで、初心者にもわかりやすく解説します。

登録実績700万件!.com790円

バリュードメイン公式サイトをみる

ダイナミックDNS(DDNS)とは

ダイナミックDNS(DDNS)は、自宅サーバーやWEB監視カメラ映像などを公開したいときに非常に役立つ技術です。

通常、インターネットに接続するとプロバイダから割り当てられるIPアドレスは、再接続のたびに変わってしまうことがあります。これでは、友人や外部から特定のIPアドレスを使ってアクセスしようとしても、IPアドレスが変わるたびに接続できなくなってしまいます。

そこでDDNSを利用することで、たとえIPアドレスが変わっても、その変化を自動的に検知して、あらかじめ設定しておいたドメイン名(例:www.example.jp)に常に紐付けてくれます。これにより、IPアドレスが変わる心配をすることなく、いつも同じドメイン名でアクセスできるようになるのです。

ダイナミックDNS概念図

IPアドレスについて詳しく知りたい方は、以下の記事もぜひご参照ください。

DNSとDDNSの共通点と違い

DNSとDDNSは、どちらも「ドメイン名とIPアドレスを結びつける」という基本的な役割は同じですが、扱うIPアドレスの種類と更新方法に大きな違いがあります。

DNSとDDNSの共通点

どちらの技術も、人間が覚えやすいドメイン名(例:example.jp)と、コンピューターが通信に使うIPアドレス(例:203.0.113.1)を紐づけて、インターネット上の「住所」を特定する役割を担っています。

ドメイン名とIPアドレスの関係について詳しくは、「ドメインとは?」の記事をご覧ください。

また、ドメイン名とIPアドレスの対応付けには、DNSレコード(特にAレコードやAAAAレコード)が使われ、どのドメイン名がどのIPアドレスを指しているかを定義します。

プロトコルとしては、どちらもDNSプロトコルを利用しており、主にUDPの53番ポートを使用して名前解決(ドメイン名からIPアドレスを調べること)を行います。

DNSの仕組み全体については、「DNSとは?初心者に設定や名前解決ついてわかりやすく解説」を参考にしてください。

DNSとDDNSの違い

DNSDDNS
扱うIPアドレス静的IPアドレス(固定)動的IPアドレス(変動)
IPアドレスの更新手動(管理者が設定変更)自動(専用クライアントやAPIで更新)
更新頻度滅多に更新しないIPアドレス変更時に即座に更新
TTL(キャッシュ有効時間)比較的長い(数時間~数日)短い(数分~数十分※IP変更時の切り替えを早めるため
主な用途企業サイト、メールサーバーなど自宅サーバー、WEB監視カメラ、リモートデスクトップなど

ワンポイントヒントDDNSにおけるTTL(キャッシュ有効時間)の重要性

DDNSを利用する際、TTL(Time To Live)という設定項目に注意することが重要です。TTLは、DNSキャッシュの有効時間を指します。

パソコンやルーター、プロバイダのサーバーなどは、一度アクセスしたドメイン名とIPアドレスの情報を一時的に保存します。これがDNSキャッシュです。これにより、次に同じサイトにアクセスする際に、わざわざDNSサーバーに問い合わせる必要がなくなり、素早く接続できるようになります。しかし、DDNSではIPアドレスが頻繁に変わる可能性があるため、このキャッシュが問題になることがあります。IPアドレスが変わっても、キャッシュが古いIPアドレスの情報を保持しているため、新しいIPアドレスがすぐに反映されないことがあるのです。

この問題を解決するのがTTLです。TTLを短く設定することで、キャッシュが更新されるまでの時間を短くし、IPアドレスの変更を速やかに反映させることができます。

ただし、TTLを極端に短く設定しすぎると、DNSクエリの頻度が増え、DNSサーバーに負荷をかけてしまいます。DDNSでは一般的に60秒~600秒程度に設定することが推奨されており、安定性と即応性のバランスが取れており、問題なく利用できるケースが多いです。

多くのDDNSサービスプロバイダやドメイン管理サービスでは、DDNSホストのTTL設定が可能で、DNS管理画面から簡単に設定できます。Value Domainでも、TTL設定が可能です。通常のDNS管理画面でDDNS用のホストを設定でき、DNSとDDNSがシームレスに連携しています。このため、「DDNSの設定も結局DNSの一部」という見方もできます。

TTLの考え方は、DDNSに限らず、Facebookなど各種WebサービスのDNS設定にも影響します。

たとえば、FacebookのDNS設定ではTTLの指定が重要な役割を果たします。以下の記事では、Facebookで発生した障害を例に、TTLの重要性について詳しく解説しています。

DDNSの仕組み

DDNS(ダイナミックDNS)は、クライアント(ルーターや専用ソフトウェア)が定期的にIPアドレスをDDNSプロバイダに通知します。プロバイダ側はその情報を元にDNSレコードを更新し、ドメイン名と最新のIPアドレスを紐付けます。これにより、IPアドレスが変更されてもドメイン名で継続的にアクセス可能になります。

バリュードメインで取得したドメインにはValue Domain専用のDDNSが利用できます。
指定のURLに必要なパラメーターを設定してアクセスすることで、自動的にDNSレコードが更新されます。

ダイナミックDNSの仕組み解説図

図は、Value DomainのダイナミックDNSを利用した場合に、どのようにして外部から自宅サーバーへアクセスが行われ、IPアドレスの更新が自動で反映されるかを示したものです。以下では、その一連の流れを、ユーザーの操作から順に解説します。

  1. ユーザーの操作(遠隔地パソコン):
    • ユーザーが自宅外のパソコンから、例)www.example.jp というドメイン名を使って自宅のサーバーにアクセスしようとします。
    • このアクセス要求はインターネットを経由して、通常利用しているキャッシュDNSサーバーに送られます。
  2. キャッシュDNSサーバー
    • キャッシュDNSサーバーは、www.example.jp に対応するIPアドレスを知らない場合、上位の権威DNSサーバーに問い合わせを行います。
  3. Value Domainの権威DNSサーバー
    • キャッシュDNSサーバーは、www.example.jp の情報を管理しているValue Domainの権威DNSサーバーに問い合わせます。
    • この権威DNSサーバーは、最新のIPアドレス情報(この例では58.12.xxx.xxx)をキャッシュDNSサーバーに返します。
  4. キャッシュDNSサーバーからユーザーへ
    • キャッシュDNSサーバーは、受け取った最新のIPアドレス (58.12.xxx.xxx) をユーザーのパソコンに返します。
  5. ユーザーの遠隔地パソコンから自宅サーバーへ
    • ユーザーのパソコンは、受け取ったIPアドレス (58.12.xxx.xxx) を使って、直接自宅のサーバーにアクセスします。
  6. 自宅ルーターからValue DomainへのIPアドレス通知:
    • 自宅のルーターは、グローバルIPアドレスが変更されると、Value DomainのダイナミックDNSサービスに対してHTTPリクエストを送信します。
    • このリクエスト例としてURL (https://dyn.value-domain.com/cgi-bin/dyn.fcgi?d=example.jp&p=password&h=www) です。HTTPリクエストにルーターの外部IPアドレスが明示されていなくても、Value Domain側で自動的に判断されます。
    • これにより、Value DomainのDNSデータベースに登録されている www.example.jp に対応するIPアドレスが、最新のものに更新されます。
  7. Value DomainのDDNSサービス:
    • Value DomainのDDNSサービスは、ルーターから送られてきたIPアドレス情報を受け取り、DNSデータベースを更新します。
      Value DomainではHTTPリクエスト方式以外にAPI連携でも設定可能です。

DDNSのメリットとデメリット

このように、Value DomainのDDNSサービスを利用すれば、動的IPアドレス環境でも独自ドメインを通じて安定した接続が実現できます。しかし、DDNSには便利な一方で、利用前に知っておきたい注意点や制約もあります。

ここでは、DDNSの具体的なメリットとデメリット、そして導入時に気をつけたいポイントについて詳しく解説していきます。

DDNSのメリット

DDNSのメリット
  • 固定IPアドレスがなくても、遠隔で接続ができる。
  • ドメイン名を自由に設定できるため覚えやすい
  • 固定IPアドレスがなくても、遠隔で接続ができる。
    多くの家庭ではISP(インターネットサービスプロバイダ)から動的なグローバルIPアドレスが割り当てられます。ルーターの再起動や一定期間のアイドル状態によって、このIPアドレスは頻繁に変動します。このような環境下で、自宅のサーバーや監視カメラへ外部からリモートアクセスを可能にします。
    DDNSは、変動するIPアドレスと固定のドメイン名を自動的に紐づけることで、安定した接続を提供します。
  • ドメイン名を自由に設定できるため覚えやすい
    IPアドレスは数字の羅列で覚えづらいですが、DDNSでは独自ドメイン名(例:home.example.jp)を設定できます。
    「名前」でアクセスできるので、毎回IPを確認する必要がなく、管理や運用もぐっと楽になります。

DDNSのデメリット

DDNSのデメリット
  • 更新遅延が発生することがある
  • サービス停止時にアクセスできなくなるリスク
  • 更新遅延
    DDNSでは、IPアドレスが変更された直後にDNSレコードが更新されますが、反映までに数分~十数分のタイムラグ(遅延)が発生する場合があります。
  • サービスへの依存性
    DDNSは、プロバイダが提供するサービスに依存して動作します。
    そのため、提供元のサービスが突然終了したり、有料化されたりすると、アクセス不能になる可能性があります。

DDNSの注意点

  • 独自ドメインとの連携で制限を受ける
    各ネットワーク機器メーカーのDDNSは基本的に「自社製品専用」です。そのため独自ドメインで利用できません。この場合はCNAMEレコードで独自ドメインと紐付け可能です。
    機器によっては独自DDNS設定ができるものもあります。この場合はValue DomainのDDNSを指定できます。
  • CGNAT環境では利用できない
    モバイル回線(SoftBank、DOCOMO、AU)やIPv6のみの環境では動作しない場合があります。
    ※この環境下で自宅のWWWや監視カメラ画像を公開したい場合はDDNSやP2P、VPNを使わない方法での記事を次回紹介いたします。
  • セキュリティリスクに関して
    DDNSに限らず、ドメイン名が固定されると不正アクセスの標的になりやすくなります。

ワンポイントヒントDDNSサービスへの依存性に関して
最初は無料で提供されていたDDNSもユーザーが増え有料化される場合が多々あります。また無料枠で使えるDDNSでも定期的な更新手続きが必要になることがあります。最悪サービスが終了する場合もあります。
実際、ネットワーク機器、WEBカメラ機器を提供していたIO-DATAのDDNS(iobb.net)は2024年12月末をもって提供が終了しています。
Value Domainではその点、ドメイン提供の初期からずっとDDNSを継続提供されています。またドメインレジストラであり今後も提供されると思われます。

Value DomainでDDNSを始める方法

Value Domainで取得した独自ドメインは、コントロールパネル上から簡単にDDNSを有効化できます。設定はドメイン単位で行います。

Step 1:コントロールパネルにログイン

Value Domainのコントロールパネルにログインして「ドメイン」ー「ドメインの設定操作」をクリックします。

Value Domain DDNS設定1

Step 2:対象ドメインの「ダイナミック」をクリック

ドメイン一覧からDDNSを使いたいドメインの「ダイナミック」をクリックします。

Value Domain DDNS設定2

Step 3:パスワード設定+DDNS機能を有効化

パスワード「変更」をクリックしてパスワードを設定します。ダイナミックDNS機能「有効」にチェックを入れて「変更」をクリックして反映させます。

Value Domain DDNS設定3

Step 4:DNSレコードを準備する

例として、ホスト名wwwをDDNSで利用する場合はDNSのAレコードにwwwが設定されている必要があります。IPアドレスはなんでもいいですが、ここでは一時的にCクラスのIPアドレス192.168.1.1を便宜上設定しておきます。後のDDNS連携でこのIPアドレスは自動的に所定のIPアドレスに書き換えられます。TTL設定は600秒(10分)に設定します。

Value Domain DDNS設定4

Value Domain DDNS設定5

Step 5:設定完了!

以上で、Value Domain側のDDNS設定は完了です。
あとは、ルーターやスクリプトからIPアドレスを通知すれば、自動的にDNSが更新される仕組みが動きます。

DDNSの実用的な利用方法【Value Domainでできること】

DDNSを利用したネットワークカメラ(WEB監視カメラ)や自宅WWWサーバーの公開事例を6つ紹介します。

WEB監視カメラでDDNSを利用し映像を公開する

Panasonicのネットワークカメラでは、機器指定のDDNS以外にユーザー指定のDDNSを「独自DDNS設定」で利用できます。Value DomainのDDNSのパラメーター付きのURLを「独自DDNS設定」に入力することで、監視カメラの映像を独自ドメインで公開できます。
他のWEB監視カメラでも「独自DDNS設定」や「カスタムURL」が利用できればValue DomainのDDNSが使えます。

WEB監視カメラの利用図

・Panasonicのネットワークカメラの管理画面-ネットワーク-DDNS
カメラDDNS設定

  • サービス:「ユーザー指定DDNS」を選択
  • ホスト名:http://dyn.value-domain.com/cgi-bin/dyn.fcg?d=example.jp&p=password&h=www
    httpで設定しています。(BB-SP104Wではhttpsだとエラーになります)。
    ※Value domain DDNSでは仕様上httpsとなっていますがhttpでも受け付けられます。
  • ユーザー名:任意の文字列 (ダミーで何でもいいです)
    ※Value domain DDNSではBASIC認証はありません。
  • パスワード:任意の文字列(ダミーで何でもいいです)
    ※Value domain DDNSではBASIC認証はありません。
  • アクセス間隔:10min

以上を入力して「設定」すれば10分毎にValue domainのDNSに登録されます。DNSのTTLは600秒にしていますので、10分から20分程度でDNSに反映されます。

ワンポイントヒントWEB監視カメラを公開するにはルーターでポートフォワーディングが必要
WEB監視カメラ自宅サーバーを公開するためにルーターと監視カメラを紐づけるには、主にポートフォワーディングと呼ばれる設定が必要です。この設定により、インターネットからの特定の通信をルーターが受け取り、それをローカルネットワーク内の特定のサーバーに転送できます。ルーターで外部からの80番、443番をローカルのカメラにアクセスするように設定します。

ワンポイントヒントメーカーのネットワーク機器のDDNSについて

各メーカーのネットワークカメラではDDNSの利用ができるようになっていますが、DDNSサービスの種類は既存のサービスから選択する方法となっています。DDNSの種類はNo-IP, DynDNSやメーカー指定のDDNSです。日本のメーカーではパナソニックがNo-IP, DynDNS以外に独自のユーザー指定DDNSが利用できます。海外メーカー製機器で有名どころではTP-Link、Axisが独自のDDNSを利用できます
パナソニック製品は一般向けだけでなく法人向けにも力を入れているので、こういう細かなところはさすがです。

余談ですが、パナソニックは1万人削減と2025年度中の事業再編計画が打ち出されています。この事業選別では、「パナソニック株式会社」(主に家電・空調・照明などを担当する事業会社)が解散され、傘下の事業が独立した子会社として再編されます。この再編は主にB2C(消費者向け)事業を中心としたものです。ネットワークカメラなどの製品は「パナソニックコネクト株式会社」が扱っており、今回の再編では影響を受けないと思われます。また、ネットワークカメラは監視システムや産業向けソリューションとして需要があり、収益性の高い事業と見なされているため、現状の体制で維持される可能性が高いです。

自宅サーバーでDDNSを利用しWEBサイトを公開する

自宅サーバーから定期的にスクリプトを実行し、Value DomainのDDNSサービスにアクセスしてIPアドレスを更新します。
リクエストのパラメーター詳細はhttps://www.value-domain.com/ddns.php?action=howtoを参照してください。

自宅サーバの利用図

無条件で定期的にValue DomainのDDNSサービスへhttpリクエストを出しても大丈夫ですが、ここでは自分の外部IPアドレスが変わったと認識したときのみValue Domain DDNSサービスにHTTPリクエストを出すようにpythonでプログラミングしてサーバー(OSはLinux)に実装します。

DDNS更新プログラム1 setddns.py

#setddns.py
import requests
import ipaddress
from datetime import datetime
from pathlib import Path

# SETTING DATA
MY_DOMAIN = "example.jp"
MY_PASS = "1234567890"
MY_HOSTNAME = "www"
OUT_FILE = Path("/tmp/ipadress")

def time_msg():
    now = datetime.now()
    return now.strftime("%Y/%m/%d %H:%M:%S")

def is_valid_ip(ip_str):
    try:
        ipaddress.ip_address(ip_str)
        return True
    except ValueError:
        return False

def main():
    # Check Global IP Address
    url_get_ip = "https://dyn.value-domain.com/cgi-bin/dyn.fcg?ip"
    try:
        response = requests.get(url_get_ip, timeout=10)
        response.raise_for_status()
        current_ip = response.text.strip()
    except requests.RequestException as e:
        print(f"{time_msg()} Failed to get IP: {e}")
        return

    # IP check
    mssg = time_msg()
    if not current_ip:
        print(f"{mssg} invalid IP NULL")
        return

    if not is_valid_ip(current_ip):
        print(f"{mssg} invalid IP={current_ip}")
        return

    # Read previous IP
    previous_ip = ""
    if OUT_FILE.exists():
        with open(OUT_FILE, "r") as f:
            previous_ip = f.read().strip()

    if current_ip == previous_ip:
        print(f"{time_msg()} no change IP={current_ip}")
        return
    else:
        print(f"change IP from {previous_ip} to {current_ip}")

    # Update DDNS
    mssg = time_msg()
    print(f"{mssg} access to value-domain")

    url_set_ddns = (
        f"https://dyn.value-domain.com/cgi-bin/dyn.fcg?"
        f"d={MY_DOMAIN}&p={MY_PASS}&h={MY_HOSTNAME}"
    )

    try:
        response = requests.get(url_set_ddns, timeout=10)
        response.raise_for_status()
        # 改行をスペースに変換し、連続するスペースを1つにまとめる
        result = ' '.join(response.text.strip().split())
    except requests.RequestException as e:
        print(f"{time_msg()} Failed to update DDNS: {e}")
        return

    mssg = time_msg()
    print(f"{mssg} {MY_HOSTNAME}.{MY_DOMAIN} {result} IP={current_ip}")

    # DDNS更新が成功した場合のみIPを保存
    if "status=0" in result:
        with open(OUT_FILE, "w") as f:
            f.write(current_ip)
        print(f"{mssg} Successfully saved new IP: {current_ip}")
    else:
        print(f"{mssg} DDNS update failed, IP not saved")

if __name__ == "__main__":
    main()

このプログラム中の変数の初期設定

  • MY_DOMAIN:ドメイン名 例)example.jp
  • MY_PASS:パスワード
  • MY_HOSTNAME:ホスト名 例)www
  • OUT_FILE: IPアドレス記録ファイルを指定します。

以上を設定してCRONに10分間隔で登録すれば動作します

CRON crontab設定例(/etc/crontab)

*/10 * * * * /usr/bin/python3 /path/to/your/setddns.py >> /var/log/ddns_updater.log 2>&1

手動で実行した例

IPアドレスに変更がない場合はリクエストは投げずプログラムは終了します。変更があった場合はリクエストを投げます。

手動DDNS設定 リクエスト

成功すればstatus=0が返されます。実際変わっているかValue DomainのDNS設定欄で確認してください。設定変更は成功したらValue DomainのDNS上はすぐに変わります。その後インターネットへの反映は10分程度で反映されます。
レスポンスの意味(status)の意味は次表のとおりです。
※Value DomainのコントロールパネルでDNSを設定変更した直後に実施すると稀に503エラーが発生します。通常はCRONで10分毎でIPアドレス変更時のみのリクエストですのでエラーはほぼ発生しません。
レスポンス内容

ワンポイントヒント自宅の外部IPアドレスはどうやって知るのでしょうか?
自宅の外部IPアドレスを知るにはいろいろ方法がありますが、ルーターの管理画面でWAN側の状態表示で知ることができますが、ルーターの管理画面にログインして確認するのも面倒です。
もっと簡単に知ることはできないでしょうか?
インターネット上に外部IPを知るサービスを提供されているところがたくさんあります。インターネット検索で「ipアドレス」と入力すれば、提供サイトがすぐに見つかるはずです。
IPアドレス確認

プログラムで自動取得したい場合は、Amazon Web Services (AWS) が提供している公式のIP確認サービスhttps://checkip.amazonaws.comを利用します。AWSのインフラ上で運用されており、信頼性が高いです。
Value Domainでもhttps://dyn.value-domain.com/cgi-bin/dyn.fcg?ip でIPアドレスが確認できます。今回のプログラムで自宅IPアドレスの確認ではこれを使用しています。

自宅サーバーと連携しWEBサイトとWEB監視カメラ映像を公開する

DDNSサービスポートフォワーディングリバースプロキシを組み合わせて、家庭内にあるWEBサイトとカメラ映像をインターネット経由で外部に公開します。

自宅サーバとWEB監視カメラの併用図

この図は、自宅に設置されたWebサーバーと監視カメラの映像を、インターネット経由で安全に外部公開するためのネットワーク構成を示したものです。DDNS、ポートフォワーディング、リバースプロキシの3つの技術を組み合わせることで、動的IP環境でも安定したアクセスが可能になります。

    1. DDNS
      • サーバーから定期的もしくはIPアドレス(例:58.12.xxx.xxx)が変わった時にIPアドレス更新通知をダイナミックDNSサービスに送信します。その2.の更新スクリプトを利用して自動更新させます。
      • DDNSサービスは、この情報を受け取り、DNSデータベース内の「www.example.jp」に対応するIPアドレスを最新のものに更新します。これによりユーザはwww.example.jpのホスト名でアクセス可能になります。
    2. ポートフォワーディング
      • 外部からのアクセス: ユーザーが「https://www.example.jp」にアクセスすると、リクエストはDNSによって解決されたIPアドレス(58.12.xxx.xxx)を通り、まずルーターに到達します。
      • ルーターによる振り分け: ルーターは、受信したHTTPリクエストのポート番号(図ではHTTPSの443)を見て、事前に設定されたルールに基づき、リクエストを特定の機器(この場合はリバースプロキシとして動作するWWWサーバー)に転送します。
    3. リバースプロキシ
      • ユーザリクエストの振り分け: 図では、リバースプロキシ(サーバーWWW、IPアドレス192.168.20.2)が、以下の2つのリクエストを処理しています。
        • ホームページ(/)へのアクセス:「https://www.example.jp/」へのリクエストは、サーバーWWW自身(https(443))に中継され、ホームページが表示されます。
        • カメラ映像(/camera/)へのアクセス:「https://www.example.jp/camera/」へのリクエストは、リバースプロキシによってカメラ(IPアドレス192.168.20.20)http(80)に中継され、カメラの映像が表示されます。
      • カメラ自体のサービスはhttpですが、この場合はhttpsとして公開できます。

ワンポイントヒントリバースプロキシって?
リバースプロキシは、クライアントからのリクエストを代わりに受け取り、内部のサーバーに転送するサーバーです。外部からはリバースプロキシが最終的な接続先に見えます。

特性
  • 単一の公開IPアドレス: 複数の内部サーバーを、単一のグローバルIPアドレスとポートで公開できます。
  • 負荷分散: 複数のサーバーにリクエストを分散させ、トラフィックの集中を防ぎます。
  • セキュリティ: 内部サーバーのIPアドレスを外部から隠し、直接攻撃を防ぎます。SSL/TLS通信を代行することで、証明書の管理を一元化できます。
  • キャッシュ: 静的コンテンツをキャッシュすることで、応答速度を向上させ、バックエンドサーバーの負荷を軽減します。

リバースプロキシ設定例

Apache
apacheリバースプロキシ設定例

Nginx
Nginxリバースプロキシ設定例

外部サーバーと連携しWEB監視カメラの映像を公開する

監視カメラやルーターが独自DDNSの利用ができず、かつ自宅サーバーもない場合はどうしたら良いでしょうか? 外部サーバーを運用しており、もし自宅内ネットワーク機器が外部サーバーに対してなんらかのアクセスが可能な場合に対応可能です。例えばsyslog、snmp、ftp、httpなどです。今回はsyslogを利用した方法を紹介いたします。

自宅ネットワーク機器が外部サーバーにsyslogを送信する場合、ログからIPアドレスとMACアドレスを抽出し、対象機器を特定してValue DomainのDDNSを更新します。

外部サーバーとWEB監視カメラの併用図

この図は、外部サーバーを中継して自宅IPアドレスを検出・更新し、独自ドメインでアクセス可能にする仕組みを示しています。

    1. SYSLOG送信
      • 自宅ルーターから機器情報を定期的に外部サーバー(例:160.251.xxx.xxx)へSYSLOGデータを送信する。(この場合、送信内容はなんでもよく、1時間に1回以上は定期的に送信できれば良い)
      • 外部サーバーはルーターからのSYSLOGデータを受信し、LOGから自宅ルーターからの情報を特定しIPアドレスを記録する。自宅ルーターの特定はMACアドレスまたは機器IDで行う。
    2. DDNS
      • 外部サーバーは記録したMACアドレスから自宅ルーターのIPアドレス(例:58.12.xxx.xxx)を特定し変わった時にIPアドレス更新通知をダイナミックDNSサービスに送信します。その2.の更新スクリプトを利用して自動更新させます。
      • DDNSサービスは、この情報を受け取り、DNSデータベース内の「www.example.jp」に対応するIPアドレスを最新のものに更新します。これによりユーザーはwww.example.jpのホスト名でアクセス可能になります。

※自宅サーバーと同様に外部サーバーにリバースプロキシを設定して外部サーバーで利用しているドメインでの公開も可能です。この場合、DDNSは必要なくIPアドレス直値で紐づけることができます。

BUFFALOルーターでの具体的な設定例

管理画面で「ログ」にsyslogサーバー設定がありますので「使用する」にチェックをいれます。syslogサーバーには外部サーバーのIPアドレスもしくはホスト名を設定します。
転送する情報はなんでもいいですが、この場合NTPクライアントが必須です。BUFFALOルーターの場合は1時間に1回は時計合わせチェックがありこの動作タイミングでsyslogデータが送信されます。

ルーターSYSLOG設定

外部サーバーのrsyslog設定と実際のログ内容は以下のようになります。routerlogからMACアドレス「10:6F:3F:XX:XX:XX」もしくは機器ID「AP106XXXXXXXXX」で自宅ルーターからのアクセスであり、4番目の項目にIPアドレスがあります。
SYSLOGデータを
これらを踏まえてDDNS更新プログラム1のIPアドレス取得部分をログから抽出するように改造します。
DDNS更新プログラム2 syslog-setddns.py

#setddns.py
import re
import requests
import ipaddress
from datetime import datetime
from pathlib import Path

# SETTING DATA
MY_DOMAIN = "example.jp"
MY_PASS = "1234567890"
MY_HOSTNAME = "camera"
OUT_FILE = Path("/tmp/ipadress")
INPUT_FILE = Path("/var/log/routerlog")
SEARCH_WORD = "10:6F:3F:XX:XX:XX"
RESULT_ITEMNO = 4

def time_msg():
    now = datetime.now()
    return now.strftime("%Y/%m/%d %H:%M:%S")

def is_valid_ip(ip_str):
    try:
        ipaddress.ip_address(ip_str)
        return True
    except ValueError:
        return False

def get_ip_from_log():
    try:
        with open(INPUT_FILE, 'r') as f:
            matching_lines = [line for line in f if SEARCH_WORD in line]
            
        if not matching_lines:
            print(f"{time_msg()} No matching lines found in log")
            return None
            
        last_line = matching_lines[-1]
        parts = last_line.split()
        
        if len(parts) <= RESULT_ITEMNO:
            print(f"{time_msg()} Log line format error")
            return None
            
        return parts[RESULT_ITEMNO]
    except Exception as e:
        print(f"{time_msg()} Error reading log file: {e}")
        return None

def main():
    # Get IP from log file
    current_ip = get_ip_from_log()
    if not current_ip:
        return

    # IP check
    mssg = time_msg()
    if not is_valid_ip(current_ip):
        print(f"{mssg} invalid IP={current_ip}")
        return

    # Read previous IP
    previous_ip = ""
    if OUT_FILE.exists():
        with open(OUT_FILE, "r") as f:
            previous_ip = f.read().strip()

    if current_ip == previous_ip:
        print(f"{time_msg()} no change IP={current_ip}")
        return
    else:
        print(f"change IP from {previous_ip} to {current_ip}")

    # Update DDNS
    mssg = time_msg()
    print(f"{mssg} access to value-domain")

    url_set_ddns = (
        f"https://dyn.value-domain.com/cgi-bin/dyn.fcg?"
        f"d={MY_DOMAIN}&p={MY_PASS}&h={MY_HOSTNAME}"
    )

    try:
        response = requests.get(url_set_ddns, timeout=10)
        response.raise_for_status()
        result = ' '.join(response.text.strip().split())
    except requests.RequestException as e:
        print(f"{time_msg()} Failed to update DDNS: {e}")
        return

    mssg = time_msg()
    print(f"{mssg} {MY_HOSTNAME}.{MY_DOMAIN} {result} IP={current_ip}")

    # DDNS更新が成功した場合のみIPを保存
    if "status=0" in result:
        with open(OUT_FILE, "w") as f:
            f.write(current_ip)
        print(f"{mssg} Successfully saved new IP: {current_ip}")
    else:
        print(f"{mssg} DDNS update failed, IP not saved")

if __name__ == "__main__":
    main()

このプログラム中の変数の初期設定

  • MY_DOMAIN:ドメイン名 例)example.jp
  • MY_PASS:パスワード
  • MY_HOSTNAME:ホスト名 例)www
  • OUT_FILE: IPアドレス記録ファイルを指定します。
  • INPUT_FILE:syslogファイルを指定します。
  • SEARCH_WORD: 自宅ルーターを特定できる文字列を指定します。
  • RESULT_ITEMNO:syslogファイル中のIPアドレスがある項目の番号を指定。先頭は1

以上を設定してCRONに10分間隔で登録すれば動作します。

ワンポイントヒントsyslog以外に連携方法はある?
なぜsyslogを使うのかというと、syslogのログにはアクセス元のIPアドレスと共にMACアドレスが記録されます。また場合により機器IDも記録されます。これによっていろんなところから情報が送られてきますが、自宅の機器を特定できます。

SNMPトラップ送信を利用するのも手です。SNMPはUDPパケットのためルーターを通過するたびにMACアドレスは書き換えられるのでMACアドレスでは特定できません。しかしながらIPアドレスと機器のベンダーを識別する一意の機器IDが取得できるので利用できます。
ただ残念なことにWEB監視カメラの設定でSNMP項目があるのですが、サーバーからの要求に対する応答のみで、SNMPトラップを送信できる機種は多くありません。

外部からのリモートデスクトップ接続に利用

外部から自宅のPCをリモートデスクトップ接続するのに利用します。この場合PCの電源は入ってログインできる状態でないとだめです。

Wake-on-LAN (WoL) 機能でPCを遠隔操作で起動する方法もありまが、この場合は事前にホスト名とIPアドレスが正しくDNSに登録されていることが前提となります。4)のような手法で別途DDNSの登録が必要となります。

PCは起動スクリプトでValue DomainのDDNSを更新するか、スケジュールで定期的にバッチ処理します。これにより、リモートデスクトップ接続用のドメイン名を固定化できます。

外部からのリモートデスクトップ接続利用図

他社DDNSとCNAMEを利用した方法

監視カメラが他社DDNSに対応している場合、そのホスト名をValue DomainのDNSでCNAME設定し、独自ドメインで運用します。

他社DDNSとCNAMEを利用した方法

CNAME DNS設定

DDNSに関するよくある質問

DDNSは無料で使えますか?

はい、Value DomainではDDNSサービスを無料でご利用いただけます
対象のドメインをご利用中であれば、管理画面から簡単にDDNSの設定が可能です。追加費用なく、動的IP環境でも安定したホスト名でのアクセスが実現します。

詳しくはこちら▶DDNSの設定方法を見る

固定IPとDDNSはどちらがよいですか?

それぞれにメリットがありますが、コストと柔軟性を重視するならDDNSがおすすめです

項目固定IPDDNS
月額費用高い無料~
設定の柔軟性高い(IP変わらない)高い(スクリプトで自動更新)
家庭用回線での利用不可な場合あり対応しやすい

特に、自宅サーバーやWEBカメラを一時的・個人的に公開したい場合は、DDNSで十分対応できます。

DDNSはスマホからも利用できますか?

はい、スマホからでもDDNSの管理や更新は可能です
たとえば、以下のような方法でDDNSを活用できます。

  • スマホのブラウザからValue Domainの管理画面にアクセスして手動更新
  • Android端末では「Dynamic DNS」対応アプリ(例:Tasker連携)で自動更新も可能
  • スマホをテザリングして動的IPを取得し、そのIPでDDNS更新も可能

※スマホそのものをサーバーとして使うには制限がありますが、スマホを経由した接続や更新管理には十分対応しています。

まとめ:DDNSなら、動的IPでも“安定した接続”が手に入る

いかがでしたか?DDNSを利用すれば、動的IP環境でもWEB監視カメラや自宅サーバを独自ドメインで公開できます。Value DomainのDDNSサービスを活用すれば、自宅サーバーやWEB監視カメラを独自ドメインで公開でき、リモートアクセスや監視システムの構築が容易になります。

DDNSの主な活用シーン
  • 自宅サーバーの公開(ブログ、ファイルサーバー、ゲームサーバーなど)
  • WEB監視カメラの遠隔監視(外出先からのリアルタイム確認)
  • リモートデスクトップ接続(自宅PCへの安全なアクセス)
  • IoTデバイスの管理(NASやホームオートメーション機器への接続)

DDNSの限界と今後の課題

  • CGNAT環境では利用不可
    モバイル回線や一部のISPでは、キャリアグレードNAT(CGNAT)が採用されており、グローバルIPアドレスが割り当てられないため、DDNSが使えない場合があります。解決策:VPNやリバースプロキシ、P2P接続などの代替手段が必要
  • セキュリティリスクへの対策
    DDNSで公開したサーバーやカメラは、不正アクセスの標的になりやすいため、ファイアウォール設定やIP制限、HTTPSなどの対策が必須です。
  • 更新遅延による一時的な接続不可
    IPアドレスの変更からDNSの反映までに数分~数十分の遅延が発生する場合があり、即時性が求められる用途では注意が必要です。

DDNSは、動的IP環境でも安定したリモートアクセスを実現する強力なツールですが、環境によっては別のアプローチが必要になることもあります。

バリュードメインでは、ドメイン取得・DNS設定・DDNS機能までワンストップで提供しています。
しかも、20年以上の運用実績継続提供されているDDNSサービスにより、他社無料DDNSのような突然の終了リスクも少なく、安心して長期運用が可能です。

ドメインをまだ持っていない方も、Value Domainで取得すればすぐにDDNS機能が使えます。

取得したいドメインをご入力ください

次回は、CGNAT環境でも使える代替手段として、外部サーバーと自宅サーバーをトンネル接続しWEB監視カメラ映像を公開する方法を紹介します。

登録実績700万件!.com790円

バリュードメイン公式サイトをみる
▽キャンペーン開催中!
バリュードメインでは、
【 .com1個目 790 】のドメインセール、
ドメイン・サーバー同時契約でドメイン費用永久無料(年間最大3,124円お得)
などお得な特典やキャンペーンが盛りだくさん!
是非、お得なこの機会にご利用ください。最新のキャンペーンはこちらから

ドメイン取得ならValue Domain

ユーザーノートの記事は、弊社サービスをご利用のお客様に執筆いただいております。

執筆者:苗場 翔様

医療メーカーで新素材研究開発後、電機メーカーで制御器系システム開発を経てIT系マルチエンジニアをしています。またデザイン思考を実践し、アート思考などのいろんな思考方法に興味があります。

Posted by admin-dev


おすすめ関連記事

service

Value Domain
ドメイン取得&レンタルサーバーなら
Value Domain
ドメイン登録実績600万件を誇るドメイン取得・管理サービスと、高速・高機能・高品質なレンタルサーバーや、SSL証明書などを提供するドメイン・ホスティング総合サービスです。
目次へ目次へ