独自ドメインを固定IPアドレスを契約せずに運用する方法

この記事は 3 分で読めます。
概要

独自ドメイン名で自宅サーバーを運用したい場合、一般に固定IPアドレスが必要です。ただ固定IPアドレス取得には契約費がかかることから、個人でのサーバー運用は一般的ではない。本記事では、動的IPアドレスでも独自ドメインを運用できるダイナミックDNS の概要と設定方法を解説します。

管理人

本記事の読者層は以下の方を想定しています。

本記事の読者層
  • 自宅サーバーを運用したい方。
  • 固定IPアドレスを契約したい方。

動的IPアドレスって良くわからないけど、何のことなの?

ネットで郵便物を届けるには、ネット上の住所(固定IPアドレス)が必要なのじゃが、ネットに接続するたびにかわる住所(IPアドレス)が「動的IPアドレス」なのじゃ!

不便ねえ!なぜそんなアドレスがあるの?

IPアドレスは世界的に枯渇ぎみなので、時間帯を限ってユーザーにIPアドレスを割り振るしかない事情があるのじゃよ。この問題を解決するため次の方法があるのじゃ!

目次

固定IPアドレスと変動IPアドレスとは?

IPアドレスは、大きく二つにわかれています。

変動IPアドレス (動的IPアドレス)
コンピューターがネットワークに接続する際、一定期間にアドレスが変動する。

固定IPアドレス(静的IPアドレス)
コンピューターがネットワークに接続する際に、いつでも同じIPアドレスが付与される。

この変動IPアドレスが必要な理由は、固定IPアドレスの数が限られており、使用者の増加から利用できる数が世界的に枯渇しています。現在では、固定IPアドレスは世界的に管理されており、実際の利用には回線費とは別に、プロバイダの契約して利用量を支払う必要があります。

ただ、一般家庭で契約しているネットワーク回線は、変動IPアドレス(IPアドレスが接続のたびに変わる)を使っており、接続中のみIPアドレスが割り振られている状況で、ネット環境を楽しむだけであれば固定IPアドレスは必要ありません。このように大多数の個人ユーザーは固定IPアドレスを保有せずにネットワークを使用し、限りあるIPアドレス資源を有効に活用しています。

固定IPアドレスはどのようなとき必要か?

情報を発信しているサーバー等はユーザーから常にアクセスする都合上、いつも同じIPアドレス、すなわち固定IPアドレスをを持っていないといけません。資本力のある企業・団体は固定IPアドレスをプロバイダと契約して、情報発信用サーバーに割り振っています。

このように固定IPアドレスを割り振る必要のある情報発信用コンピューター、すなわちサーバーがある場合、独自ドメイン (オリジナルドメイン) も必要となります。

固定IPアドレスがないと独自ドメインの運用はできないのか?

固定IPアドレスの契約コストを掛けたくないユーザーが、一般家庭で契約しているネットワーク回線で、自宅サーバーを運用したい場合どうしたらよいかを考えてみましょう。

固定IPアドレスがない」=「独自ドメインを持てない」なのでしょうか?

独自ドメインが持てないので、郵便にあたる住所がなく、当然遠隔地から自宅サーバーにたどり着けません。これではサーバー運用はできませんよね。

何か方法はないものでしょうか?

一般家庭で契約しているネットワーク回線でも、割り振られたIPアドレスを一定期間、使い続けられます。これを利用する手があります。現在繋がっているIPアドレスを常にどこか送信するサービスがあり、そこへ遠隔地から訪ねて行けばいい訳です。

つまり以下の図の下部のように、変動IPアドレスでもIPアドレスが変わる度にそのアドレスを送信して居場所を伝えるサービスです。

これを実現してくれるサービスがあります。これが「ダイナミックDNS」という方法です。

DDNSサービス(ダイナミックDNS)とは

DDNSサービスとは、

①自宅サーバー・ルーターが現在繋がっているIPアドレスを認識し、このIP情報を固定IPアドレスを持つDNSサーバーAに送信
②DNSサーバーAは、受け取ったIPに対して「ドメイン名」を発効
③ネットユーザーは、DNSサーバーAが発効した「ドメイン名」で自宅サーバーに繋ぐことができる。

ここで、DDNSサービスを運用する条件は、

【条件1】自宅サーバー・ルーターに現在繋がっているIPアドレスが認識できること。
【条件2】DNSサーバーAがあること。

DDNSサービスって変な仕組みね。二つの条件を揃えるのは難しいわ!

そうじゃのう!
実は、この二つの条件を揃えてくれるルーター販売会社があるのじゃよ!

ルーターの設定でダイナミックDNSを設定

