Deploy CleanBrowsing DNS filtering across your Windows device fleet using Microsoft Intune. Enforce consistent content filtering on all laptops, desktops, and tablets regardless of network location.
Learn About PricingMicrosoft Intune (part of Microsoft Endpoint Manager) lets you push DNS configuration to all managed Windows 10/11 devices. This ensures CleanBrowsing filtering stays active whether devices are on the corporate network, at home, or on public Wi-Fi.
In the Configuration settings step, click Add to create a new OMA-URI setting:
| Field | Value |
|---|---|
| Name | CleanBrowsing DNS Servers |
| OMA-URI | ./Device/Vendor/MSFT/Policy/Config/Networking/DNSClient |
| Data type | String |
| Value | See filter table below |
| Filter | IPv4 Value | IPv6 Value (optional) |
|---|---|---|
| Family | 185.228.168.168,185.228.169.168 | 2a0d:2a00:1::,2a0d:2a00:2:: |
| Adult | 185.228.168.10,185.228.169.11 | 2a0d:2a00:1::1,2a0d:2a00:2::1 |
| Security | 185.228.168.9,185.228.169.9 | 2a0d:2a00:1::2,2a0d:2a00:2::2 |
Enter the IPv4 values (comma-separated, no spaces) in the Value field. To include IPv6, add them after the IPv4 values.
See our Setup Guide for details on what each filter blocks.
Intune pushes the policy at the next device check-in (typically within 15 minutes to 8 hours, or immediately if the user syncs manually from Company Portal).
Paid CleanBrowsing subscriptions require your public IP to be registered in the dashboard. Since managed devices move between networks, you need a script to keep the IP updated automatically.
Create a PowerShell script (Update-CleanBrowsingIP.ps1):
# Update-CleanBrowsingIP.ps1
# Updates CleanBrowsing with the device's current public IP
$DynIPUrl = "https://my.cleanbrowsing.org/dynip/YOUR_CODE"
try {
$response = Invoke-WebRequest -Uri $DynIPUrl -UseBasicParsing -TimeoutSec 30
Write-Output "CleanBrowsing IP updated: $($response.StatusCode)"
} catch {
Write-Output "Failed to update CleanBrowsing IP: $($_.Exception.Message)"
}
Replace YOUR_CODE with the dynamic IP code from your CleanBrowsing dashboard.
Update-CleanBrowsingIP.ps1 script.To run the IP update every 15 minutes, create a Scheduled Task via Intune using a second PowerShell script:
# Create-CBScheduledTask.ps1
$Action = New-ScheduledTaskAction -Execute "PowerShell.exe" `
-Argument '-ExecutionPolicy Bypass -File "C:\ProgramData\CleanBrowsing\Update-CleanBrowsingIP.ps1"'
$Trigger = New-ScheduledTaskTrigger -RepetitionInterval (New-TimeSpan -Minutes 15) `
-RepetitionDuration (New-TimeSpan -Days 365) -At "12:00AM" -Once
$Settings = New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries -DontStopIfGoingOnBatteries
Register-ScheduledTask -TaskName "CleanBrowsing IP Update" `
-Action $Action -Trigger $Trigger -Settings $Settings `
-User "SYSTEM" -RunLevel Highest -Force
Deploy both scripts through Intune's script management. The first script performs the update; the second creates the recurring schedule.
After the policy syncs to a device, verify it's working:
# PowerShell — show current DNS servers
Get-DnsClientServerAddress -InterfaceAlias "Wi-Fi" -AddressFamily IPv4
Get-DnsClientServerAddress -InterfaceAlias "Ethernet" -AddressFamily IPv4
You should see the CleanBrowsing IP addresses in the output.
# Verify CleanBrowsing is responding
Resolve-DnsName -Name debug.test.cleanbrowsing.org -Type TXT -Server 185.228.168.168
# Test a domain that should be blocked (Family filter)
Resolve-DnsName -Name pornhub.com -Server 185.228.168.168
A status of Succeeded confirms the DNS policy was applied to the device.