Help us understand the problem. What is going on with this article?

Windows 10 Creators Update のRDNSS (RFC6106) クライアント機能

More than 3 years have passed since last update.

サマリ

Windows 10 ビルド 15063 (Creators Update) に、RFC6106 RDNSS, DNSSL のクライアント機能が載っていた。MicrosoftがAPNIC blogにポストした記事で Windows10のDHCPv6, RAでのIPv6アドレスおよびDNS設定まわりの動作[1]の状況を解説していたが、実装が出てきたものと思われる。なお、RFC6106はすでにobsolutedで、最新仕様はRFC8106。[2]に差分が解説されている。

やってみた

環境

  • ルータ: Ubuntu 16.04 + radvd
  • ノード: Windows 10 Pro ビルド 15063 (Creators Update)

IPv6 only (DHCPv4サーバなし) でRA+prefix information optionで/64のprefixを1つ広告しつつ、DNSサーバ(3つ)、サフィックスリスト(2つ)を配布。

+-----------------+                          +-------------------+
|                 |ens33            Ethernet0|                   |
|  Ubuntu 16.04   *--------------------------* Windows 10 (15063)|
|    (ルータ)      |    2001:db8:0:1::/64     |     (ノード)        |
+-----------------+                          +-------------------+
                  RA ---> 
                   +PIO 2001:db8:0:1::/64
                   +RDNSS 2001:db8::53:{1,2,3} (3つ)
                   +DNSSL example.com example.jp (2つ)

ルータ側の設定

# /etc/radvd.conf

interface ens33
{
        AdvSendAdvert on;
        prefix 2001:db8:0:1::/64
        {
                AdvOnLink on;
                AdvAutonomous on;
        };

        RDNSS 2001:db8::53:1 2001:db8::53:2 2001:db8::53:3 {
                # AdvRDNSSLifetime infinity
                #                  Default: 2*MaxRtrAdvInterval

                # FlushRDNSS on|off
                #            Default: on
        };

        DNSSL example.com example.jp {
                # AdvRDNSSLifetime infinity
                #                  Default: 2*MaxRtrAdvInterval

                # FlushRDNSS on|off
                #            Default: on
        };
};

ノード側の Windows 10 の動き

netshで確認できるインターフェイスの設定項目に

RA ベースの DNS 構成 (RFC 6106)     : enabled
DHCP/静的 IP の共存                : enabled

2つの設定項目が増えており、RFC6106はデフォルトでONになっていた。

PS C:\> netsh int ipv6 show interfaces interface=Ethernet0 level=verbose

インターフェイス Ethernet0 パラメーター
----------------------------------------------
IfLuid                             : ethernet_32769
IfIndex                            : 5
状態                               : connected
メトリック                         : 25
リンク MTU                         : 1500 バイト
到達可能な時間                     : 24500 ミリ秒
基本の到達可能な時間               : 30000 ミリ秒
再転送間隔                         : 1000 ミリ秒
DAD 転送                           : 1
サイト プレフィックスの長さ        : 64
サイト ID                          : 1
転送                               : disabled
アドバタイズ                       : disabled
近隣探索                           : enabled
近隣到達不可能性検出               : enabled
ルーター発見                       : enabled
管理されたアドレス構成             : disabled
その他のステートフル構成           : disabled
脆弱なホストによる送信             : disabled
脆弱なホストによる受信             : disabled
自動メトリックの使用               : enabled
既定ルートを無視                   : disabled
アドバタイズされたルーターの有効期間: 1800 秒
既定ルートのアドバタイズ           : disabled
現在のホップ制限                   : 64
ARPND スリープ解除パターンの強制   : disabled
指定の MAC スリープ解除パターン    : disabled
ECN 機能                           : application
RA ベースの DNS 構成 (RFC 6106)    : enabled
DHCP/静的 IP の共存         : enabled

RDNSS, DNSSL 入りRAを受信する

状態確認のコマンドをそれぞれ動かしてみる。

  • ipconfig /all
  • netsh int ipv6 show dnsservers
  • Get-DnsClient (PowerShellのコマンドレット)
  • Get-DnsClientServerAddress (PowerShellのコマンドレット)
PS C:\> ipconfig /all

