EdgeRouter X – 5. ダイナミック DNS の設定 ( DDNS )

さて、今回は後々の VPN の設定等で必要になるダイナミック DNS (DDNS) を設定してみます。

ダイナミック DNS とは

インターネット上の端末はすべて IP アドレスという番号が1つ1つ割り当てられています。ただそのままだと数字の羅列で覚えにくいので、 DNS という仕組みで、 www.apple.com = XXX.XXX.XXX.XXX というようにもう少し覚えやすいホスト名 (もしくはドメイン名 = FQDN) と IP アドレスが対応づけられており、 IP アドレスを覚えなくてもホスト名でその端末にアクセスできるようになっています。

今回設定している ER-X を始め、基本的にルーターもインターネット上の端末なので、インターネットにアクセスする際に WAN 側に必ず IP アドレスが割り当てられます。ただその割り当てられた IP アドレスは家庭用のインターネット回線契約では一定でないことが多く、ルーターに VPN 等のために外部からアクセスしようとすると、いまの IP アドレスが外出先から分からないので困難を伴います。

それを解決するのが ダイナミック DNS です。有名どころは DynDNSno-ip ですが、これらのサイトではホスト名を登録し、そのホスト名に紐づけられる IP アドレスをユーザーが任意に登録・更新することができるようしてくれます。つまり自分のルーターが、割り当てられている IP アドレスに関わりなく、常に決まったホスト名でアクセスできるようになります。 VPN では外部からそのルーターにアクセスでなければならないので、この仕組みがないと毎回自宅にいる人にルーターの WAN 側の IP アドレスを調べてもらったりするハメになります。

無料で良心的な Duck DNS を使う

今回は無料で使える Duck DNS を使ってみます。サイトの見た目はまるで 90 年代でびっくりですが、無料で使えるし、30日ごとにログインが必要だったりしないし、 ER-X も対応しているのでよしとします。

今回はこのような作業になります。

  1. Duck DNS で ホスト名を登録
  2. ER-X から登録したホスト名の IP アドレスを更新するよう設定

これをすれば、 ER-X が自分に割り当てられた WAN 側の IP アドレスを自動的に Duck DNS で取得したホスト名に登録するようになり、外出先からいつでもそのホスト名で ER-X やポート転送を設定した LAN 内のサーバにもアクセスできるようになります。設定後はこんな感じになります。今回ホスト名は yaberouter1.duckdns.org にしました。

設定値
Duck DNS
domain yaberouter1
ER-X
ER-X ファームウェア 1.9.0
Interface eth0 (もしくは pppoe0)
Service custom-duckdns
Hostname yaberouter1
Login nouser
Password Duck DNS のサイトに表示される “token”
Protocol dyndns2
Server www.duckdns.org

では設定してみます。


Duck DNS で ホスト名を登録

まずは Duck DNS でホスト名を登録します。今回は yaberouter1 にします。

Duck DNS のサイトでFacebook や Google 等お好きなアカウントでログイン
yaberouter1 を入力し add domain ボタンを押す
表示されている token を控えておく

screen_shot_2016-10-06_at_7_12_44_pm

これでホスト名の登録が完了です。次に EdgeRouter で、登録したホスト名の IP アドレスを自動的に更新するよう設定します。


ER-X から IP アドレスを更新するよう設定

次に、 ER-X がホスト名 yaberouter1.duckdns.org に対して自分の WAN 側の IP アドレスを登録するようにします。一度設定してしまえば、あとは ER-X が定期的に自分の IP アドレスを確認し、変更があった場合は Duck DNS を更新するので、 WAN 側の IP アドレスが変わったとしても、いつでも外出先等から yaberouter1.duckdns.org で ER-X にアクセスできるようになります。ちなみに Duck DNS で IP アドレスを更新する場合のユーザー名は nouser 、パスワードはサイトに表示される token 、そしてプロトコルは dyndns2 です。

GUI やコンフィグツリーからでも設定できますが、ここからは高度な設定に必要なコマンドライン (CLI) での設定に慣れてみましょう。どうですか、ルーターをハッキングしてる感が出ませんか。

Mac の「ターミナル」アプリを起動
ssh ユーザー名@192.168.1.1
パスワードを入力

これで ER-X に SSH 経由でログインしました。それでは設定のためコマンドを入力していきます。コマンドは1文字足りともスペルミスは許されませんので、座禅や水垢離等で気合を入れてから入力するようにしてください。また、インターネットの接続に eth0 でなく pppoe0 を使っている場合はそのように入力してください。

## 「設定モードに移行」
configure

