👏
Windows 調査コマンド
使用しているパソコンが接続しているADサーバとldap通信かldaps通信かを判断
nltest /dsgetdc:yourdomain.com
- DsGetDcName 関数が使用され、ADサーバとの通信に関する情報が表示されます。
- 表示される情報の中に LDAP または LDAPs といったキーワードがあれば、それが通信プロトコルの情報です。
# Ldap確認
([System.DirectoryServices.ActiveDirectory.Domain]::GetCurrentDomain()).DomainControllers
# LDAPS確認
([System.DirectoryServices.ActiveDirectory.Domain]::GetCurrentDomain()).DomainControllers | ForEach-Object {
$dc = $_
$dcname = $dc.Name
$dcip = [System.Net.Dns]::GetHostAddresses($dcname)[0].IPAddressToString
$ldapsport = 636 # LDAPSポート番号
try {
$tcpclient = New-Object System.Net.Sockets.TcpClient
$tcpclient.Connect($dcip, $ldapsport)
Write-Host "$dcname is reachable over LDAPS"
}
catch {
Write-Host "$dcname is not reachable over LDAPS"
}
finally {
if ($tcpclient) {
$tcpclient.Close()
}
}
}
- このPowerShellスクリプトは、DomainControllers プロパティを使用してドメインコントローラの情報を取得し、LDAPS通信が可能かどうかを確認します。
- try-catch ブロックを使用して、LDAPSポート(通常は636)への接続を試み、成功した場合はメッセージを表示します。
$domainControllers = ([System.DirectoryServices.ActiveDirectory.Domain]::GetCurrentDomain()).DomainControllers; $ldapsPort = 636; $domainControllers | ForEach-Object { $dc = $_; $dcName = $dc.Name; $dcIp = [System.Net.Dns]::GetHostAddresses($dcName)[0].IPAddressToString; try { $tcpClient = New-Object System.Net.Sockets.TcpClient; $tcpClient.Connect($dcIp, $ldapsPort); Write-Host "$dcName is reachable over LDAPS"; } catch { Write-Host "$dcName is not reachable over LDAPS"; } finally { if ($tcpClient) { $tcpClient.Close(); } } }
ldap や ldapsが使用しているport
- デフォルト
- LDAP: 389
- LDAPS: 636
dsquery * "cn=configuration,dc=yourdomain,dc=com" -scope base -attr ldapport ldapsport
- このコマンドは、指定したドメイン (yourdomain.com 部分を適切なものに置き換えてください) のLDAPポートとLDAPSポートを取得します。
(Get-ADObject (Get-ADRootDSE).configurationNamingContext -Properties ldapService) | Select-Object -ExpandProperty ldapService
- このPowerShellコマンドも同じく、LDAPポートとLDAPSポートを表示します。同様に、 yourdomain.com の部分を適切なものに変更してください。
Windows Firewallの設定状況を確認
netsh advfirewall show allprofiles
- このコマンドは、現在のプロファイル(ドメイン、プライベート、パブリック)に対するファイアウォールの設定を表示します。
Get-NetFirewallProfile | Format-Table Name,Enabled
- これは、有効なファイアウォールプロファイルとその状態(有効または無効)を表示します。
DomainのInboundUserNotificationを無効にする
Set-NetFirewallProfile -Profile Domain -InboundUserNotification Disabled
- このコマンドは、ドメインプロファイルに対してInboundUserNotificationを無効にします。
Set-NetFirewallProfile -Profile Domain -InboundUserNotification Enabled
NetBIOS over TCP/IP を有効にする
netsh interface tcp set global netbt enabled
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\NetBT\Parameters\Interfaces\Tcpip_{YourNetworkInterfaceGUID}" -Name "NetbiosOptions" -Value 0
逆に、NetBIOS over TCP/IP を無効にする
netsh interface tcp set global netbt disabled
- 変更が反映されるには、一度ネットワーク接続を再起動するか、再接続する必要があります。
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\NetBT\Parameters\Interfaces\Tcpip_{YourNetworkInterfaceGUID}" -Name "NetbiosOptions" -Value 2
- {YourNetworkInterfaceGUID} の部分は、対象のネットワークインターフェースのGUIDに置き換えてください。これにより、対象のネットワークインターフェース上で NetBIOS over TCP/IP の有効化または無効化が行われます。変更が反映されるには、一度ネットワーク接続を再起動するか、再接続する必要があります。
ネットワークインターフェースのGUID
- ネットワークインターフェースのGUID(Globally Unique Identifier)は、各ネットワークインターフェースに一意に割り当てられる識別子です。これは通常、レジストリや設定ファイルなどで使用され、同じコンピュータ上の異なるネットワークインターフェースを区別するために利用されます。
ネットワークインターフェースのGUIDを確認する
Get-NetAdapter
-
このコマンドにより、システムに存在するネットワークアダプタの一覧が表示されます。それぞれのアダプタの中には InterfaceDescription や Name などのプロパティがあり、これを参照して該当のネットワークインターフェースを特定できます。
-
例えば、"Wi-Fi" という名前のネットワークインターフェースのGUIDを取得する場合は、次のようにします:
(Get-NetAdapter -Name "Wi-Fi").InterfaceGuid
- このIDを使って、先程のNetBIOS over TCP/IPの設定を行います。
ネットワーク接続の再起動や再接続を行う
ネットワーク接続の再起動:
ipconfig /release
ipconfig /renew
- これにより、ネットワーク接続が解放され再取得されます。
ネットワーク接続の再起動:
Restart-NetAdapter -InterfaceAlias 'YourNetworkInterfaceAlias'
-
ここで、YourNetworkInterfaceAlias は、再起動したいネットワークインターフェースのエイリアス名に置き換えてください。ネットワークインターフェースのエイリアス名は Get-NetAdapter コマンドで確認できます。
-
例えば、Wi-Fiの場合:
Restart-NetAdapter -InterfaceAlias 'Wi-Fi'
- これにより、ネットワーク接続が再起動されます。
Discussion