Windows7のDNS resolverの挙動について

前置き

そんなこんなでWindows7 64bitでいろいろとDNS resolver関係の挙動について調査中。まず、基本的な項目として、Windows7DNS resolverは

  • すべての物理的なネットワークIFにIPv4しか振られていないときは、AAAAレコードの問い合わせを抑制する
    • トンネルIFについては未検証
    • そもそもトンネルIFはインストール完了後に全部オフにするのがよいかと

といった挙動をとるため、WindowsXPの時のように、「AAAAタイムアウト > A再問合わせ」といったことがなくなっています。このような仕様の変更はVISTAから行われています。

検証

そこで、以下のような条件の時にAAAAを問い合わせるかをいろいろと探ってみました。また、条調査を行う時に使った環境は以下の通りです。

検証PC

  • Windows7 64bit Enterprise
  • ネットワークInterface2個
    • それぞれeth1、eth2とする
    • eth2はPacketixVPN仮想LANカード

ネットワーク要件

  • IPv4
    • DHCPDNSサーバのアドレスを告知
  • IPv6
    • RA(oFlag = 1)、ステートレスDHCPv6にてDNSサーバのアドレスを告知

検証項目

  1. eth1にIPv4+IPv6を同時に設定する(Dualstack)
    • DNSサーバ
    • IPv6がネットワークに対してDeployされている場合
  2. eth1にIPv4、eth2にIPv4+IPv6 を同時に設定する(Dualstack)
    • DNSサーバ
    • eth1のネットワークを使ってDualstackなネットワークにVPN接続
  3. eth1にIPv4、eth2にIPv6を設定する
    • DNSサーバ
    • eth1のネットワークを使ってIPv6のみのネットワークにVPN接続

検証結果

適当なPCでいろいろと試してみましたがまずは結果から。

検証項目 AAAAを問い合わせるか どのDNSサーバに優先的に問い合わせるか
1 eth1 IPv4
2 eth2 IPv4
3 eth1 IPv4 or eth2 IPv6

今回、項目3の検証において、eth1のIPv4DNSサーバに問い合わせる場合と、eth2のIPv6DNSサーバに問い合わせる場合の2パターンが、eth1を接続するネットワーク構成を変えた時に観測されました。これについては今後の追加調査項目ということにでもしておきます。

Remote SuperVisor Adapter II のパスワードリセット

RSAIIのパスワードリセットですが、BIOSからできるものとできないものがあります。
今回RSAIIをヤフオクなどで入手してきたのですが、x335に搭載したときはBIOSでパスワードリセットできませんでした。

というわけで、RSAIIのパスワードリセット方法をメモ。

IBM 拡張設定ユーティリティー (ASU) v3.01

というわけで、RSAIIのパスワードをリセットするためにはASUを用います。このASUですが、どういうものかを簡単に説明すると、IBMのサーバの環境設定(OSではなくハードウェアの設定)を行うツールでRSAをはじめMMIなどいろいろ設定できるようです。

なので今回はこれを使います。

まずはダウンロード。ツールは以下のURLにおいてあります。

http://www-06.ibm.com/jp/domino05/pc/download/download.nsf/jtechinfo/MIGR-55021

どのOSから行うかによってダウンロードするファイルは変わりますが、今回はWindowsから行いました。ちなみにDOSから行うと、DeviceDriverがないためDOSからRSAIIを認識できないので初期化できません。Windows側であらかじめRSAIIのDeviceDriverをインストールしておく必要があります。

RSAIIが認識されている段階で、先ほどのツールをダウンロードしてきます。使うものは中に入っている「asu.exe」になります。適当なディレクトリに回答したらコマンドプロンプト

# asu resetrsa

を実行すれば、しばらくすると初期化が完了。


//この方法が意外と変なドキュメントにしかなく探すのが大変でした。

IBM BladeCenter E での電源モジュール構成

今まで2000W電源2発@PowerDomain1で運用していたBladeCenterですが、ちょうどヤフオクで1800W電源2発を調達できたので増設することに。

