2013年2月9日土曜日

ドメイン "xx" の Active Directory ドメイン コントローラー (AD DC) を検索するために使用される DNS の Service Location (SRV) リソース レコードを照会したときに、次のエラーが発生しました


WINDOWSにて、いろいろな事が原因で掲題エラーが発生するようですが、結論から先に言うと私の場合、


IPv6のチェックを外したらドメインに参加できました




その後IPV6にチェックを入れ再起動したが、それからも普通にドメインに参加、ログインできてます。
 →やはりダメ、IPv6を有効にするとドメインへ入れず。


最近OSインストール後やPC購入後の状態は、最初からipv6がチェックされていて優先的に使われるようですね。

ちなみに上記は、ネットワーク接続のプロパティーのところの話で(最近だと、ネットワーク共有センター→アダプター設定の変更→)、
・IPv4は固定IPを設定
・DNSサーバー:DCサーバー上のDSNサーバーIPアドレスを設定





と、これだけだとどういう環境でなったのか全く分からないと思うのでちゃんと環境を書きます。

WindowsのIPv6に関しての基礎はMVAのトラックを見るのが最適(他のサービス@itなどの情報より的確)
  → Windows Server 2012 と IPv6





① WindowsServer2012Datacenterがインストールされた物理サーバーが1台
  このサーバーで仮想化を実現するので、役割はHyper-V3.0を入れているだけ

※なんでstandardでなくDatacenterかというとVMを3つ以上立てようと思ったので、STANDARDだとVMは2つまで(VM立てて無料で入れられるOSが2つという意味)らしく(多分ね?)(Datacenterは無限)、と普通はそうなるのかな?Datacenterは高いから別途standerdライセンス購入したりと。
私はmsdnを持ってるので単にDatacenter入れてみただけです。2012は両社内容かわらんみたいね?

※LANカードは2枚差してます。1枚はHyper-Vの仮想スイッチ用。もう1枚はリモートでサーバーメンテするのでそのやり取りをするNIC(このNICのIPアドレスめがけてリモートデスクトップしてます)

仮想マシンの仮想スイッチは「外部」
「管理オペレーティングシステムにこのネットワークアダプターの共有を許可する」はチェックしない。
これをチェックするといろいろと問題があるので(セキュリティー、その他)普通チェックしないで管理用のNICを取り付ける。




  以下は①内に仮想マシンVMを作り、入れたいOSを入れ、仮想化している



② 仮想マシンVMその1
  ゲストOS:WindowsServer2012Datacenter
  用途:AD DCサーバー  なので役割は「AD DC」のみ。

これが③サーバーから見れなかったAD DCサーバーです!仮想化したから×なのかな?と、少しだけ悩みました。

WS2012からADが仮想化したサーバー内で使えるようになったからADサーバーに。
~2008r2ではその後いろいろと面倒な問題が起こるため、物理サーバーでないとAD DCを入れられなかった(時計が狂う、障害後にDC情報をリストアすると他のDCと整合性が取れなくなる、など)

たかがAD DCサービス位で物理サーバー立てるのは¥が馬鹿らしいですからね。



③ 仮想マシンVMその2
  ゲストOS:WindowsServer2008r2SP1Standerd
  用途:DBサーバー  なのでSqlServer2012を入れたDCのメンバサーバーです。

この③のサーバーが掲題のメッセージを吐き、②DCのメンバサーバーにしようとおもったのに、ドメインに入れなかったのです。 このサーバーのネットワークの構成でIPv6を使わないようチェックを外した。SRVを探したかったのでしょうか?
ipでもサーバー名でpingは通るし、エクスプローラーのネットワークから見ると②サーバーがいるし中に入れましたが。

で、なんでWindowsServer2008r2SP1かというと、まだ2012使っているお客がいないから。
業界的にもSP1が出るまで客に2012は売るな、そうお達し出している会社が多いみたいですね。
(SP1が出ないとどんな不具合が発生するか怖く、情報も少なく、危ないし&MSの実験台にはなりたくないらしい・・)





という環境です、、、