DDNSサービスを提供してくれる有名な会社の1つが、「YAMAHA」です。【条件1】を満たすルーターが「YamahaルーターRTX1200シリーズ」で、【条件2】を満たすDDNSサービスを提供するサービス名が「ネットボランチサービス」と呼ばれています。

YamahaルーターRTX1200のネットボランチサービスとは?

Yamahaルーターは、動的IPアドレスを利用する一般ネットワーク回線であっても、接続中のIPアドレスの情報をYamahaサーバーへリアルタイムで送信してくれます。つまり、住所を持たない浮浪者(個人サーバー機)がどこにいるのかを、いつでもGPS(Yamahaルーター)で場所を特定して、ある郵便局(Yamahaのメインサーバ-)に居場所を常に登録 (DNS=ダイナミックネームサーバー) してくれます。

これが、「ネットボランチサービス」の概要です。このように動的IPアドレスをルーター側でDNSに割り当ててくれる「ダイナミックDNSサービス」と呼びます。

ルーター購入者は「ネットボランチサービス」を無償利用できるため、個人サーバー機を自宅で運用したい方の強い味方です。

ネットボランチサービスの問題

ネットボランチサービス自身は優れたサービスです。個人サーバー運用するだけであれば問題は見当たりません。しかし、割り当てられるドメイン名がある決まったサブドメイン名となってしまい、商用用途のサーバー運用にはいくつかの問題点があります。

ネットボランチサービスでYamahaから貰えるサブドメイン
XXXXX.aaX.netvolante.jp
「XXXXX」と「X」サブドメイン名部は独自で決められる

ネットボランチサービスのサブドメイン名の問題:商用用途の問題点
①SEO対策的にはサブドメインやサブディレクトリ構造をもつURLはできれば避けたい。
②ドメイン名にaaX名前がなどが付くなど長すぎて、独自性がでず、ユーザーに覚えてもらえない。
③googleなど広告収入を受ける場合、サブドメインURLは受け付けてくれず収益化ができない。

特に、個人サーバーでブログを発信して収益を得たいと考えている方には不向きなサービスです。

ダイナミックDNSができるルーターの種類

最近のルーターの中には他社のDDNSサービス (お名前.comや googleなど)に対応するルーターもいくつか出ています。

イントラネットワーク (セキュリティ等のサービス) のサービスにしてもインターネット側のサービス(VPN等の接続サービス)にしてもただ、Yamahaルーターほど完璧なルーターは他にありません。できればセキュリティの観点から、外部ネットワークとのやり取りはYamahaルーターを介して行いたい。「Yamahaさん何とかしてください!」。

ただ、嘆いても仕方がないので今回はルーター内部のイントラネットにサーバー機を立てて代わりのDDNSサービスを実現することにしました。

ルーターはセキュリティ上必要なので以下の設定では「Yamaha」ルーターを入れています。

ルーターのセキュリティに関しては、以下の記事をご参照ください。

ルーターはセキュリティ上重要なのね!

独自ドメインで自宅サーバーを運用するための設定概要

今回のネットワーク構造は以下の通りです。内部Server1を立てて、Curlコマンドで動的IPアドレスを確認し、お名前.comへ知らせるという構図。

Netvolante-DNS設定例 (RTX1200)

サーバー側でダイナミックDNS(DDNS)を活用・手動更新

ルーター内部(イントラ内)にサーバー機を設定します。この内部サーバーからインターネットから見える動的IPが確認できるかを以下のようにcurlコマンドで確認して行きましょう。

curlコマンドを利用して、自身のIPアドレスを返してくれるサイト

  • ipecho.net/plain
  • ifconfig.io、
  • ipinfo.io,net-ip.info
$curl net-ip.info
XXX.XXX.XXX.XXX

これによりイントラ内から動的IPアドレスが確認できることがわかります。

DNSの手動登録:「お名前.com」でのドメイン取得

TYPE-Aレコードにて$curl net-ip.infoで表示されたIPアドレスの仮入力を行っておく。

お名前.comのドメイン取得方法は以下のリンクを参照ください。↓

「お名前.com」に動的IPアドレスを送信しDDNSとして運用する手動更新・設定方法

お名前.comではダイナミックDNS(DNS)登録用にIPアドレスの更新が外部からのコマンド入力でできます。このコマンド入力の前に事前に上で述べた「お名前.comのDNS登録」を行っておく必要があります。

イントラ内から次ぎのコマンドを入力してDDNSが利用できるか見て行きましょう。

# openssl s_client -connect ddnsclient.onamae.com:65010 -quiet

この後、すぐに以下のテキストを添付すれば登録できます。こちらは手動更新となります。

