しばらく返答が寄せられていないようです。 再度ディスカッションを開始するには、新たに質問してください。

DNSルックアップでAAAAレコードを優先させる方法

現在IPv4グローバルアドレスに6to4インターフェイスでIPv6サイトにアクセス可能な状態です。

例えば、www.kddi.comのIPv6アドレスは以下のとおりなので、


;; QUESTION SECTION:

;www.kddi.com. IN AAAA


;; ANSWER SECTION:

www.kddi.com. 32598 IN AAAA 2001:268:fd01::1

www.kddi.com. 32598 IN AAAA 2001:268:fd02::1


Firefoxで http://[2001:268:fd01::1]/ にアクセスすると、画面上部に表示されるアイコンからIPv6で接続されていることが確認できます。

この状況で、http://www.kddi.com/ にアクセスすると、IPv4でアクセスしている表示に変わってしまいます。


原因として、Mac OSがDNSルックアップでAAAAレコードよりもAレコードを優先し、FirefoxがAレコードにアクセスしているためではないかと推測しています。


そこで、Mac OSにおいてDNSルックアップでAAAAレコードを優先させる方法がないかと思い、こちらに質問させてもらいました。

何か情報をお持ちの方いらっしゃいましたら教えていただけないでしょうか。


以上

MacBook Air, Mac OS X (10.6.4)

投稿日 2011/06/03 02:25

返信
返信: 11

2011/06/03 20:19 はに への返信

モバイルにてインターネット接続していますが、ISPからはIPv4しか払い出されないため、IPv4を停止することができません。6to4でIPv4アドレスが必要にもなります。


Mac OS XのUnix設定ファイル調整で何とかなりそうな気がするのですが、具体的なポイントがわかりません。

2011/06/03 21:05 yanagibayashi への返信

> ISPからはIPv4しか払い出されないため、


ということなら、ISPのDNSそのものがIPV6をサポートしてないのでは?

DNSはIPV6サポートのものを設定されているでしょうか。

しかし、IPV4 でも同じところに繋がるのなら、IPV6を優先したい理由は何でしょうか?

2011/06/03 21:45 はに への返信

ISPのDNSは以下のとおり、IPv6対応しているようです。


$ dig -x 210.130.1.1


; <<>> DiG 9.6.0-APPLE-P2 <<>> -x 210.130.1.1

;; global options: +cmd

;; Got answer:

;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 39301

;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 4


;; QUESTION SECTION:

;1.1.130.210.in-addr.arpa. IN PTR


;; ANSWER SECTION:

1.1.130.210.in-addr.arpa. 6776 IN PTR ns11.iij4u.or.jp.


;; AUTHORITY SECTION:

1.130.210.in-addr.arpa. 6776 IN NS dns1.iij.ad.jp.

1.130.210.in-addr.arpa. 6776 IN NS dns0.iij.ad.jp.


;; ADDITIONAL SECTION:

dns0.iij.ad.jp. 50011 IN A 210.138.174.16

dns0.iij.ad.jp. 51361 IN AAAA 2001:240:bb41:8002::1:16

dns1.iij.ad.jp. 50216 IN A 210.138.175.5

dns1.iij.ad.jp. 51313 IN AAAA 2001:240:bb4c:8000::1:5


;; Query time: 788 msec

;; SERVER: 210.130.1.1#53(210.130.1.1)

;; WHEN: Fri Jun 3 21:15:08 2011

;; MSG SIZE rcvd: 205


AAAAレコードクエリも以下のとおり成功しています。


$ dig www.kddi.com aaaa


; <<>> DiG 9.6.0-APPLE-P2 <<>> www.kddi.com aaaa

;; global options: +cmd

;; Got answer:

;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 9116

;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 2, ADDITIONAL: 2


;; QUESTION SECTION:

;www.kddi.com. IN AAAA


;; ANSWER SECTION:

www.kddi.com. 51437 IN AAAA 2001:268:fd01::1

www.kddi.com. 51437 IN AAAA 2001:268:fd02::1


;; AUTHORITY SECTION:

kddi.com. 49993 IN NS antares.kddi.com.

kddi.com. 49993 IN NS venus.kddi.com.


;; ADDITIONAL SECTION:

venus.kddi.com. 70723 IN A 211.4.169.2

antares.kddi.com. 64989 IN A 210.141.112.36


;; Query time: 408 msec

;; SERVER: 210.130.1.1#53(210.130.1.1)

;; WHEN: Fri Jun 3 21:15:03 2011

;; MSG SIZE rcvd: 160


業務上、特定のサーバにIPv6接続したいもので。FQDNで。

現状は、MacのhostsファイルにIPv6アドレスとFQDNを登録し、FQDNによるIPv6通信はできています。

