iOS 11: How to change DNS settings for cellular/mobile data?

Is it possible to change DNS for cellular internet? How can it be done without a jailbreak?

I've tried Apple Configurator, but didn't find suitable settings.


Solution 1:

Build your own VPN using OpenVPN & easy-rsa on a digital ocean cloud server ($5/mo for cheapest VM & 2TB monthly transfer), configure VPN to tunnel/forward all traffic, set up Cloudflare 1.1.1.1 on VPN, then use Apple Configurator to set an always on VPN connection.

Can confirm this is how I do it, I set up Ubuntu 16.04 server instance and the above and never shut my vpn off.

NOTE: Depending on your Mobile ISP, this may not work for a tethered device. i.e. a laptop tethered to your mobile phone (via hotspot) often does NOT have it's DNS passed through this tunnel and instead will use the ISP supplied via the Cellular config.

Solution 2:

Not possible without a jailbreak.

Source: iPhone Configuration for OpenDNS It says, in part (emphasis mine):

"These instructions only work for Wi-Fi connections because iOS does not allow you to change the DNS servers when connected to cellular networks. Also, the changes are network specific, so you'll need to change the DNS servers every time you connect to a new wireless network."

These folks surely know more about DNS (and in particular overriding standard settings) than anybody else.

Solution 3:

For those looking to use 1.1.1.1 on your iOS devices, you can download the official 1.1.1.1 app from the App Store (free, no in-app purchases), or follow the link on the https://1.1.1.1 home page.

The app sets up a VPN profile that automatically routes all DNS queries from any app through Cloudflare's free DNS servers.

Cloudflare's servers will be used, even for cellular data.


You can also use a third party iOS app called DNS Override (paid app, costs $1.99) that automatically configures 1.1.1.1 for you on any network you connect to. Directions from Cloudflare can be found here and are referenced below:

  1. Download DNS Override from the app store.

  2. Launch the DNS Override app.

  3. Click 1.1.1.1 at the top of the app.

  4. Turn on the DNS Override toggle

  5. DNS Override may ask you to install their VPN profile so that they can automatically update DNS settings.

Lastly, wifi users can setup DNS servers manually by going to the iOS wifi settings. Note your device will only use 1.1.1.1 for each wifi connection you configure.

  1. Go to Settings.

  2. Click on Wi-Fi.

  3. Click the information ā€˜iā€™ icon next to the Wi-Fi name you are connected to.

  4. Scroll down until you see the section called Configure DNS

  5. Change the configuration from Automatic to Manual.

  6. Click Add Server.

  7. Remove any IP addresses that may be already listed and in their place add:

    1.1.1.1
    1.0.0.1
    2606:4700:4700::1111
    2606:4700:4700::1001
    
  8. Click Save.


I can't think of a good reason to pay for a third party app like DNS Override when an official app is provided free directly from Cloudflare.

For those using a manual Wifi configuration, know that Cloudflare's DNS is not used for your cellular data. Your iOS device will only use a custom DNS on connections that have it configured. There is not a way to configure cellular DNS on iOS at this time - your carrier settings will be used. For this reason, I suggest using the official Cloudflare app.

Solution 4:

For iOS 14, I recommend using the DNS profiles from paulmillr. Simply install the corresponding profile of the desired DNS provider.

Download the profiles here: https://github.com/paulmillr/encrypted-dns

After installation, the DNS settings are active system-wide, regardless of whether via WiFi or mobile data. Another advantage of this is that the DNS queries are encrypted. Either via HTTPS (DoH) or TLS (DoT).

In my opinion, this is the best way to change your DNS.

Solution 5:

it's an old entry, but maybe someone found it when looking for how to change the DNS server on the iPhone.

I have found for me a more dynamic variant. A WireGuard-Pseudo-VPN can be used to assign DNS to all (or "included" or "without excluded" SSIDs): Simply set up a new connection and set up 127.0.0.1 as server. Then specify the DNS server under DNS separated by commas. Thats all ā€“ no VPN-Server or special app (except WireGuard) needed. You can switch on or off your specialized DNS/DoH-Server by hand or on demand.

So you can even use mobile DNS over HTTPS on cellular, quad9 for example. šŸ˜ƒ