はじめに
これは私の家で急に内部の名前解決は出来るのに、外部名前解決が出来なくなった話です。
結論から言うと、UDM-SEの広告ブロックが原因でした。
幣宅環境
- メインルーター
- UDM-SE
- DNSサーバー
- WindowsServer2019
事件詳細
ある日突然、外部の名前解決が出来なくなりました。
UDM-SEのインターネットのDNS設定を自動にしたら、次は内部の名前解決が出来なくなりました。
対象サーバーの死活確認
最初にやったのは対象サーバーの死活確認。サーバーというかUDM-SEのWeb画面へ行こうとしました。
インターネット見れているので問題なし。
DNSサーバーの確認
DNSサーバーの死活確認。しかし、問題なし。
クライアントPCでのnslookup
PCでnslookupをしてみる。
>nslookup
既定のサーバー: UnKnown
Address: 172.16.1.105
・・・ん?
そもそもDNSサーバーへアクセス出来ていない。
DNSサーバーへのUDP53疎通テスト
ChatGPTの力を借りて、DNSサーバーへのudp53が疎通できるかテストするコードを作ってもらう。
function Test-PortUDP {
param (
[string]$ComputerName,
[int]$Port,
[int]$Timeout = 1000
)
$endpoint = New-Object System.Net.IPEndPoint ([System.Net.IPAddress]::Any, 0)
$udpClient = New-Object System.Net.Sockets.UdpClient
$udpClient.Client.ReceiveTimeout = $Timeout
try {
$sendBytes = [System.Text.Encoding]::ASCII.GetBytes("Test")
$udpClient.Connect($ComputerName, $Port)
$udpClient.Send($sendBytes, $sendBytes.Length)
$response = $udpClient.Receive([ref]$endpoint)
if ($response) {
return $true
}
} catch {
return $false
} finally {
$udpClient.Close()
}
return $false
}
# 使用例
Test-PortUDP -ComputerName "172.16.1.105" -Port 53
結果はfalse
DNSサーバーと同じVLANから名前解決
これは問題なし。
つまり同セグは大丈夫。
別VLANからの名前解決
NG
つまりVLAN間がNG
UDM-SEからの名前解決
UDM-SEはLinuxベースで作成されているため、SSHログインするとLinuxコマンドが使えます。
そのため、digコマンドを実行したところ、問題なく解決。
……これはUDM-SEが原因と仮定
公式ドキュメント閲覧
Unifiは設定が比較的簡単ですが、ドキュメントがかなり少ないのが欠点。
そんな中、ドキュメントを読み漁ったところ、、、
早速、UDM-SEの設定を確認したところ、広告ブロックの適用ネットワークにServerSegmentのネットワークを発見。
速攻で無効化したところ、無事解決。
事件の原因
- 外部名前解決が出来なくなったの原因
- 広告ブロックの対象にServerSegmentを追加したから
- DNSサーバーが外部名前解決しようフォワード先にアクセスしようとしたら、UniFi Gateway DNSサーバーにリダイレクトされてしまっていた
- 内部名前解決が出来なくなった原因
- UnifiのインターネットのDNS設定を自動(外部のDNSサーバー)にしたため
終わりに
Unifiはドキュメント少ないので、少しでも誰かの力になれば幸いです。
あと、何でもかんでもよく調べずに機能を使うのはやめよう。