Windows IP 構成

   ホスト名. . . . . . . . . . . . . . .: TESTENV
   プライマリ DNS サフィックス . . . . .: TESTENV.JP
   ノード タイプ . . . . . . . . . . . .: ハイブリッド
   IP ルーティング有効 . . . . . . . . .: いいえ
   WINS プロキシ有効 . . . . . . . . . .: いいえ
   DNS サフィックス検索一覧. . . . . . .: TESTENV.JP
                                          example.com
                                          example.jp

イーサネット アダプター Ethernet0:

   接続固有の DNS サフィックス . . . . .: example.com
   説明. . . . . . . . . . . . . . . . .: Intel(R) 82574L Gigabit Network Connection
   物理アドレス. . . . . . . . . . . . .: 00-0C-29-80-6D-5A
   DHCP 有効 . . . . . . . . . . . . . .: はい
   自動構成有効. . . . . . . . . . . . .: はい
   IPv6 アドレス . . . . . . . . . . . .: 2001:db8:0:1:a4bf:fbd5:49c6:33e8(優先)
   一時 IPv6 アドレス. . . . . . . . . .: 2001:db8:0:1:7d8d:b0c9:2421:a5a4(優先)
   リンクローカル IPv6 アドレス. . . . .: fe80::a4bf:fbd5:49c6:33e8%5(優先)
   自動構成 IPv4 アドレス. . . . . . . .: 169.254.51.232(優先)
   サブネット マスク . . . . . . . . . .: 255.255.0.0
   デフォルト ゲートウェイ . . . . . . .: fe80::20c:29ff:fe0d:8de%5
   DHCPv6 IAID . . . . . . . . . . . . .: 33557545
   DHCPv6 クライアント DUID. . . . . . .: 00-01-00-01-1D-A0-E0-6A-00-0C-29-80-6D-5A
   DNS サーバー. . . . . . . . . . . . .: 2001:db8::53:1
                                          2001:db8::53:2
                                          2001:db8::53:3
   NetBIOS over TCP/IP . . . . . . . . .: 有効
   接続固有の DNS サフィックス検索の一覧:
                                          example.com
                                          example.jp
PS C:\> netsh int ipv6 show dnsservers

インターフェイスの構成 "Ethernet0"
    DHCP で構成された DNS サーバー:  2001:db8::53:1
                                          2001:db8::53:2
                                          2001:db8::53:3
    次のサフィックスで登録します:           プライマリのみ
PS C:\> Get-DnsClient

InterfaceAlias               Interface ConnectionSpecificSuffix ConnectionSpecificSuffix RegisterThisConn UseSuffixWhen
                             Index                              SearchList               ectionsAddress   Registering