で、原因が分かったきっかけは、エラーメッセージをよーく見ると③サーバーのIPV6のアドレスらしきものがメッセージ中にあったため。∴IPV6を使ってDNSを探しに行っていたようです。

ならきっとこいつが悪いのだろうとIPV6のチェックを外せば、、、いやおうなしにIPV4を使ってDNSサーバーを探しにいくだろうと思いそうしたところ、難なくドメインへのログインダイアログが出てきてめでたく完了。

でも本当にこれで良かったのか?少々疑問?










(後日談)

なんでも最近の?Windowsは、IPv4よりIPv6が優先されるようで、また最近のネットワーク接続はIPv4、IPv6、共にチェックされ初めから使用するようになっています。

① だからIPv6で通信しに行った

 IPv4通信を優先させたいときは、netsh、コマンドで優先順位を変更すれば良いみたいです


======
 現状確認  dos窓にて
======
(2008r2sp1)
C:\Users\Administrator>netsh interface ipv6 show prefixpolicies
アクティブ状態を照会しています...
優先順位   ラベル  プレフィックス
----------  -----  --------------------------------
        50      0  ::1/128
        40      1  ::/0      ←←←←←←←← これがIPv6らしい
        30      2  2002::/16
        20      3  ::/96
        10      4  ::ffff:0:0/96  ←←←←←←←← これがIPv4らしい
         5      5  2001::/32


=========
 優先順位変更実施  dos窓にて
=========
(上から5番目のIPv4を一番上に持って行くバッチファイルを作り実行し、既存の1~4行目の優先順位も合わせて設定するよう1行ずつ優先順位を下へずらす)
C:\Users\Administrator>netsh interface ipv6 set prefixpolicy ::ffff:0:0/96 50 0
OK
C:\Users\Administrator> netsh interface ipv6 set prefixpolicy ::1/128 40 1
OK
C:\Users\Administrator> netsh interface ipv6 set prefixpolicy ::/0 30 2
OK
C:\Users\Administrator> netsh interface ipv6 set prefixpolicy 2002::/16 20 3
OK
C:\Users\Administrator> netsh interface ipv6 set prefixpolicy ::/96 10 4
OK

C:\Users\Administrator>netsh interface ipv6 show prefixpolicies
アクティブ状態を照会しています...
優先順位   ラベル  プレフィックス
----------  -----  --------------------------------
        50      0  ::ffff:0:0/96 ←←← IPv4
        40      1  ::1/128
        30      2  ::/0      ←←← IPv6
        20      3  2002::/16
        10      4  ::/96
         5      5  2001::/32

(参考)IPv6よりIPv4優先に変更する方法
参考と言うより、そのまま真似させていただきました
http://www.vwnet.jp/Windows/w7/IPv4/IPv4PriorityUP.html

netshの使い方
@it netsh の使い方

WindowsServer2012のdos窓で netsh interface (TCP/IP関連のパラメータ)と打つと、これはそのうちなくなるかもしれないのでPowerShellを使いなさいといわれます

TCP/IP 用の PowerShell コマンドの詳細については、
http://go.microsoft.com/fwlink/?LinkId=217627 を参照してください、らしいです。


=========
 上記リセット方法
=========
netsh interface ipv6 reset
C:\Users\Administrator>netsh interface ipv6 reset
インターフェイス のリセットに成功しました。
プレフィックス ポリシー のリセットに成功しました。
コンピューターを再起動してこの操作を完了してください。



参考までに)
2012SVのIPv6状況を調べると、、、
netsh interface ipv6>show prefixpolicies
アクティブ状態を照会しています...
優先順位 ラベル プレフィックス
---------- ----- --------------------------------
50 0 ::1/128
40 1 ::/0      ←←← IPv6
35 4 ::ffff:0:0/96 ←←← IPv4
30 2 2002::/16
5 5 2001::/32
3 13 fc00::/7
1 11 fec0::/10
1 12 3ffe::/16
1 3 ::/96
という感じです。