LOGIN
USERID:お名前.comのID
PASSWORD:お名前.comのpass
.
MODIP
HOSTNAME:ホスト名(www)
DOMNAME:ドメイン名(wisenetwork.net)
IPV4:XXX.XXX.XXX.XXX
.
LOGOUT
.

この作業が面倒なときは、次のようにシェルスクリプトを書いて自動実行するのもありです。次にその設定例を紹介します。

BashによるダイナミックDNSの更新の自動化

その後、下記のリンク記事を参考にして

bashのシェルスクリプトを下記のように記載します。

#!/bin/bash

# Global IPアドレス取得
gip=$(curl inet-ip.info)
domip=$(dig 更新したいホスト名.ドメイン名 +short)

# IPアドレス更新
if [ "$gip" != "$domip" ]; then
  {
    echo "LOGIN"
    echo "USERID:お名前.comのID"
    echo "PASSWORD:お名前.comのpass"
    echo "."
    echo "MODIP"
    echo "HOSTNAME:ホスト名(www)"
    echo "DOMNAME:ドメイン名(wisenetwork.net)"
    echo "IPV4:$gip"
    echo "."
    echo "LOGOUT"
    echo "."
  } > input.txt
  openssl s_client -connect ddnsclient.onamae.com:65010 -quiet < input.txt
else
  echo "IPは更新の必要がありませんでした。"
fi

exit 0

ここでは、「お名前.comのID」,「お名前.comのpass」,「ホスト名(www)」,「ドメイン名(wisenetwork.net)」は自身の登録情報にて確認ください。今回はBashのスクリプトの例ですが、C言語やpython等の言語でも行っている方がいるようです。

これを以下のようにコマンド実行すると

$ sudo bash ddns.sh
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100    13  100    13    0     0    216      0 --:--:-- --:--:-- --:--:--   220
depth=2 OU = GlobalSign Root CA - R3, O = GlobalSign, CN = GlobalSign
verify return:1
depth=1 C = BE, O = GlobalSign nv-sa, CN = GlobalSign GCC R3 DV TLS CA 2020
verify return:1
depth=0 CN = *.onamae.com
verify return:1
000 COMMAND SUCCESSFUL
.
000 COMMAND SUCCESSFUL
.
000 COMMAND SUCCESSFUL
.
000 COMMAND SUCCESSFUL

SUCCESSFUL」が4回表示されていれば成功。

仮に、

002 LOGIN ERRORと出た場合には、「ログインの失敗」しています。

003 DBERRORと出た場合には、「IP変更に問題」があります。

が生じている可能性があります。お名前.comサイドで登録情報に重複があるかなどを確認した方が良いです。

これをcronなどのジョブズスクリプトと組み合わせて定期的に実行すれば、サーバーが動いている限りDDNSが可能となります。

CronコマンドでIPとドメインの紐付けを自動実行する方法

例えば、Userでログインしている場合、

/var/spool/cron/crontabs/User

内に一日一回、dns.shを実行するようにするにするには以下のように記述しておきます。

0 0 * * * /bin/bash sh /var/www/html/dns.sh

最後に、cronサービスをスタートさせます。

$ /etc/init.d/cron start
Starting cron (via systemctl): cron.service.

確認のため、サービスが本当に動いているかは以下のサービス一覧のコマンドで確認できます。

$ systemctl list-units --type=service
  UNIT                                 LOAD   ACTIVE SUB     DESCRIPTION
  cron.service                         loaded active running Regular background program processing daemon

cron.serviceが立ち上がっていれば問題ありません。

ドメインが登録されているか確認する方法

イントラ内からnslookupコマンドにてDNS(ここでは「www.wisenetwork.net」)を確認すると、以下のように「XXX,XXX,XXX,XXX」(実際には動的IPアドレスが記載)と表示されます。

nslookupコマンド

$ nslookup www.wisenetwork.net
Server:		172.20.10.1
Address:	172.20.10.1#53

Non-authoritative answer:
Name:	www.wisenetwork.net
Address: XXX.XXX.XXX.XXX

無事、DNSとIPアドレスが紐付いたようです。

仮にドメインが紐づいていない場合は、以下のように表示されます。

** server can't find www.wisenetwork.net: NXDOMAIN

まとめ

本記事のまとめ
  • ルーター内のサーバー機を設置して、IPアドレスをDNSサービスへ送る方法が有効。
  • 「お名前.com」に動的IPアドレスを送信しDDNSとして運用する。
  • DDNSサービスは、バッチファイルをCronで自動実行することでIPアドレスの変更に対応できる。

次回の記事をご期待下さい。どうぞよろしくお願いいたします。

関連リンク

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次