Windows Server 2008R2 でNIC1枚にIPアドレスを追加するとプライマリアドレスが一番小さいアドレスになる
Windows Server 2008R2にNICが1枚あって、これにIPアドレスを固定で設定していました。
ここにIPアドレスを追加したところ、プライマリIPアドレスが追加したアドレスになってしまうという現象に気づきました。
例えば、固定IPアドレスを 172.16.1.50 に設定したとします。
これに「詳細設定」で172.16.1.40のアドレスを追加します。
そうすると、NICのプライマリIPアドレスは172.16.1.40になってしまうんですよ。
追加したアドレスが172.16.1.51なら、プライマリIPアドレスは172.16.1.50のままです。
つまり追加したIPアドレスがプライマリになるわけではなく、小さい方がプライマリIPアドレスになるという事のようです。
「仕様です」と言われたら、それまでなんですけど…何だよそれ。
Windows Server 2003まではそんな現象はなかったのですが、どうもWindows Server 2008からの挙動のようです。
海外のサイトで調べたら、解決方法が見つかりました。
「skipassource」フラグを使えばいい。
KB2386184というHotFixを見つけたのですが、更新されるファイルが2009年ということは、たぶんSPが当たってない状態だと思われます。
SP1が当たっていれば、このHotFixはいらない…はず、たぶん。
と思って、HotFixを適用せずにこのコマンドを実行。
netsh int ipv4 add address <接続名> <追加するIPアドレス> <追加するIPアドレスサブネットマスク> skipassource=true
このコマンドを打ち込む前に、追加するIPアドレスは削除しておきます。
接続名は "ローカル エリア接続" か "ローカル エリア接続2" になっている場合が多いと思います。
追加するIPアドレスとサブネットマスクは、上の例だと 172.16.1.40 255.255.255.0です。
で、このコマンドを打ち込みます。
netsh int ipv4 add address "ローカル エリア接続" 172.16.1.40 255.255.255.0 skipassource=true
結果は
netsh int ipv4 show ipaddresses level=verbose
で確認できます。
追加したIPアドレスの”ソースとしてスキップ”がtrueになっているはずです。
netstat でも確認してみて下さい。
このコマンドで設定されたIPアドレスを”編集”画面で開いて保存すると、元に戻ってしまいます。
これも KB2554859 でHotFixが出ていました。
サブネットマスクを指定せずに実行すると、255.255.0.0 になってしまうので注意して下さい。(最初やってしまって、焦りました。)
この情報、日本語で検索しても”これ”っていう結果がでてきませんでした。
英語で検索すると結果が結構な数でてくるので、やっぱり困っている人はそれなりにいるようです。
という話を妻にしたら、「へ~~~ 英語読めるんだ~~ スゴイネ~~~~」とコメントされました。
いや、読めるだろ普通。