--------------               --------- ------------------------ ------------------------ ---------------- -------------
Ethernet0                            5 example.com              {example.com, example... True             False
PS C:\> Get-DnsClientServerAddress

InterfaceAlias               Interface Address ServerAddresses
                             Index     Family
--------------               --------- ------- ---------------
Ethernet0                            5 IPv4    {}
Ethernet0                            5 IPv6    {2001:db8::53:1, 2001:db8::53:2, 2001:db8::53:3}
Bluetooth ネットワーク接続          14 IPv4    {}
Bluetooth ネットワーク接続          14 IPv6    {fec0:0:0:ffff::1, fec0:0:0:ffff::2, fec0:0:0:ffff::3}
Loopback Pseudo-Interface 1          1 IPv4    {}
Loopback Pseudo-Interface 1          1 IPv6    {fec0:0:0:ffff::1, fec0:0:0:ffff::2, fec0:0:0:ffff::3}

アダプタ設定で値をセットする際のパラメータ

Creators Update で増えていたのは2つ

取りうる設定値はenabled, disabledの2値
     [[rabaseddnsconfig=]enabled|disabled]
     [[dhcpstaticipcoexistence=]enabled|disabled]

rabaseddnsconfig - RA ベースの DNS 構成 (RFC 6106) が有効になっているか
                      どうかを示します。
dhcpstaticipcoexistence - DHCP と静的 IP の共存が有効になっているかどうかを示します。
PS C:\> netsh int ipv6 set interface help

使用法: set interface [interface=]<文字列> [[forwarding=]enabled|disabled]
     [[advertise=]enabled|disabled] [[mtu=]<整数>]
     [[siteprefixlength=]<整数>]
     [[nud=]enabled|disabled] [[basereachabletime=]<整数>]
     [[retransmittime=]<整数>] [[dadtransmits=]<整数>]
     [[routerdiscovery=]enabled|disabled|dhcp]
     [[managedaddress=]enabled|disabled]
     [[otherstateful=]enabled|disabled]
     [[weakhostsend=]enabled|disabled]
     [[weakhostreceive=]enabled|disabled]
     [[ignoredefaultroutes=]enabled|disabled]
     [[advertisedrouterlifetime=]<0-65535>]
     [[advertisedefaultroute=]enabled|disabled]
     [[currenthoplimit=]<0-255>] [[store=]active|persistent]
     [[forcearpndwolpattern=]enabled|disabled]
     [[enabledirectedmacwolpattern=]enabled|disabled]
     [[ecncapability=]ecndisabled|ect1|ect0|application]
     [[rabaseddnsconfig=]enabled|disabled]
     [[dhcpstaticipcoexistence=]enabled|disabled]

パラメーター:

   タグ                値
   interface        - インターフェイス名またはインデックスです。
   forwarding       - このインターフェイスに届いたパケットを他の
                      インターフェイスに転送できるかどうかを示します。
   advertise        - ルーター アドバタイズがこのインターフェイスに送信
                      されるかどうかを示します。既定は disabled です。
   mtu              - このインターフェイスの MTU です。
                      既定はリンクのナチュラル MTU です。
   metric           - インターフェイス上のすべてのルート用にルート
                      メトリックに追加された、インターフェイス
                      メトリックです。
   siteprefixlength - サイトのグローバル プレフィックスの既定の長さです。
   nud              - 近隣の到達不可能性検出が有効かどうかを示します。
                      インターフェイスの種類により既定値は異なります。
   basereachable    - 基本の到達可能時間です (ms)。
   retransmittime   - 再転送時間です (ms)。
   dadtransmits     - 重複アドレス検出の転送数です。
   routerdiscovery  - 有効、無効、または DHCP による制御に設定できます。
   managedaddress   - 管理されたアドレス構成が有効かどうかを示します。
                      このパラメーターを設定しても、ルーター発見が有効
                      でアドバタイズが無効なインターフェイスには影響は
                      ありません。この場合、パラメーターはルーター発見
                      により制御されます。
   otherstateful    - その他のステートフルな構成が有効かどうかを示し
                      ます。このパラメーターを設定しても、ルーター発見
                      が有効でアドバタイズが無効なインターフェイスには
                      影響はありません。その場合、パラメーターは
                      ルーター発見により制御されます。
   weakhostsend     - 脆弱なホストの送信が有効かどうかを示します。
   weakhostreceive  - 脆弱なホストの受信が有効かどうかを示します。
   ignoredefaultroutes- インターフェイス上の既定ルートを無視します。
                      既定値: Disabled
   advertisedrouterlifetime- ルーターの有効期間です (秒単位)。
                      既定値は 1800 です。
   advertisedefaultroute- インターフェイスが既定ルーターとしてアドバタイズ
                      されるかどうかを示します。
   currenthoplimit  - 送信トラフィックのホップ制限です。
   store            - active: 設定は次の起動時までしか適用されません。
                      persistent: 設定は固定されます。
   forcearpndwolpattern- アドレス解決と近隣探索のパケット パターンが
                      コンピューターのスリープを解除するように
                      構成されているかどうかを示します。
   enabledirectedmacwolpattern - 指定の MAC パケット パターンが
                      コンピューターのスリープを解除するように
                      構成されているかどうかを示します。
   ecncapability    - 発信パケットが ECN でマークされるかどうかを示します。
   rabaseddnsconfig - RA ベースの DNS 構成 (RFC 6106) が有効になっているか
                      どうかを示します。
   dhcpstaticipcoexistence - DHCP と静的 IP の共存が有効になっているかどうかを示します。

注釈: インターフェイス構成パラメーターを変更します。

例:

       set interface "1" metric=2 forwarding=enabled store=active

参考文献

[1] IPv6-only at Microsoft, APNIC blog, 2017.01.19,
https://blog.apnic.net/2017/01/19/ipv6-only-at-microsoft/
[2] RFC 8106によってRFC 6106が廃止に, Geekなページ, 2017.03.21, http://www.geekpage.jp/blog/?id=2017-3-21-1

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした