4.3 SoftLayerのDNSを利用するには？

（2016年時点での内容をアーカイブとして掲載しているため、一部の掲載内容が最新情報とは異なる場合がありますので、ご了承ください。最新のIBM Cloudのアップデート情報は[IBM Cloud アップデート情報](https://www.ibm.com/cloud-computing/jp/ja/cloud-update/) や [柔らか層本](https://ibm.ent.box.com/v/ibmcloud-yawaraka)をご参照ください。）

概要
SoftLayerでは、インターネットに繋がっているパブリックIPアドレス、SoftLayer内部で使っているプライベートIPアドレスの両方に対して名前解決のためのDNSサービスを提供しています。 ここでは、DNSサービスやIPv4、IPv6の設定方法などをご紹介します。
 

SoftLayerで利用できるDNSサービスの種類
SoftLayerは、無料で次のような3つのDNSサービスを提供しています。
(1) Forward Zonesサービス

ドメイン名からIPアドレスを求めるサービスです。 一般のDNSサービスとは違ってウェブの画面から登録することができます。 DNSサーバーのIPアドレスは、次のURLをご参照お願いします。

What are the SoftLayer name server addresses？ (http://knowledgelayer.softlayer.com/faqs/199#26)

(2) Secondary Zonesサービス

お客様のDNSサーバーの可用性を高めるために、SoftLayerのデータ・センターのなかにセカンダリDNSサーバーを提供するサービスです。 DNSサーバーのIPアドレスは、次のURLをご参照お願いします。

Which IP addresses will be used for my secondary domain zone transfers？ (http://knowledgelayer.softlayer.com/faqs/199#32)

(3) Reverse Recordsサービス

IPアドレスからドメイン名を引いてくる逆引きDNSレコードを登録するサービスです。 このサービスは、通常のインターネット上のサービスで利用するより、ログに残っているIPアドレスを分析したり、アクセス元の詐称を防止するなど、管理上の用途に用いられます。
 

可用性を高めるためのDNS利用
DNSサービスを利用することで、アクティブ・スタンバイ構成のフェイル・オーバー時にアプリケーションからの接続先を固定し、障害時にサービスの中断を最小限に留めることができます。

下図では、ウェブ・サーバーとアクティブ・スタンバイのデータベース・サーバーで構成されています。 データベース・サーバー2台は、プライベートIPアドレスでDNSに登録されています。 データベース・サーバーの接続先は、CNAMEのエイリアス名にします。 もし、アクティブ・データベース・サーバーに障害が起きれば、アプリケーションからの接続先は変えず、CNAMEの接続先を切り替えます。


データベースのサーバーのDNS名を解決するには

まず、フォワード・ゾーンの登録をした上で、データベース・サーバーのIPアドレスを登録していきます。

フォワード・ゾーンの登録

カスタマーポータルから「Network」->「DNS」->「Forward Zones」->「Add DNS Zones」をクリックすると、「DNS Forward Zones」画面が表示されます。 名前解決を行う対象として、ドメイン名とデータベース・サーバーのプライベートIPアドレスを入力し、「Add Zone」ボタンをクリックします。


フォワード・ゾーンの登録が完了すると、次の図のように仮のDNSゾーンの一覧が確認できます。 不要なエントリは削除し、適宜設定をする必要があります。

DNSサーバーにIPアドレスを登録

ここでデータベース・サーバーをAレコードとして追加します。 カスタマーポータルから「Network」->「DNS」->「Forward Zones」をクリックし、「DNS Forward Zones」画面を表示します。 「DNS Forward Zones」画面では、ドメイン一覧が表示されますので、対象のドメイン名(example.co.jp)」をクリックし、「DNS Edit Zone」画面に移動します。 そして「DNS Edit Zone」画面の「Add New Record」に追加対象のサーバー情報を入力し、「Add Record」をクリックします。 DNSレコードの追加は、ここで繰り返して行うことができます。
 

 Resource Type：A
 Host：< 対象サーバーのホスト名 >
 Points to：< 対象サーバーのIPアドレス >
 TTL：< 15 Min >

続けて、「DNS Edit Zone」画面にてデータベース・サーバーのCNAMEレコードを登録します。 これはデータベース・サーバーへの接続先を固定するために行います。 CNAMEの登録は、「Resource Type」を「CNAME」にし、「Host」にはCNAMEのエイリアス名を入力し、「Points to」にはアクティブ・データベース・サーバーのホスト名を入力します。 ここまでで、DNSゾーン及びレコード登録が一通り完了しました。
 

 Resource Type：CNAME
 Host：< CNAMEのエイリアス名>
 Points to：< アクティブ・データベース・サーバーのホスト名 >
 TTL：< 15 Min >

追加されたDNSレコードは、次の図のように画面の下段に表示されます。

ネームサーバー設定

実際に各サーバー上で名前解決をするためには、/etc/resolv.confにDNSサーバーを登録する必要があります。
 

nameserver 10.0.80.11
nameserver 10.0.80.12

pingコマンドを使用した接続先の確認

ウェブ・サーバーからPingコマンドでDNS設定の結果を確認してみます。 現在のCNAMEエイリアスは「db.example.co.jp」であり、接続先は「db1.example.co.jp」 になっていることが確認できます。
 
```
# ping db.example.co.jp
PING db1.example.co.jp (10.110.165.79) 56(84) bytes of data.
64 bytes from 10.110.165.79: icmp_seq=1 ttl=64 time=1.85 ms
64 bytes from 10.110.165.79: icmp_seq=2 ttl=64 time=0.194 ms
64 bytes from 10.110.165.79: icmp_seq=3 ttl=64 time=0.202 ms
・・・後略
```

ここで、カスタマーポータルからCNAMEの接続先を「db2.example.co.jp」に変更します。 それから、PingコマンドでCNAME接続先の切り替えを確認してみます。 CNAMEの接続先は「db2.example.co.jp」になっていることが確認できます。

```
# ping db.example.co.jp
PING db2.example.co.jp (10.110.165.82) 56(84) bytes of data.
64 bytes from 10.110.165.82: icmp_seq=1 ttl=64 time=2.69 ms
64 bytes from 10.110.165.82: icmp_seq=2 ttl=64 time=0.175 ms
64 bytes from 10.110.165.82: icmp_seq=3 ttl=64 time=0.183 ms
・・・後略
```

実際の運用において、CNAMEレコードの切り替えはSLコマンドを利用するのが最も簡単な方法です。 SLコマンドを利用して、DNSレコードの確認と変更などができます。 SLコマンドをシェル・スクリプトに書いて切り替えの自動化をすると便利です。

次のSLコマンドでDNSに定義されている値を確認します。

```
# sl dns list example.co.jp --type=CNAME

.............................................
    id        record   type   ttl  value     
.............................................
 50319324     db       CNAME  900  db1
.............................................
```

次のコマンドでCNAEのターゲットをdb1からdb2へ変更します。
 
```
# sl dns edit example.co.jp db --data=db2
```

SLコマンドのインストールについては、4.9 コマンドラインからサーバーを起動／削除するには？をご参照お願いします。
 

DNSセカンダリ・サーバーを構築するには
DNSセカンダリ・サーバーを作るためにセカンダリ・ゾーンの設定をします。 カスタマーポータルから「Network」->「DNS」->「Secondary Records」をクリックし、「DNS Reverse Records」画面から「Add Zone」をクリックします。

そして「Add Secondary Zone」にて、次のように入力します。 ここではメインのDNSゾーン名がmycompany.comで、DNSサーバーが10.110.165.83としています。
 

 Zone：<プライマリ・ネームサーバーのゾーン名>
 Master nameserver：<プライマリ・ネームサーバーのIPアドレス>
 Transfer Interval：<マスタ・ネームサーバーと同期を取る時間間隔を分単位で入力>

次のようにセカンダリ・ゾーンの設定が完了しました。


IPアドレスからDNS名を取得するには
カスタマーポータルから「Network」->「DNS」->「Reverse Records」から「Reverse DNS Records」画面に移動します。 プルダウン・メニューから逆引き対象のIPアドレスを選択し、「View IP」をクリックします。 IPアドレスは、既に取得しているパブリックIPです。 フォワード・ゾーンに登録されているIPアドレスのみが表示される、というわけではありません。

次に、設定対象のホスト名の入力とTTL時間を選択し、「SAVE」をクリックます。
 

 Hostname：< 逆引き対象のホスト名を選択 >
 Reverse TTL：< 15 Min >

逆引き設定は、nslookupコマンドで確認できます。
 
```
# nslookup 108.168.254.219
;; Got recursion not available from 67.228.254.4, trying next server
Server:         10.0.80.11
Address:        10.0.80.11#53

Non-authoritative answer:
219.254.168.108.in-addr.arpa     name = www.example.co.jp

Authoritative answers can be found from:
```

IPv6アドレスを利用するには
ここでは、ウェブ・サーバーでIPv6を使う想定で、IPv6の注文や設定方法などについて説明します。
 

事前準備
IPv6アドレスを利用ためには、対象サーバーの注文時にオプションとして指定しておく必要があります。 サーバー注文時に「Network Options」の「Public Static IPv6 Addresses」から「64 Block Static Public IPv6 Addresses」を選択します。
 

コマンドを利用してIPv6アドレスの確認
通常のIPv4アドレスでウェブ・サーバーにログインし、IPv6アドレスを確認します。
 
```
# ifconfig eth1
eth1      Link encap:Ethernet  HWaddr 06:F3:75:3B:8C:1E
          inet addr:119.81.162.147  Bcast:119.81.162.151  Mask:255.255.255.248
          inet6 addr: 2401:c900:1201:e3::2/64 Scope:Global           ★★★IPv6アドレス確認ポイント
          inet6 addr: 2401:c900:1201:e3:4f3:75ff:fe3b:8c1e/64 Scope:Global
          inet6 addr: fe80::4f3:75ff:fe3b:8c1e/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:2578 errors:0 dropped:0 overruns:0 frame:0
          TX packets:2176 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:199262 (194.5 KiB)  TX bytes:249747 (243.8 KiB)
          Interrupt:245
```

IPv6アドレスのAAAAレコード登録

次のようにウェブ・サーバーのIPv6アドレスを、AAAAレコードとして登録します。 「Resource Type」をAAAAにし、「Points to」をIPv6アドレスにするだけです。 他はAレコードの登録と変わりません。

IPv6のアドレスは、次の図のように確認できます。

IPv6アドレスの確認

ここでは、複数のIPv6アドレスの確認方法を紹介します。

IPv4でいう「ping」は、IPv6では「ping6」になります。 環境によっては「ping6」コマンドは、別途インストールが必要な場合もあります。
 
```
# ping6 2401:c900:1201:e3::2
PING 2401:c900:1201:e3::2(2401:c900:1201:e3::2) 56 data bytes
64 bytes from 2401:c900:1201:e3::2: icmp_seq=1 ttl=64 time=0.025 ms
64 bytes from 2401:c900:1201:e3::2: icmp_seq=2 ttl=64 time=0.047 ms
64 bytes from 2401:c900:1201:e3::2: icmp_seq=3 ttl=64 time=0.046 ms
・・・中略
```

nslookupコマンドでtypeをAAAAにします。
 
```
# nslookup
> set type=AAAA
> www.example.co.jp
Server:         67.228.254.4
Address:        67.228.254.4#53

www.example.co.jp    has AAAA address 2401:c900:1201:e3::3
```

TeraTermでIPv6アドレスを指定してログインしてみます。 ブラウザーの場合と同じで、IPv6アドレスを[ ]で囲みます。

正常にログインができました。 TeraTermのタイトル部分にIPv6アドレスが表示されています。

ブラウザーを利用からIPv6アドレスをアクセスするには、http://[IPv6アドレス]のようにアドレス部分を[ ]で囲みます。