hostsファイルにたよらず、6to4環境でIPv6通信を行うようにしたいと考えています。


6to4接続の場合、現状以下のようになっていると思います。

1. IPv4通信でISPのDNSに接続

2. Aレコード問い合わせ(ググったところ、Windows Vista,Windows 7 RC,FreeBSD,Mac OS XはAクエリを先に実施するようである)

3. Aレコード結果のIPv4アドレスに接続


これを以下のように変更したいのですが、Mac OS Xのシステムパラメータ等を変更して実現する方法をご存じでしょうか。

1. IPv4通信でISPのDNSに接続

2. AAAAレコード問い合わせ(デフォルトであるAクエリ優先から、AAAAクエリ優先に変更する)

3. AAAAレコードがない場合、Aレコード問い合わせ

4. AAAAレコードの結果が得られている場合、そのIPv6アドレスに6to4で接続

5. AAAAレコードの結果が得られなかった場合、Aレコード結果のIPv4接続を試みる

2011/06/05 02:02 yanagibayashi への返信

> これを以下のように変更したいのですが、Mac OS Xのシステムパラメータ等を変更して実現する方法をご存じでしょうか。


Don’t forget to flush DNS cache when testing IPv6

によれば、DNSクエリの問題ではなくて、IPv4アドレスがキャッシュされてるから、ということです。

そこで、ターミナルで以下のコマンドを実行してキャッシュを消しておけばよいようです。

sudo dscacheutil -flushcache


しかし、以下の記事によれば、OSXのipv6の実装は、プライバシー上問題がある(あなたのネットでのすべての行動が第3者にトラック出来てしまう。広告会社がすぐにでもやりそうなことです)、ということです。

MacユーザはIPv6を切るかnet.inet6.ip6.use_tempaddr=1の設定を


以下のようにして、一時アドレスを使うようにする方がよい、ということです。

sudo sysctl -w net.inet6.ip6.use_tempaddr=1

2011/06/05 14:18 yanagibayashi への返信

自分(mbp late2008、10.6.7)もTeredo for MacOSXをインストールして、6to4の環境にしてみました。

今のところ、ipv6サイトへのアクセスは問題ありません。

$ dscacheutil -q host -a name www.kddi.com

name: www.kddi.com

ipv6_address: 2001:268:fd01::1

ipv6_address: 2001:268:fd02::1



name: www.kddi.com

ip_address: 61.200.220.160


と出ます(このコマンドは、DNSキャッシュを見るものです)が、http://www.kddi.com にアクセスすると、ipv6経由となってます。

http://www.kame.net にアクセスすれば、カメ踊りが見られます。ipv6.2ch.net にアクセスすれば、ヒロユキ踊りも見られます。

まだこの環境にして数時間ですけど、safari でもfirefoxでも ipv4 になるなどの問題は一度も出ません。

無線LANで接続してますが、airmac の ipv6 はオフです。

2011/06/05 20:26 はに への返信

> まだこの環境にして数時間ですけど、safari でもfirefoxでも ipv4 になるなどの問題は一度も出ません。


2−3時間スリープさせたあとでwww.kame.net にアクセスすると、ipv4でアクセスしてました。しかし、

ping6 www.kame.net

として、ipv6で強制的に疎通テストしてから、アクセスすれば、またipv6でアクセスできました。

別ページに記事によれば、ipv4とipv6のDNSデータのttl(データの有効な時間)は、ほとんどの場合、ipv6の方が短く設定されているため、ipv6のdnsの方が最初に無効になることが多いということです。すると、しばらくは、ipv4のdnsのみが有効な状態になり易いということです。こういう状態では、ipv4では名前解決が出来るので、ipv6が使えなくなり易いということです。このため、ping6などで、強制的にipv6を使うようにすれば、また、ipv6のdnsが更新されて使えるようになるということです。

www.kame.net のipv6にアクセスできなくなっても、www.kddi.com は、やはり、ipv6でアクセスしてました。

自分が試している限りでは、Teredo for MacOSXは、ipv4環境で安定してipv6を使えるように思います。

yanagibayashiさんは、どのような方法で6to4環境を構築されているのでしょう?


それから、google chrome でも同じでした。

2011/06/06 19:22 はに への返信

私は以下の方法で6to4を実現しています。


システム環境>ネットワークで、"6 → 4"インターフェイスを追加

追加された"6 → 4"インターフェイスの構成で、自動を選択


これで、自分のglobal IPv4アドレスが6to4のglobal IPv6にマッピングされ、インターネット上の唯一無二のIPv6アドレスで通信可能となります。前提として、TimeCapsuleなどのルータを介さず、Mac自身でISPにPPP接続しglobalなIPv4を取得しておく必要があります。


この方法で接続している場合、外部と通信するIPv6アドレスに自分のMACアドレスは使用されないため、以下を実施して自分のMACアドレスを隠す必要はありません。

