移転しました
そもそも、v6プラスを契約すればIPv4とIPv6のデュアルスタックになる、というのが前提。一般には安心して契約できてとても利便性が高まるサービスである。ちょっと変わったことをやろうとすると大変なだけ。
前々回の記事で Windows10 October 2018 Update (1809) を適用したところ、IPv6のチェックを入れておかないと Edge や Microsoft Store 等が使えなくなる問題が発生したこと、そして、IPv6を有効にするとChromeで自宅のサービスにアクセスできないことを書いた。
なんでかなと思って調べてみたら、IPv6をオンにした場合とオフにした場合で、DNSへの問い合わせ結果が異なることがわかった。
IPv6をオン(有効)にするとグローバルなIPv4アドレスが返ってくる。
IPv6をオフ(無効)にするとローカルなIPv4アドレスが返ってくる。
オフの場合にローカルなIPv4アドレスが返ってくるのは、宅内で内向きDNSサービスを実行しているからなので正しい動作。オンの場合にグローバルIPv4アドレスが返ってくるのはなぜ?どこに問い合わせに行っているのか?
※この記事はv6プラス契約前に書き始めている。
■IPv6接続オプションの巻
契約に際し色々と確認してみると、IPv6接続オプションの契約が有効になっていることがわかった。
プロバイダーに聞いてみると、「契約内容確認ページではIPv6接続オプションが「解除済み」になっているけれども、実態としてはIPv6接続オプションが使える状態になっていた」ということだった。
当時のネットワーク構成は以下。
[ Internet ] 物理構成図
│
┌─┴─┐
│ ONU │
└─┬─┘
┌────┴────┐
│Router(1)旧機種 │
│IP: 172.16.1.1/16 │
└────┬────┘
┌─┴─┐ ┌──────┐
│ HUB ├──────────────────────┬─┤ WiFi Bridge├─┬─── ・・・
└─┬─┘ │ └──────┘ │
┌────┼──────────────────┐┌────┴────┐┌────┴────┐
│ │ VMware ESXi││Main PC ││Android Phone │
│ (Bridge) ││IP: 172.16.1.2/16 ││IP: 172.16.1.3/16 │
│ ├───────────┐ ││GW: 172.16.1.1 ││GW: 172.16.1.1 │
│┌───┴─────┐┌────┴─────┐││NS: 172.16.1.100 ││NS: 172.16.1.100 │
││Router(2)││Server ││└─────────┘└─────────┘
││IP: 172.16.2.1/16││IP: 172.16.1.100/16 ││
││GW: 172.16.2.1││GW: 172.16.1.1 ││
││PPPoE Connection││NS: 172.16.1.1 ││
│└─────────┘└──────────┘│
└───────────────────────┘
Router(1)は旧機種でv6接続オプションには対応していたが、v6プラスには対応していなかった。
また、Router(2)構築前だったからServerのデフォルトゲートウェイはRouter(1)になっている。
Router(1)はv6接続オプションが有効になっていたから、DHCP機能はないもののRA(Router Advertisement)はブリッジしてくれていて、SLAAC(Stateless Address Auto Configuration)はできてインターネットアクセスができるIPv6のIPアドレスを自動構成していた。
$ ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether nn:nn:nn:nn:nn:nn brd ff:ff:ff:ff:ff:ff
inet 172.16.1.100/16 brd 172.16.255.255 scope global eth0
valid_lft forever preferred_lft forever
inet 172.16.1.101/16 brd 172.16.255.255 scope global secondary eth0:1
valid_lft forever preferred_lft forever
inet6 24xx:xx:xxxx:xxx:xxx:xxxx:xxxx:xxxx/64 scope global mngtmpaddr dynamic
valid_lft 2591644sec preferred_lft 604444sec
と、こんな感じ。なので、IPv6接続オプションでもIPv6アドレスが生成されている。
ping6で google.co.jp との疎通確認をしてみたら、IPv4より早いような気はしていた。
$ ping6 google.co.jp
PING google.co.jp(aaaaaaaaaaa.net) 56 data bytes
64 bytes from aaaaaaaaaaa.net: icmp_seq=1 ttl=54 time=7.86 ms
64 bytes from aaaaaaaaaaa.net: icmp_seq=2 ttl=54 time=9.19 ms
・・・
$ ping google.co.jp
PING google.co.jp (nnn.nnn.nn.nn) 56(84) bytes of data.
64 bytes from aaaaaaaaaaa.net (nnn.nnn.nn.nn): icmp_seq=1 ttl=56 time=13.1 ms
64 bytes from aaaaaaaaaaa.net (nnn.nnn.nn.nn): icmp_seq=2 ttl=56 time=13.4 ms
ただ、実際にネットワークを使っていて「早い」という感じはなかった。
光回線ナビ / v6プラスと「IPv6接続オプション」や「フレッツ光 IPv6接続」の違い
ここに書かれていることと体感は一致。だけどpingだけを見ていると違うような気も…読み間違いかな。
どんなRAを受け取っているのかは以下で確認。
$ sudo apt install radvdump
$ sudo radvdump
このときの記録はとっておかなかった~
このとき、Windows10でipconfig -all してみると、DNSとしてNTT東日本の用意したものも表示されていた。Windows10は、IPv6を有効にしているとIPv4よりもIPv6が優先されるため、問い合わせするとNTT東日本の用意したDNSを先に参照することになる。故に、ローカルにいるのにグローバルなIPv4アドレスが戻ってきていたのだった。
IPv6をオフにしても、覚えたIPアドレスを忘れない場合も。WindowsでDNSキャッシュをクリアするコマンドは以下。
>ipconfig /flushdns
■v6プラスの巻
このあたりまで調べたところでv6プラス対応のRouter(1)が送られてきて設置したため、IPv6接続オプションの検証はやめてv6プラスの設定を始めた。前回記事のRouter(2)構築がそれ。
先に結論。※詳しい方、ぜひ、改善方法を教えてください。
- Ubuntuが提供しているisc-dhcp-serverはデュアルスタック非対応。
ソースからインストールして4.4.xにする必要がある。 - v6プラス環境ではULAのみ自由に振り出してLAN内のアクセスに利用し、GUAとLLAはRAに従って自動構成させてインターネットアクセスする。
- Windows10ではGUA,ULA,LLAの全てが即時に正しく振り出されて動作する。
- UbuntuではGUA,LLAは正しく振り出されるが、ULAは時間が経たないと正しく振り出されず、DNSへの反映もされない問題あり。
やったことは以下。
- ServerのIPv6を有効化。
- ServerのIPv6アドレスを構成。
- ServerのIPv6ポートを開放。
- ServerのDNSでIPv6アドレスを返す。
- ServerのDHCPをIPv6対応させる。
- ServerでRAを返す。
- 使ってみる。
さて…ここまで調べてみたところで、IPv6を各クライアントで使えるようにしたほうが、インターネットを利用する上で有利かもしれないと思い始めた。
IPv6はいずれやらなきゃ、という思いを持っていたので、学習。
MURA's HomePage : IPv6実践導入ガイド
1234:5678:9012:3456:7890:1234:5678:9012
前半16桁(緑)がサブネットプレフィックス、後半16桁(赤)がインターフェイスID。
前半16桁のうち、最初の12桁(緑太字)がグローバールルーティングプレフィックス、残りの4桁(緑普通)がサブネットID。
この形式で必要なだけIPv6のアドレスを作って持たせる=複数持たせる。
で、今回の設定。
- GUA(Global Unicast Address / 2000::/3)
RAに従ってServerを含む全てのホストが自動構成する。
加えて、プレフィックスはv6プラス契約では固定になるので、Serverのみ固定のIPアドレスを手で振ってみる(=インターネット上の唯一のGUAになりそう)。 - ULA(Unique Local Address / fc00::/7 ~ 計算ツールを使ってプレフィックスを生成)
Ubuntu Server を fdxx:xxxx:xxxx:xxxx::100/64 として、他の機器にはfdxx:xxxx:xxxx:xxxx::1:1~fdxx:xxxx:xxxx:xxxx::1:ffffをDHCPで振り出す。
LAN内はULAでやり取りする。 - LLA(Link-local Address / fe80::/10)
全てのホストが自動構成する。狙っていないのだができてしまうのが実態。
ULAのプレフィックスは以下のツールを使わせていただき計算した。
MAKCRAFT / Ipv6UniqueLocal
図にするとこんな感じ。
[ Internet ]
│
┌─┴─┐
│ ONU │
└─┬─┘
┌────┴────┐
│Router(1)新機種 │
│IPv6: 自動構成 │
└────┬────┘
┌─┴─┐ ┌──────┐
│ HUB ├──────────────────────┬─┤ WiFi Bridge├─┬─── ・・・
└─┬─┘ │ └──────┘ │
┌────┼──────────────────┐┌────┴────┐┌────┴────┐
│ │ VMware ESXi││Main PC ※2 ││Android Phone ※2 │
│ (Bridge) ││IP: 自動構成 ││IP: 自動構成 │
│ ├───────────┐ ││GW: 自動構成 ││GW: 自動構成 │
│┌───┴─────┐┌────┴─────┐││NS: fdxx::100 ││NS: fdxx::100 │
││Router(2) ││Server │││IP: 24xx~::xxx※1││IP: 24xx~::xxx※1│
││IP: 172.16.2.1/16 ││IP: 172.16.1.100/16 │││IP: fdxx~::1:2 ││IP: fdxx~::1:3 │
││GW: 172.16.2.1 ││GW: 172.16.2.1 │││IP: fe80~::xxx※3││IP: fe80~::xxx※3│
││PPPoE Connection ││NS: 172.16.2.1 ││└─────────┘└─────────┘
││ ││IP: 24xx~::xxx ││
││ ││IP: 24xx~::100 ※1 ││
││ ││IP: fdxx~::100 ││
││ ││IP: fe80::xxx ※3 ││ ※1: 24xx~::はRoute(1)が通知するプレフィックス
│└─────────┘└──────────┘│ ※2: Main PC や Android Phone は IPv4も構成
└───────────────────────┘ ※3: インターネットに向けたルーティングで必要
今回は宅内を完全なデュアルスタックにすることを目指す。
■ServerのIPv6を有効化
宅内でサービスを提供しているServerは IPv6 を無効化している。Ubuntu 12.04 の時代から。アップグレードを重ね現在は Ubuntu 16.04 になっているがそのままだった。
そこで、IPv6を有効にするために以下を行った。
/etc/sysctl.conf
#net.ipv6.conf.all.disable_ipv6 = 1
#net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.all.forwarding = 1
設定を有効化させる。
$ sudo sysctl -p
ファイアウォールもIPv6を無効化していた・・・
/etc/default/ufw
IPV6=yes ← 有効化
#IPV6=no ← コメント化
一旦、ufwを止めて再開
$ sudo ufw disable
$ sudo ufw enable
■ServerのIPv6アドレスを構成
IPv6のアドレスを設定しなきゃと探してみると…自動構成されるIPv6アドレスの他に、計画のIPv6アドレスを追加する方法はここにあった。Ubuntuのバージョンとかで違うところはテストして吸収。
How do I add an additional IPv6 address to /etc/network/interfaces?
/etc/network/interfaces
# interfaces(5) file used by ifup(8) and ifdown(8)
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 172.16.1.100
netmask 255.255.0.0
gateway 172.16.2.1
dns-domain hogeserver.hogeddns.jp
dns-nameservers 127.0.0.1
iface eth0 inet6 auto
post-up ip -6 addr add 24xx:xxxx:xxxx:xxxx::100/64 dev $IFACE ← delは書くとエラーがでる(実害なし)
post-up ip -6 addr add fdxx:xxxx:xxxx:xxxx::100/64 dev $IFACE
#iface eth0 inet6 static ← この書き方もできるけど、遅いし、エラーがでる(実害なし)
# address 24xx:xxxx:xxxx:xxxx::100/64
#iface eth0 inet6 static
# address fdxx:xxxx:xxxx:xxxx::100/64
# 2つ目
auto eth0:1
iface eth0:1 inet static
address 172.16.1.101
netmask 255.255.0.0
#gateway 172.16.2.1 ← これらも書くとエラーがでる。flushが必要になる。
#dns-nameservers 127.0.0.1
設定を反映させる。通常は1行目ので反映できるが、面倒なエラーが出たときとかには2行目でエラーの根源を整理しつつ反映させる。
$ sudo systemctl restart networking
$ sudo ifdown eth0 && sudo ip addr flush eth0 && sudo ifup eth0
IPv6アドレスと、ルーティング、DNSについて結果を確認。
$ ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff
inet 172.16.1.100/16 brd 172.16.255.255 scope global eth0
valid_lft forever preferred_lft forever
inet 172.16.1.101/16 brd 172.16.255.255 scope global secondary eth0:1
valid_lft forever preferred_lft forever
inet6 24xx:xxxx:xxxx:xxxx:nnnn:nnnn:nnnn:nnnn/64 scope global mngtmpaddr dynamic ※自動構成
valid_lft 13851sec preferred_lft 12051sec
inet6 fdxx:xxxx:xxxx:xxxx::100/64 scope global ※手動設定
valid_lft forever preferred_lft forever
inet6 24xx:xxxx:xxxx:xxxx::100/64 scope global ※手動設定
valid_lft forever preferred_lft forever
inet6 fe80::nnnn:nnnn:nnnn:nnnn/64 scope link ※自動構成
valid_lft forever preferred_lft forever
$ ip -6 route
24xx:xxxx:xxxx:xxxx::/64 dev eth0 proto kernel metric 256 pref medium
fdxx:xxxx:xxxx:xxxx::/64 dev eth0 proto kernel metric 256 pref medium
fe80::/64 dev eth0 proto kernel metric 256 pref medium
default via fe80::rout:er1x:rout:er1x dev eth0 proto ra metric 1024 expires 8494sec hoplimit 64 pref medium
$ cat /etc/resolv.conf
# This file is managed by man:systemd-resolved(8). Do not edit.
・・・
nameserver 127.0.0.53
search hogeserver.hogeddns.jp
※自動構成のアドレス部分はxxxxとnnnn、router1xでマスクしている。プレフィックスは固定なので隠したかったから。
SLAACによって?LLAが構成され、デフォルトルートとしてそれが設定されている。ルーターの設定画面では明示されていないが、ルーターのインターフェースアドレスと同一だった。
テスト。Ubuntuから外へ。
$ ping6 google.co.jp -I 24xx:xxxx:xxxx:xxxx::100
PING google.co.jp(aaaaaaaa.net) from 24xx:xxxx:xxxx:xxxx::100 : 56 data bytes
64 bytes from aaaaaaaa.net: icmp_seq=1 ttl=52 time=7.13 ms
…
Main PC(Windows10)からUbuntuへ。
>ping -6 24xx:xxxx:xxxx:xxxx::100
24xx:xxxx:xxxx:xxxx::100 に ping を送信しています 32 バイトのデータ:
24xx:xxxx:xxxx:xxxx::100 からの応答: 時間 <1ms
24xx:xxxx:xxxx:xxxx::100 からの応答: 時間 <1ms
24xx:xxxx:xxxx:xxxx::100 からの応答: 時間 =1ms
24xx:xxxx:xxxx:xxxx::100 からの応答: 時間 <1ms
24xx:xxxx:xxxx:xxxx::100 の ping 統計:
パケット数: 送信 = 4、受信 = 4、損失 = 0 (0% の損失)、
ラウンド トリップの概算時間 (ミリ秒):
最小 = 0ms、最大 = 1ms、平均 = 0ms
設定完了。
■ServerのIPv6ポートを開放
TeraTermを利用してIPv6で接続してみる。ufwでポート開放。
ufwはここに使い方が詳しく書かれている。今回はIPv6関連でヒットしたけど、行選択して削除する方法が具体的に書かれていたりしてとっても良かった。
DigitalOcean / How To Set Up a Firewall with UFW on Ubuntu 18.04
$ sudo ufw allow from any to 24xx:xxxx:xxxx:xxxx::100 port 22 proto tcp
$ sudo ufw status
状態: アクティブ
To Action From
-- ------ ----
…
24xx:xxxx:xxxx:xxxx::100 22/tcp ALLOW Anywhere (v6)
以下を見ながら、接続先として [24xx:xxxx:xxxx:xxxx::100] を入力して接続する。大括弧で囲むのが味噌。OK!
OSDN / Tera Term チケット #16003
気を良くしてWebサービスを開放してみる。
$ sudo ufw allow from any to 24xx:xxxx:xxxx:xxxx::100 port 443 proto tcp
以下を見ながら、接続先として https://[24xx:xxxx:xxxx:xxxx::100] を入力して接続する。どうやら、大括弧で囲むのがベーシックなやり方なんだなと理解。
iPentec / URLで IPv6 のIPアドレスを指定して接続する (Windows Tips)
まず、アクセスはできた。できたがWordpressでエラーが発生…でも、これはIPv4アドレスでアクセスしても同じ。ホスト名の設定ファイルしか作っていないのだ。
Neither /etc/wordpress/config-24xx.php nor /etc/wordpress/config-24xx.php could be found.
Ensure one of them exists, is readable by the webserver and contains the right password/username.
一時的に /etc/wordpress/config-hogeserver.hogeddns.jp.php のシンボリックリンクとして /etc/wordpress/config-24xx.php を作ってアクセスしてみたらWordpressは動作するようになった。
根本解決には、DNSサーバーでIPv6な名前解決ができればOKと見た。
■ServerのDNSでIPv6アドレスを返す
いままで、Serverで稼働している BIND9 はIPv6を気にしていなかった。実際にゾーンファイルを見ても、IPv6のエントリーはない。
BIND9のファイル構成はこんな感じ。
named.conf
├ named.conf.options
├ named.conf.default-zones ※基本設定で触る必要なしと見た。
│ ├ db.root ← zone "." root name server。ココの情報そのまま。ftp://ftp.rs.internic.net/domain/named.root
│ ├ db.local ← zone "localhost" ローカルゾーン。
│ ├ db.127 ← zone "127.in-addr.arpa" ループバックゾーン。
│ ├ db.0 ← zone "0.in-addr.arpa" ループバックゾーン。
│ └ db.255 ← zone "255.in-addr.arpa" ループバックゾーン。
└ named.conf.local
├ zones.hogeserver ← ゾーンファイルを設定
└ zones.rfc1918 ← named.conf.localでinclude文がコメント化されている
このあたりの情報を参考にしながら再学習。
@IT / 名前解決の仕組みとゾーンファイルの設定
/etc/bind/named.conf.options に以下を追記。これでIPv6の要求を受け付ける。
options {
directory "/var/cache/bind";
// あなたと話したいネームサーバーの間にファイアウォールがある場合は、
// 複数のポートが通信できるようにファイアウォールを修正する必要があります。
// http://www.kb.cert.org/vuls/id/800113 を参照してください。
// あなたのISPが安定したネームサーバのために1つ以上のIPアドレスを提供しているなら、
// あなたはおそらくそれらをフォワーダとして使いたいと思うでしょう。
// 次のブロックのコメントを外し、all-0のプレースホルダーを置き換えるアドレスを挿入します。
forwarders {
172.16.1.1; # to Router
};
//========================================================================
// BINDが期限切れのルート・キーに関するエラー・メッセージを記録した場合、
// 鍵を更新する必要があります。 https://www.isc.org/bind-keysを参照してください。
//========================================================================
dnssec-validation auto;
listen-on {
127.0.0.1;
172.16.1.100;
};
listen-on-v6 {
::1;
fdxx:xxxx:xxxx:xxxx::100;
};
auth-nxdomain no; # conform to RFC1035
};
逆引きゾーンを設定。
/etc/bind/zones.hogeserver に以下を追記。
//DynamicDNS対応
include "/etc/bind/rndc.key";
//正引き
zone "hogeserver.hogeddns.jp" {
type master;
file "/var/cache/bind/db.hogeserver.zone";
allow-update {
key "rndc-key";
};
};
//逆引き
zone "16.172.in-addr.arpa" {
type master;
file "/var/cache/bind/db.hogeserver.revz";
allow-update {
key "rndc-key";
};
};
//逆引きIPv6
zone "x.x.x.x.x.x.x.x.x.x.x.x.x.x.d.f.ip6.arpa" {
type master;
file "/var/cache/bind/db.hogeserver.revz.v6";
allow-update {
key "rndc-key";
};
};
※名前の付け方は以下を参照。
@it / IPv6対応DNSサーバの実現 (1/2)
作業日記 / jail マシンを IPv4 と IPv6 のデュアルスタックにする
UnixPower on Networking / https://www.unix-power.net/networking/centos6-bind-ipv6
/var/cache/bind/db.hogeserver.zone に以下を追記。
$ORIGIN .
$TTL 86400 ; 1 day
hogeserver.hogeddns.jp IN SOA dns.hogeserver.hogeddns.jp. (
2013183788 ; serial
3600 ; refresh (1 hour)
600 ; retry (10 minutes)
259200 ; expire (3 days)
86400 ; minimum (1 day)
)
NS 172.16.1.1.
NS 172.16.1.100.
A 172.16.1.100
AAAA 24xx:xxxx:xxxx:xxxx::100
MX 10 smtp.hogeserver.hogeddns.jp.
$ORIGIN hogeserver.hogeddns.jp.
hogeserver A 172.16.1.100
AAAA 24xx:xxxx:xxxx:xxxx::100
・・・
/var/cache/bind/db.hogeserver.revz.v6 を新規作成。
$TTL 86400 ; 1 day
@ IN SOA dns.hogeserver.hogeddns.jp. (
2018111111 ; serial
3600 ; refresh (1 hour)
600 ; retry (10 minutes)
259200 ; expire (3 days)
86400 ; minimum (1 day)
)
)
IN NS router.hogeserver.hogeddns.jp.
0.0.1.0.0.0.0.0.0.0.0.0.0.0.0.0 IN PTR hogeserver.hogeddns.jp.
0.0.1.0.0.0.0.0.0.0.0.0.0.0.0.0 IN PTR hogeserver.hogeserver.hogeddns.jp.
パーミッションを変更。
$ sudo chown bind:bind /var/cache/bind/db.hogeserver.revz.v6
設定を反映させる。
$ sudo systemctl reload bind9
Serverの53ポートを開ける。これで各ホストやRouter(1)からの名前解決の問い合わせに答えられる。
$ sudo ufw allow to any port 53 from any
正引きの確認。
$ dig -6 hogeserver.hogeddns.jp aaaa
; <<>> DiG 9.10.3-P4-Ubuntu <<>> -6 hogeserver.hogeddns.jp aaaa
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 7047
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;hogeserver.hogeddns.jp. IN AAAA
;; ANSWER SECTION:
hogeserver.hogeddns.jp. 86400 IN AAAA xxxx:xxxx:xxxx:xxxx::100
;; AUTHORITY SECTION:
hogeserver.hogeddns.jp. 86400 IN NS 172.16.1.100.
;; Query time: 0 msec
;; SERVER: ::1#53(::1)
;; WHEN: Sun Nov 18 22:40:47 JST 2018
;; MSG SIZE rcvd: 124
逆引きは以下で確認。
$ dig -x 24xx:xxxx:xxxx:xxxx::100
; <<>> DiG 9.10.3-P4-Ubuntu <<>> -x 24xx:xxxx:xxxx:xxxx::100
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 18436
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;0.0.1.0.0.0.0.0.0.0.0.0.0.0.0.0.x.x.x.x.x.x.x.x.x.x.x.x.x.x.4.2.ip6.arpa. IN PTR
;; ANSWER SECTION:
0.0.1.0.0.0.0.0.0.0.0.0.0.0.0.0.x.x.x.x.x.x.x.x.x.x.x.x.x.x.4.2.ip6.arpa. 86400 IN PTR hogeserver.hogeddns.jp.
;; AUTHORITY SECTION:
x.x.x.x.x.x.x.x.x.x.x.x.x.x.4.2.ip6.arpa. 86400 IN NS router.hogeserver.hogeddns.jp.
;; ADDITIONAL SECTION:
router.hogeserver.hogeddns.jp. 86400 IN A 172.16.1.100
;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Sun Nov 18 22:26:40 JST 2018
;; MSG SIZE rcvd: 165
ここまで設定ができると、他のホストでIPv6を優先するものは、Serverにアクセスする際にIPv6を利用するようになる。名前解決させるとIPv6のアドレスが返ってくるようになったから。Windows10からpingするだけでも結果がわかる。
ただし、これが成立するのはIPv6アドレスよりもIPv4アドレスのほうが先にLink upした場合だけだった。稀に逆になる場合もあって、この場合には外にあるDNSへ問い合わせに行ってしまう。※再起動してみたら、そんな事になったからわかった。
対策は、Router(1)の設定。
RT-500KI → 詳細設定 → DNS設定 → ローカルドメイン問合せテーブル に以下の情報を入力。
ドメイン名: hogeserver.hogeddns.jp
プライマリDNSサーバアドレス: 24xx:xxxx:xxxx:xxxx::100
セカンダリDNSサーバアドレス: 無指定
これでIPv6のDNSが優先されても、IPv6しかない端末からでもRouter(1)がServerにアドレスを聞いてくれるようになり、内向きDNSで名前解決ができるようになった。