## Duck DNS の設定値を入力
set service dns dynamic interface eth0
set service dns dynamic interface eth0 service custom-duckdns
set service dns dynamic interface eth0 service custom-duckdns host-name yaberouter1
set service dns dynamic interface eth0 service custom-duckdns login nouser
set service dns dynamic interface eth0 service custom-duckdns password <token>
set service dns dynamic interface eth0 service custom-duckdns protocol dyndns2
set service dns dynamic interface eth0 service custom-duckdns server www.duckdns.org

## 設定を保存
commit
save

## 「設定モードを出る」
exit

これで OK です。管理画面の Service > DNS のページの下部、 Dynamic DNS の欄ににいま入力した設定値が出ていることを確認しましょう。一番下の Force Update ボタンを押して、更新が成功すれば問題無しです。成功しなければ・・・何か設定が間違ってます(笑)。

screen-shot-2016-10-06-at-9-18-02-pm

これで晴れて外部から yaberouter1.duckdns.org と入力すれば、いつでも ER-X にアクセスすることができます。例えば前回で LAN 内に FTP サーバーを立てたとして Port Forwarding を設定したので、その前提だと ftp://yaberouter1.duckdns.org:50001 と入力すれば LAN 内の FTP サーバーにアクセスできることになります。

Cloudflare で独自ドメインの DDNS を使う

それでは、今度は自分でドメイン名を持っていて、それを使って DDNS をやりたい場合の設定をしてみます。例としてみんな大好き Cloudflare を使った場合の設定を載せてみます。 Cloudflare はサイトを高速化する無料 CDN として有名ですが、 DNS サーバーだけとしても無料で使うことができ、しかも高機能かつ UI が素敵なことで名高いです。その Cloudflare に自分の持ってるドメイン名を登録し、 DNS サーバーとして使っている前提で、ひとつサブドメインを DDNS 用に割り当て、 ER-X から更新するよう設定してみます。ここで DDNS 用のサブドメインは、自分が example.com というドメイン名を持っているとして、 yaberouter.example.com とします。自分でドメイン名を持っていない、もしくは DNS サーバーをどうやって Cloudflare にしたらいいかわからない、という場合は前述の Duck DNS を使うのが無難です。

今回はこのような作業になります。

  1. Cloudflare でホスト名(サブドメイン)を登録
  2. ER-X から登録したホスト名の IP アドレスを更新するよう設定

設定値は下記の通りです。

設定値
Cloudflare
A record yaberouter
IP アドレス 1.1.1.1 (初期値はなんでもいい)
ER-X
ER-X ファームウェア 1.9.0
Interface eth0 (もしくは pppoe0)
Service custom-cloudflare
Hostname yaberouter.example.com
Options zone=example.com
Login Cloudflare でのメールアドレス
Password Cloudflare の Global API Key
Protocol cloudflare
Server www.cloudflare.com

Cloudflare で ホスト名を登録

まずは Cloudflare でホスト名を登録します。今回は yaberouter にします。

Cloudflare にログイン
新しい A レコード "yaberouter" と "1.1.1.1" 等適当に IP アドレス を入力し、
Cloudflare CDN は無効にして add record ボタンを押す
自分のアカウントのページに表示されている Global API Key を控えておく


ER-X から IP アドレスを更新するよう設定

## 「設定モードに移行」
configure

## Cloudflare の設定値を入力
set service dns dynamic interface eth0
set service dns dynamic interface eth0 service custom-cloudflare
set service dns dynamic interface eth0 service custom-cloudflare host-name yaberouter.example.com
set service dns dynamic interface eth0 service custom-cloudflare login aaa@bbb.com
set service dns dynamic interface eth0 service custom-cloudflare options zone=example.com
set service dns dynamic interface eth0 service custom-cloudflare password <Global API Key>
set service dns dynamic interface eth0 service custom-cloudflare protocol cloudflare
set service dns dynamic interface eth0 service custom-cloudflare server api.cloudflare.com/client/v4/

## 設定を保存
commit
save

## 「設定モードを出る」
exit

これで OK です。管理画面の Service > DNS のページの下部、 Dynamic DNS の欄ににいま入力した設定値が出ていることを確認しましょう。前と同じように一番下の Force Update ボタンを押して、更新が成功すれば問題無しです。成功しなければ・・・やはり何か設定が間違ってます(笑)。


今回は下記のページやスレッドを参考にしました。

EdgeMAX – Dynamic DNS commands

Dynamic DNS problem edge router lite.

Dynamic DNS add NO-IP

以上、お疲れ様でした。


yabe.jp » Gadgets » EdgeRouter X – 5. ダイナミック DNS の設定 ( DDNS )