Microsoft 365 Bing Chat の停止方法を見てみましょう( DNS 編)

Microsoft Copilot の一般利用バージョンを停止させるための設定ですが、少し前に DNS を hosts を利用して変更する方法を見ていきました。が、あの方法では一台一台の PC の情報を書き換える必要もありあまり実用的ではありません。

本来はネットワーク機器に設定を入れるのが良いのですが、そういった設定が出来ない機器もあり、ちょうどよいソリューションがないかなと探している場合はこの内容を見ていくとよいでしょう。

今回は DNSPowerShell を用いて疑似的に環境を作り上げる方法を見ていきたいと思います。

Active Directory のサーバーに存在している DNS サービスを活用するため、費用が掛からないのが利点です。

まず DNS マネージャーから前方参照の新しいゾーンを作っていきます。

一般的にはゾーンを作ることでそのゾーンに属するホストすべてを制御しますが、ターゲットは www.bing.com と edgeservices.bing.com になるため、これらをゾーンと見立てて設定を行っていきます。

新しいゾーンの作成はご自身の状況に合わせて行っていけばよいです。

ただし、更新ができることが重要なのでプライマリ ゾーンで Active Directory チェックを入れておくのが良いでしょう。

同期も行っておくことをお薦めします。

作成するゾーンは www.bing.com と edgeservices.bing.com の 2 つです。

どちらも同じ設定で作っていきましょう。

クライアントからの更新はどれを選んでも問題ありませんが、デフォルトの設定が安全です。

DNS マネージャー上からこのような形で 2 つのゾーンが見える形になっていれば OK です。

下準備はこれで完了です。

後はここに nochat.bing.com の IP を追加していけばよいのですが、ここはスクリプトを利用するのが簡単です。

以下の内容をそのままコピーしてスクリプトを用意しましょう。

以下は www.bing.com 向けです。

$hostName ="nochat.bing.com"
$zoneName ="www.bing.com"

$hostDNS = Resolve-DnsName -Server "8.8.8.8" $hostName

# IPv4
$RRTypeV4 = "A"
$ipv4s = $hostDNS | Where-Object {$_.Type -eq $RRTypeV4}

if($ipv4s -ne $null){
    $OldIPv4Obj = Get-DnsServerResourceRecord -Name "@" -ZoneName $zoneName -RRType $RRTypeV4
    if( $OldIPv4Obj -ne $null){
        Remove-DnsServerResourceRecord -Name "@" -ZoneName $zoneName -RRType $RRTypeV4 -Force
    }
}
#$ipv4s[0].IP4Address.Length
$ipv4s | ForEach-Object{
    $_.IP4Address
    Add-DnsServerResourceRecordA -Name "@" -ZoneName $zoneName -IPv4Address $_.IP4Address

}

#IPv6
$RRTypeV6 = "AAAA"
$ipv6s = $hostDNS | Where-Object {$_.Type -eq $RRTypeV6}

if($ipv6s -ne $null){
    $OldIPv6Obj = Get-DnsServerResourceRecord -Name "@" -ZoneName $zoneName -RRType $RRTypeV6
    if( $OldIPv6Obj -ne $null){
        Remove-DnsServerResourceRecord -Name "@" -ZoneName $zoneName -RRType $RRTypeV6 -Force
    }
}
#$ipv4s[0].IP4Address.Length
$ipv6s | ForEach-Object{
    $_.IP6Address
    Add-DnsServerResourceRecordAAAA -Name "@" -ZoneName $zoneName -IPv6Address $_.IP6Address

}

ほぼ同じ内容ですが、ここからは edgeservices.bing.com 向けの内容です。

$hostName ="nochat.bing.com"
$zoneName ="edgeservices.bing.com"

$hostDNS = Resolve-DnsName -Server "8.8.8.8" $hostName

# IPv4
$RRTypeV4 = "A"
$ipv4s = $hostDNS | Where-Object {$_.Type -eq $RRTypeV4}

if($ipv4s -ne $null){
    $OldIPv4Obj = Get-DnsServerResourceRecord -Name "@" -ZoneName $zoneName -RRType $RRTypeV4
    if( $OldIPv4Obj -ne $null){
        Remove-DnsServerResourceRecord -Name "@" -ZoneName $zoneName -RRType $RRTypeV4 -Force
    }
}
#$ipv4s[0].IP4Address.Length
$ipv4s | ForEach-Object{
    $_.IP4Address
    Add-DnsServerResourceRecordA -Name "@" -ZoneName $zoneName -IPv4Address $_.IP4Address

}

#IPv6
$RRTypeV6 = "AAAA"
$ipv6s = $hostDNS | Where-Object {$_.Type -eq $RRTypeV6}

if($ipv6s -ne $null){
    $OldIPv6Obj = Get-DnsServerResourceRecord -Name "@" -ZoneName $zoneName -RRType $RRTypeV6
    if( $OldIPv6Obj -ne $null){
        Remove-DnsServerResourceRecord -Name "@" -ZoneName $zoneName -RRType $RRTypeV6 -Force
    }
}
#$ipv4s[0].IP4Address.Length
$ipv6s | ForEach-Object{
    $_.IP6Address
    Add-DnsServerResourceRecordAAAA -Name "@" -ZoneName $zoneName -IPv6Address $_.IP6Address

}


これらのスクリプトでは、 nochat.bing.com の IP アドレスを読み取り、その内容をもとに www.bing.com と edgeservices.bing.com の IP を書き換えるという内容になっています。
IPv4IPv6 の両方を書いている形ですね。

このスクリプトを定期的に動かせば、アドレスが変わっても追随してくれる形になります。(上記スクリプトは消してから追記しているため、一瞬レコードがなくなるため、アクセスできない瞬間が発生します。止まらないようにしたければ IP を比較して削除対象を決めるような動きに変えてあげるとよいでしょう。

両方がうまく適用されるとユーザーの bing.com とサイドバーの Copilot はこのように見えるようになります。チャットボタンがなくなり、 Copilot は何も表示されなくなりました。

ちなみにこの設定を行ったとしても、 Microsoft 365 E3 以上や Bing Chat Enterprise のライセンスが割り当たっているユーザーは制約を受けずアクセスすることができます。

組織で Edge を利用している場合は必ずといってよいレベルで設定しておきたい設定なので、まだこの周りをチェックできていないという場合は一度検討をしてみてはいかがでしょうか。

音楽:乱世の鷹