# sysctl -w net.inet6.ip6.use_tempaddr=1


6to4のglobal IPv6アドレスにはその時使用しているglobal IPv4アドレスが含まれますが、元々global IPv4アドレスは外部に知れ渡るものなので、この点はIPv4でも6to4 IPv6アドレスでも同じ条件になります。



前述の接続環境にて教えていただいた以下を実行しても、AAAAレコードのIPv6へアクセスしていませんでした。

# cacheutil -flushcache


以下のコマンドを実行したところ、AAAA QueriesがDisabledとなっています。はにさんの環境ではいかがでしょうか。Teredoの場合、6to4インターフェイスの構成方法も、Mac標準の場合とは変わるのですかね。

# dscacheutil -configuration

DirectoryService Cache search policy:

/Local/Default

/BSD/local


Settings:

AAAA Queries - Disabled (link-local IPv6 addresses)

Default TTL - 3600

Policy Flags - 0


Appleサポートコミュニティに投稿する前にかなりググったのですが、はにさんから教えていただいたサイトを見つけられませんでした。これらのサイトを含めもう少しググったりしてみます。

2011/06/06 22:21 yanagibayashi への返信

> 以下のコマンドを実行したところ、AAAA QueriesがDisabledとなっています。


うちでも、AAAA Queries はDisableになってます。

それでも、dig xxxx AAAA とすればipv6アドレスが返りますし、ping6では正常に応答が返ります。


$ ping6 www.kddi.com

PING6(56=40+8+8 bytes) 2001::53aa:64c:0:73e9:495b:497d --> 2001:268:fd01::1

16 bytes from 2001:268:fd01::1, icmp_seq=0 hlim=250 time=735.555 ms

16 bytes from 2001:268:fd01::1, icmp_seq=1 hlim=250 time=43.009 ms

16 bytes from 2001:268:fd01::1, icmp_seq=2 hlim=250 time=35.474 ms


ping6 で応答が返れば、ブラウザで(www.kddi.com と名前で)アクセスしても、ipv6経由になります。

なので、AAAA Queriesは、ipv6をnativeで使うようにしてないと(物理インターフェースに直接ipv6アドレスを接続)、enableにならないのかな、と思ってます。


ネットワークの設定で、6to4を設定すると、おっしゃるように直接グローバルアドレスが必要(しかもイーサネットインターフェースのみ?)ですので、Teredoの方がお手軽です。Teredo なら、ルータの内側でも、イーサネット接続であろうが、無線LAN接続であろうが問題ありません(多分。今まで小生が試したのは無線LAN接続のみです)。


> この方法で接続している場合、外部と通信するIPv6アドレスに自分のMACアドレスは使用されないため、


Teredo の場合も、実際に使われるのはトンネルインターフェースですので、物理インターフェースのMACアドレスが使われるわけではありません。しかし、一時アドレスをオフにしていると、このMACアドレスに相当する部分に同じアドレスが使われ、誰もが見られるところで常に同じアドレスが使われてしまい、個人トラッキングされてしまう恐れがあるのではないでしょうか。

なお、/etc/sysctl.conf (defaultではないので作る)に net.inet6.ip6.use_tempaddr=1 と書いておけば、起動後いちいちコマンドで設定しなくても、常時一時アドレスを使うようになります。

2011/06/08 19:13 はに への返信

>なので、AAAA Queriesは、ipv6をnativeで使うようにしてないと(物理インターフェースに直接ipv6アドレスを接続)、enableにならないのかな、と思ってます。


私もそのとおりだと思います。試していませんが…


>ネットワークの設定で、6to4を設定すると、おっしゃるように直接グローバルアドレスが必要(しかもイーサネットインターフェースのみ?)ですので、 Teredoの方がお手軽です。Teredo なら、ルータの内側でも、イーサネット接続であろうが、無線LAN接続であろうが問題ありません(多分。今まで小生が試したのは無線LAN接続のみです)。


Teredoは別途試してみたいと思います。


私がやりたかったことを米国AppleのMLに投稿してみたところ、Mac OS 10.6.7の標準機能では実現できないことがわかりました。

http://lists.apple.com/archives/ipv6-dev/2011/Jun/msg00000.html


http://lists.apple.com/archives/ipv6-dev/2011/Jun/msg00006.html

にあるように、10.6.4以前にダウングレードすれば、AAAA優先だった状態に戻るようです。


ダウングレードは非現実的なので、はにさんに試していただいたTeredoが最善の解決策と思われます。

DNSルックアップでAAAAレコードを優先させる方法

Apple サポートコミュニティへようこそ
Apple ユーザ同士でお使いの製品について助け合うフォーラムです。Apple ID を使ってご参加ください。