PowerShellのtcpip関連のコマンド
CommandType Name ModuleNa
----------- ---- --------
Function Get-NetIPAddress NetTCPIP
Function Get-NetIPConfiguration NetTCPIP
Function Get-NetIPInterface NetTCPIP
Function Get-NetIPv4Protocol NetTCPIP
Function Get-NetIPv6Protocol NetTCPIP
Function Get-NetNeighbor NetTCPIP
Function Get-NetOffloadGlobalSetting NetTCPIP
Function Get-NetPrefixPolicy NetTCPIP
Function Get-NetRoute NetTCPIP
Function Get-NetTCPConnection NetTCPIP
Function Get-NetTCPSetting NetTCPIP
Function Get-NetTransportFilter NetTCPIP
Function Get-NetUDPEndpoint NetTCPIP
Function Get-NetUDPSetting NetTCPIP
Function New-NetIPAddress NetTCPIP
Function New-NetNeighbor NetTCPIP
Function New-NetRoute NetTCPIP
Function New-NetTransportFilter NetTCPIP
Function Remove-NetIPAddress NetTCPIP
Function Remove-NetNeighbor NetTCPIP
Function Remove-NetRoute NetTCPIP
Function Remove-NetTransportFilter NetTCPIP
Function Set-NetIPAddress NetTCPIP
Function Set-NetIPInterface NetTCPIP
Function Set-NetIPv4Protocol NetTCPIP
Function Set-NetIPv6Protocol NetTCPIP
Function Set-NetNeighbor NetTCPIP
Function Set-NetOffloadGlobalSetting NetTCPIP
Function Set-NetRoute NetTCPIP
Function Set-NetTCPSetting NetTCPIP
Function Set-NetUDPSetting NetTCPIP
http://go.microsoft.com/fwlink/?LinkId=217627






(後日談 : さらなる問題)

上記ドメイン参加しているメンバサーバーにSqlserver2012が入っているが、ドメイン参加している物理クライアントからリモート接続できず(マネジメントスタジオ、PGM)、DNSの名前解決は出来ているが、何をやっても入れない。仕方なくメンバサーバーで再度IPv6を利用してみるが、今度はメンバサーバーがまたドメインへ入れず。
もうにっちもさっちもいかないので全対象CPにパケットキャプチャーソフトを入れ、現在キャプチャーして調査中。それでもどうしようもない感じのため、msdnのチケットを使うか検討中。たしか2枚使えたような気が・・?


余談ですが、こんなエラーも出ました。
「認証エラーが発生しました。ローカル・セキュリティ機関にアクセスできません リモートコンピューター:コンピューター名」 
既にドメインに入っていたメンバサーバーでIPv6を有効にしたところ、またドメインへ入れなくなってしまし、その状況下で物理PC(ドメイン参加)からリモートクライアントでそのメンバサーバーにログインしようとして出たエラー。
netにある情報と照らし合わせると原因が全く違っています。が、全く同じメッセージが出ます。
今回は理由がわかっているからよいですが、そうでなければ原因見つけられるかな?と言う感じですね。はまったら一旦netの情報は無視し基本に戻った方が良いかもしれません。






(後日談 : さらなる問題の解決)

ネイティブクライアントからsqlserverに接続できない。・・くだらなすぎる理由で1日潰しました。
原因は、クライアントPCのSQLServer構成マネージャーにあるSQLNativeClientの構成32bit、SQLNativeClientの構成64bit。
(PCにはsqlserver2005、2012のDeveloperEditionが入っている)

このうちのSQLNativeClientの構成32bitの別名。
ここにドメイン参加できなかったサーバーのサーバー名で登録した別名がありました。以前作ったものです。
64bitの方に作ってあった別名は事前に削除していますが、32bitの方は単なる削除し忘れ。


これが原因でホストを探しに行くと、ローカルを探しに行っていたよう。
久々に超!馬鹿馬鹿しい原因で時間を潰しました。あまりに簡単な原因だったこともあり、愕然としました。
ただお蔭でまる1日使いnet徘徊しネットワークの学習ができたので逆に良かったのかもしれません。

でも、アホらしいですね、、、







0 件のコメント:

コメントを投稿