IBM BladeCenterではPowerDomainという概念が導入されていて、以下のようにモジュールへ電力を供給しています。(IBM BladeCenter Eの場合)

  • PowerDomain 1
    • 電源モジュール
      • 1,2
    • 電力を供給する対象
      • SMM1,SMM2,Blade1-7,IOModule1-4
  • PowerDomain 2
    • 電源モジュール
      • 3,4
    • 電力を供給する対象
      • Blade8-14

ここで重要なのは、PowerDomain内の電源モジュールは同容量の電力を供給しなければならない点です。つまりPowerDomain1を2000W電源+1800W電源では構成できません。異なるPowerDomainの電源容量は別でも問題ないようです。なので、

  • PowerDomain 1
    • 2000W電源 * 2
  • PowerDomain 2
    • 1800W電源 * 2

といった構成は可能です。

またPowerDomain内でのFailOverPolicyの設定は以下のような意味になっていました。

Redundant with Potential performance impact-
電源容量が不足した場合でも、BladeCenterを稼動し続けることが可能です。
BladeHS20(88843)/LS20(8850)は1つの電源が故障した場合、電力保護モードに切り替えてサーバーの稼動を可能にします。
電力保護モードを使うことにより、故障により電源が1つになっても、搭載されているサーバーに電源投入を許可します。

Redundant without performance impact-
パフォーマンスの低下が許されない環境において選択するモードです。
1つの電源が故障した場合、フルパフォーマンスで稼動することを保証できるサーバーだけに、電源投入を許可します。

Non- redundant mode(デフォルト設定)-
ブレードサーバーの消費電力を下げ、それでも電力が不足する場合は、シャーシが十分な電力を供給できる状態になるまで、いくつかのブレードを停止させます。

http://www-06.ibm.com/jp/domino04/pc/support/Sylphd07.nsf/jtechinfo/SYJ0-0395D66

MouseEvent.DOUBLE_CLICKのbubbling

FlexのSpriteを拡張して独自の表示コンポーネントを生成するときに、MouseEvent.DOUBLE_CLICKを拾いたいオブジェクトよりも上にあるSpriteObjectに対して

doubleClickEnabled = true;

を設定しておかないと、MouseEvent.DOUBLE_CLICKがbubblingしないということに少しはまってしまいました。上記の設定がfalseの場合はその時点でstopPropogation() かstopImmediatePropogation()のどちらかで止めているんじゃないかなあ。

BIND9にIPv6のACLを適応する

BIND9のIPv6対応をやったのですが、このままではあらゆるホストからの問い合わせに応答していますので、viewを利用してACLを適応します。

acl localnet {
        xxxx:xxxx:xxxx:xxxx::/64;
        fe80::/10;
};

options {      
        listen-on-v6 port 53 { any; };
};

view "internal" {
        allow-query     { localnet; };
        match-clients   { localnet; };
        recursion yes;

        以下Zoneの設定
}

LinklocalAddressも書く必要があります。書かないとお断りされます。

[root@dnstest ~]# nslookup www.google.co.jp fe80::20e:cff:feb0:c5bd
Server:         fe80::20e:cff:feb0:c5bd
Address:        fe80::20e:cff:feb0:c5bd#53

server can't find www.google.co.jp: REFUSED

よりちゃんとしたACLを書くなら、http://www.iana.org/assignments/ipv6-address-space/あたりを参考にするとよいかと思います。 追記:allow-queryにも登録しておかないとrefuseされる。

LinuxでRAを受け取らない

Windowsに引き続き。こっちは簡単。CentOSではall.accept_ra=0だけでは足りないらしく、個々のinterfaceまで無効の設定を入れるとよい。

/etc/sysctl.conf

RAを受け取らない
net.ipv6.conf.all.accept_ra=0
net.ipv6.conf.default.accept_ra=0
net.ipv6.conf.eth0.accept_ra=0
        • -

を追加。後にsysctlを反映しnetworkを再起動。

# sysctl -p 
# service network restart

BIND9をIPv6対応でインストールする

というわけで、上記の告知に合わせてBIDN9を一気に最新版へ。ついでにIPv6を有効にし、DHCPv6を組みわせて6onlyの生活へ一歩前進。

解凍後
# ./configure --enable-ipv6
# make
# make install

細かいconfigはのちほど。とりあえずlistenするだけなら named.conf に

options {
        listen-on-v6 port 53 { any; };
};

でOK。