UBports Robot Logo UBports Forum
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    • Search
    • Register
    • Login

    Change DNS servers, wifi and mobile data

    Scheduled Pinned Locked Moved Support
    21 Posts 4 Posters 3.6k Views 3 Watching
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
      Reply
      • Reply as topic
      Log in to reply
      This topic has been deleted. Only users with topic management privileges can see it.
      • Br1B Offline
        Br1
        last edited by Br1

        --------- UPDATE ---------
        New version to install/uninstall with single command, see here for further information.

        You can set alternative dns servers and restore the default settings in an easy way, reboot not required.

        You can switch between two preset providers or enter the one you prefer.

        three steps :

        1 - download (just click) set-dns.1.01.tar.gz from here

        2 - open file manager, go to Downloads, click set-dns.1.01.tar.gz and extract archive

        3 - open terminal and type :

        sudo Downloads/set-dns.1.01/setdns.sh
        

        You will see this :

        screenshot_0228_400.png

        type 1 to set Cloudflare servers
        type 2 to set OpenDNS servers
        type 3 to set your preferred servers (*)
        type 4 to restore default settings (Restore OS)
        type 5 to exit (OS unchanged)

        Remember to "Restore OS" before the next OTA update !

        Preview :

        #!/bin/bash
        
        # Make sure only root can run this script
        if [ "$(id -u)" != "0" ]; then
           echo " - You must prepend 'sudo' !" 1>&2
           exit 1
        fi
        
        echo -e '\n- Set DNS servers / Restore default -\n' ;
        
        # these are Cloudflare's DNS servers
        CLF_one=1.1.1.1
        CLF_two=1.0.0.1
        
        # these are OpenDNS servers
        OPE_one=208.67.222.222
        OPE_two=208.67.220.220
        
        PS3='
        Please enter your choice : '
        options=(" Cloudflare" " OpenDNS" " Custom DNS" " Restore OS" " Quit")
        select opt in "${options[@]}"
        do
        	case $opt in
        	" Cloudflare")
        		# search the default string
        		if grep -qs 'dns=dnsmasq' /etc/NetworkManager/NetworkManager.conf
        
        		then
        
        			# -------------------- runs if found default dns settings -------------------- 
        
        			# mount root in read/write mode
        			mount -o remount,rw / ;
        
        			# remove /etc/resolv.conf (is a symbolic link pointing to /run/resolvconf/resolv.conf)
        			rm /etc/resolv.conf ;
        
        			# create /etc/resolv.conf
        			touch /etc/resolv.conf ;
        
        			# add it Cloudflare servers
        			echo -e "nameserver $CLF_one\nnameserver $CLF_two" >> /etc/resolv.conf ;
        
        			# set permission
        			chmod 644 /etc/resolv.conf ;
        
        			# make it immutable
        			chattr +i /etc/resolv.conf ;
        
        			# replace dns=dnsmasq  with  dns=none in NetworkManager conf file
        			sed -i 's/dns=dnsmasq/dns=none/' /etc/NetworkManager/NetworkManager.conf ;
        
        			# remount root in read only mode
        			mount -o remount,ro / ;
        
        			echo -e '\n Cloudflare DNS are set up !\n'
        
        			exit 0
        
        		else
        
        			# -------------------- runs if dns settings are already changed --------------------
        
        			# mount root in read/write mode
        			mount -o remount,rw / ;
        
        			# makes /etc/resolv.conf writable/erasable
        			chattr -i /etc/resolv.conf ;
        
        			# add it Cloudflare servers
        			echo -e "nameserver $CLF_one\nnameserver $CLF_two" > /etc/resolv.conf ;
        
        			# make it immutable
        			chattr +i /etc/resolv.conf ;
        
                               # remount root in read only mode
                                mount -o remount,ro / ;
        
        			echo -e '\n Cloudflare DNS are set up !\n'
        
        			exit 0
        
        		fi
        
        		;;
        
        	" OpenDNS")
        		# search the default string
        		if grep -qs 'dns=dnsmasq' /etc/NetworkManager/NetworkManager.conf
        
        		then
        
        			# -------------------- runs if found default dns settings -------------------- 
        
        			# mount root in read/write mode
        			mount -o remount,rw / ;
        
        			# remove /etc/resolv.conf (is a symbolic link pointing to /run/resolvconf/resolv.conf)
        			rm /etc/resolv.conf ;
        
        			# create /etc/resolv.conf
        			touch /etc/resolv.conf ;
        
        			# add it OpenDNS servers
        			echo -e "nameserver $OPE_one\nnameserver $OPE_two" >> /etc/resolv.conf ;
        
        			# set permission
        			chmod 644 /etc/resolv.conf ;
        
        			# make it immutable
        			chattr +i /etc/resolv.conf ;
        
        			# replace dns=dnsmasq  with  dns=none in NetworkManager conf file
        			sed -i 's/dns=dnsmasq/dns=none/' /etc/NetworkManager/NetworkManager.conf ;
        
        			# remount root in read only mode
        			mount -o remount,ro / ;
        
        			echo -e '\n OpenDNS Servers are set up !\n'
        
        			exit 0
        
        		else
        
        			# -------------------- runs if dns settings are already changed --------------------
        
        			# mount root in read/write mode
        			mount -o remount,rw / ;
        
        			# makes /etc/resolv.conf writable/erasable
        			chattr -i /etc/resolv.conf ;
        
        			# add it OpenDNS servers
        			echo -e "nameserver $OPE_one\nnameserver $OPE_two" > /etc/resolv.conf ;
        
        			# make it immutable
        			chattr +i /etc/resolv.conf ;
        
                               # remount root in read only mode
                                mount -o remount,ro / ;
        
        			echo -e '\n OpenDNS Servers are set up !\n'
        
        			exit 0
        
        		fi
        
        		;;
        
        	" Custom DNS")
        		# search the default string
        		if grep -qs 'dns=dnsmasq' /etc/NetworkManager/NetworkManager.conf
        
        		then
        
        			# -------------------- runs if found default dns settings -------------------- 
        
        			# mount root in read/write mode
        			mount -o remount,rw / ;
        
        			# remove /etc/resolv.conf (is a symbolic link pointing to /run/resolvconf/resolv.conf)
        			rm /etc/resolv.conf ;
        
        			# create /etc/resolv.conf
        			touch /etc/resolv.conf ;
        
                                                read -p " Type primary server : " priDN
        
        					echo -e "nameserver $priDN" > /etc/resolv.conf ;
        
        					read -p " Type secondary server : " secDN
        
        					echo -e "nameserver $secDN" >> /etc/resolv.conf ;
        
        			# set permission
        			chmod 644 /etc/resolv.conf ;
        
        			# make it immutable
        			chattr +i /etc/resolv.conf ;
        
        			# replace dns=dnsmasq  with  dns=none in NetworkManager conf file
        			sed -i 's/dns=dnsmasq/dns=none/' /etc/NetworkManager/NetworkManager.conf ;
        
        			# remount root in read only mode
        			mount -o remount,ro / ;
        
        			echo -e '\n Custom DNS are set up !\n'
        
        			exit 0
        
        		else
        
        			# -------------------- runs if dns settings are already changed --------------------
        
        			# mount root in read/write mode
        			mount -o remount,rw / ;
        
        			# makes /etc/resolv.conf writable/erasable
        			chattr -i /etc/resolv.conf ;
        
                                                read -p " Type primary server : " priDN
        
                                                echo -e "nameserver $priDN" > /etc/resolv.conf ;
        
                                                read -p " Type secondary server : " secDN
        
                                                echo -e "nameserver $secDN" >> /etc/resolv.conf ;
        
        
        			# make it immutable
        			chattr +i /etc/resolv.conf ;
        
                               # remount root in read only mode
                                mount -o remount,ro / ;
        
        			echo -e '\n Custom DNS are set up !\n'
        
        			exit 0
        
        		fi
        
        		;;
        
        	" Restore OS")
        			# mount root in read/write mode
        			mount -o remount,rw / ;
        
        			# makes /etc/resolv.conf writable/erasable
        			chattr -i /etc/resolv.conf ;
        
        			# remove it
        			rm /etc/resolv.conf ;
        
        			# recreate  original simbolic link
        			ln -s /run/resolvconf/resolv.conf /etc/resolv.conf ;
        
        			# replace dns=none  with  dns=dnsmasq in NetworkManager conf file
        			sed -i 's/dns=none/dns=dnsmasq/' /etc/NetworkManager/NetworkManager.conf ;
        
                               # remount root in read only mode
                                mount -o remount,ro / ;
        
                               # restart daemon
                                service network-manager restart ;
        
        			echo -e '\n Default settings have been restored !\n'
        
        			exit 0
        
        		;;
                " Quit")
        			echo -e '\n OS unchanged !\n'
        
        			break
        		;;
        			*) echo "invalid option $REPLY"
        		;;
            esac
        done
        

        (*) For example, if you want to set Google DNS servers enter 8.8.8.8 as primary server and 8.8.4.4 as secondary server.

        ^

        • Google Pixel 3a XL
        • Xiaomi MI A2
        K D 2 Replies Last reply Reply Quote 4
        • Br1B Offline
          Br1
          last edited by

          OTA-25 --- You can reinstall, it works.

          ^

          • Google Pixel 3a XL
          • Xiaomi MI A2
          KenedaK 1 Reply Last reply Reply Quote 1
          • KenedaK Offline
            Keneda @Br1
            last edited by

            @Br1
            Did you consider building an app for your 3 scripts to be nooby friendly ?

            2015-2023 : Meizu MX4 ☠️⚰️✝️
            2023-2024 : Nexus 5 ☠️⚰️✝️
            2024-***** : FPOS Fairphone 5 waiting UT for freedom 😉
            🇲🇫🇬🇧

            Br1B 1 Reply Last reply Reply Quote 0
            • K Offline
              kimo @Br1
              last edited by kimo

              @Br1 As he said, Keneda if you can building an app, this would be great. I tried it on focal. It worked with me in the first time, and when I tried to return to restore default settings, I lost my connection to the Internet without finding a solution, despite my attempts to fix it, which forced me to re-install UT 😅

              1 Reply Last reply Reply Quote 0
              • Br1B Offline
                Br1 @Keneda
                last edited by

                @Keneda I can't promise anything but I will try.

                ^

                • Google Pixel 3a XL
                • Xiaomi MI A2
                KenedaK 1 Reply Last reply Reply Quote 1
                • KenedaK Offline
                  Keneda @Br1
                  last edited by

                  @Br1
                  I don't know if you saw my post responding to you on another of your thread so i put link here, it may be helpfull : https://forums.ubports.com/topic/8144/how-to-record-calls/4?_=1680905394718

                  2015-2023 : Meizu MX4 ☠️⚰️✝️
                  2023-2024 : Nexus 5 ☠️⚰️✝️
                  2024-***** : FPOS Fairphone 5 waiting UT for freedom 😉
                  🇲🇫🇬🇧

                  Br1B 1 Reply Last reply Reply Quote 0
                  • Br1B Offline
                    Br1 @Keneda
                    last edited by

                    @Keneda to build apps it is necessary to know qml and python and I don't know them 😞 "Touch IDE" is an interesting app, but I would like to do something with shell scripting

                    ^

                    • Google Pixel 3a XL
                    • Xiaomi MI A2
                    1 Reply Last reply Reply Quote 1
                    • D Offline
                      domubpkm @Br1
                      last edited by

                      This post is deleted!
                      Br1B 1 Reply Last reply Reply Quote 0
                      • Br1B Offline
                        Br1 @domubpkm
                        last edited by

                        @domubpkm said in Change DNS servers, wifi and mobile data:

                        @Br1 typo error

                        fixed, thank you.

                        ^

                        • Google Pixel 3a XL
                        • Xiaomi MI A2
                        D 1 Reply Last reply Reply Quote 0
                        • D Offline
                          domubpkm @Br1
                          last edited by domubpkm

                          This post is deleted!
                          1 Reply Last reply Reply Quote 0
                          • Br1B Offline
                            Br1
                            last edited by

                            ---- UPDATE OTA-2 Focal ----
                            ---- Stable Channel ----

                            Usual three steps :

                            1 - download (just tap) setdns-ota.2 from here

                            2 - open file manager, go to Downloads, tap setdns-ota.2.tar.gz and tap extract archive

                            3 - open terminal, type :

                            sudo Downloads/setdns-ota.2/setdns-ota.2.sh
                            

                            and hit enter,

                            type 1 + enter to set Cloudflare servers
                            type 2 + enter to set OpenDNS servers
                            type 3 + enter to set custom servers (*)
                            type 4 + enter to restore default settings (Restore OS)
                            type 5 + enter to exit (OS unchanged)

                            Remember to "Restore OS" before the next OTA update !

                            set-dns is one single script, preview :

                            #!/bin/bash
                            
                            # Make sure only root can run this script
                            if [ "$(id -u)" != "0" ]; then
                               echo " - You must prepend 'sudo' !" 1>&2
                               exit 1
                            fi
                            
                            echo -e '\n- Set DNS servers / Restore default -\n' ;
                            
                            rsv_cnf=/etc/resolv.conf ;
                            
                            # these are Cloudflare's DNS servers
                            CLF_one=1.1.1.1
                            CLF_two=1.0.0.1
                            
                            # these are OpenDNS servers
                            OPE_one=208.67.222.222
                            OPE_two=208.67.220.220
                            
                            PS3='
                            Please enter your choice : '
                            options=("  Cloudflare  -      " "  OpenDNS     -      " "  Custom DNS  -      " "  Restore OS  -      " "  Quit        -      ")
                            select opt in "${options[@]}"
                            do
                            	case $opt in
                            	"  Cloudflare  -      ")
                            		# check resolv.conf
                            		if [ ! -L $rsv_cnf ] ;
                            
                            		then
                            
                            			# -------------------- runs if resolv.conf is a file --------------------
                            
                            			# mount root in read/write mode
                            			mount -o remount,rw / ;
                            
                            			# add it Cloudflare servers
                            			echo -e "# Cloudflare servers" > $rsv_cnf ; echo -e "nameserver $CLF_one" >> $rsv_cnf ; echo -e "nameserver $CLF_two" >> $rsv_cnf ;
                            
                            			# remount root in read only mode
                            			mount -o remount,ro / ;
                            
                            			echo -e '\n Cloudflare DNS are set up !\n'
                            
                            			exit 0
                            
                            		else
                            
                            			# -------------------- runs if resolv.conf is a symbolic link --------------------
                            
                            			# mount root in read/write mode
                            			mount -o remount,rw / ;
                            
                            			# delete symbolic link
                            			rm /etc/resolv.conf ;
                            
                            			# create file
                            			touch /etc/resolv.conf ;
                            
                            			# add it Cloudflare servers
                            			echo -e "# Cloudflare servers" > $rsv_cnf ; echo -e "nameserver $CLF_one" >> $rsv_cnf ; echo -e "nameserver $CLF_two" >> $rsv_cnf ;
                            
                                                   # remount root in read only mode
                                                    mount -o remount,ro / ;
                            
                            			echo -e '\n Cloudflare DNS are set up !\n'
                            
                            			exit 0
                            
                            		fi
                            
                            		;;
                            
                            	"  OpenDNS     -      ")
                            		# check resolv.conf
                            		if [ ! -L $rsv_cnf ] ;
                            
                            		then
                            
                            			# -------------------- runs if resolv.conf is a file --------------------
                            
                            			# mount root in read/write mode
                            			mount -o remount,rw / ;
                            
                            			# add it Cloudflare servers
                            			echo -e "# OpenDNS servers" > $rsv_cnf ; echo -e "nameserver $OPE_one" >> $rsv_cnf ; echo -e "nameserver $OPE_two" >> $rsv_cnf ;
                            
                            			# remount root in read only mode
                            			mount -o remount,ro / ;
                            
                            			echo -e '\n OpenDNS servers are set up !\n'
                            
                            			exit 0
                            
                            		else
                            
                            			# -------------------- runs if resolv.conf is a symbolic link --------------------
                            
                            			# mount root in read/write mode
                            			mount -o remount,rw / ;
                            
                            			# delete symbolic link
                            			rm /etc/resolv.conf ;
                            
                            			# create file
                            			touch /etc/resolv.conf ;
                            
                            			# add it Cloudflare servers
                            			echo -e "# OpenDNS servers" > $rsv_cnf ; echo -e "nameserver $OPE_one" >> $rsv_cnf ; echo -e "nameserver $OPE_two" >> $rsv_cnf ;
                            
                                                   # remount root in read only mode
                                                    mount -o remount,ro / ;
                            
                            			echo -e '\n OpenDNS servers are set up !\n'
                            
                            			exit 0
                            
                            		fi
                            
                            		;;
                            
                            	"  Custom DNS  -      ")
                            		# check resolv.conf
                            		if [ ! -L $rsv_cnf ] ;
                            
                            		then
                            
                            			# -------------------- runs if resolv.conf is a file -------------------- 
                            
                            			# mount root in read/write mode
                            			mount -o remount,rw / ;
                            
                            			echo -e "# Custom DNS servers" > $rsv_cnf ; 
                            
                                                                    read -p " Type primary server : " priDN
                            
                            					echo -e "nameserver $priDN" >> $rsv_cnf ;
                            
                            					read -p " Type secondary server : " secDN
                            
                            					echo -e "nameserver $secDN" >> $rsv_cnf ;
                            
                            			# remount root in read only mode
                            			mount -o remount,ro / ;
                            
                            			echo -e '\n Custom DNS are set up !\n'
                            
                            			exit 0
                            
                            		else
                            
                            			# -------------------- runs if resolv.conf is a symbolic link --------------------
                            
                            			# mount root in read/write mode
                            			mount -o remount,rw / ;
                            
                            			# delete symbolic link
                            			rm /etc/resolv.conf ;
                            
                            			# create file
                            			touch /etc/resolv.conf ;
                            
                            			echo -e "# Custom DNS servers" > $rsv_cnf ;
                            
                                                                    read -p " Type primary server : " priDN
                            
                                                                    echo -e "nameserver $priDN" >> $rsv_cnf ;
                            
                                                                    read -p " Type secondary server : " secDN
                            
                                                                    echo -e "nameserver $secDN" >> $rsv_cnf ;
                            
                                                   # remount root in read only mode
                                                    mount -o remount,ro / ;
                            
                            			echo -e '\n Custom DNS are set up !\n'
                            
                            			exit 0
                            
                            		fi
                            
                            		;;
                            
                            	"  Restore OS  -      ")
                            			# mount root in read/write mode
                            			mount -o remount,rw / ;
                            
                            			# delete file
                            			rm /etc/resolv.conf ;
                            
                            			# recreate symbolic link
                            			ln -s /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf ;
                            
                                                   # remount root in read only mode
                                                    mount -o remount,ro / ;
                            
                            			echo -e '\n Default settings have been Restored !\n'
                            
                            			exit 0
                            
                            		;;
                                    "  Quit        -      ")
                            			echo -e '\n  - OS unchanged !\n'
                            
                            			break
                            		;;
                            			*) echo "invalid option $REPLY"
                            		;;
                                esac
                            done
                            
                            

                            (*) For example, if you want to set Google DNS servers enter 8.8.8.8 as primary server and 8.8.4.4 as secondary server.

                            ^

                            • Google Pixel 3a XL
                            • Xiaomi MI A2
                            D 1 Reply Last reply Reply Quote 2
                            • D Offline
                              domubpkm @Br1
                              last edited by

                              @Br1 Hello. is your OTA-2 work / procedure the same for OTA-3 ? Thanks again

                              1 Reply Last reply Reply Quote 0
                              • Br1B Offline
                                Br1
                                last edited by Br1

                                I can’t test ota 3 update, install at your own risk (*)

                                ^

                                • Google Pixel 3a XL
                                • Xiaomi MI A2
                                1 Reply Last reply Reply Quote 0
                                • Br1B Offline
                                  Br1
                                  last edited by

                                  OTA 3 Stable channel --- You can reinstall, no changes are necessary.

                                  ^

                                  • Google Pixel 3a XL
                                  • Xiaomi MI A2
                                  D 1 Reply Last reply Reply Quote 1
                                  • D Offline
                                    domubpkm @Br1
                                    last edited by

                                    @Br1 Done, it works as expected.

                                    1 Reply Last reply Reply Quote 0
                                    • D Offline
                                      domubpkm
                                      last edited by

                                      @Br1 I am on RC test OTA-4, it seems ok for me.

                                      1 Reply Last reply Reply Quote 0
                                      • D Offline
                                        domubpkm
                                        last edited by domubpkm

                                        @Br1

                                        New tests.

                                        I noted this:
                                        . Sometimes a reboot is necessary to get my carrier's DNS fully restored if I no longer want to use cloudflare dns. Just using the 'restore' option in the script is not enough.

                                        . When using cloudflare, in the list of cloudflare DNS servers, some are in the USA (Missouri). Is this normal ? Shouldn't cloudflare DNS all stay in its country of origin like I see with Firefox (all in France for me) ?

                                        Thank you to enlighten me.

                                        Br1B 1 Reply Last reply Reply Quote 0
                                        • Br1B Offline
                                          Br1 @domubpkm
                                          last edited by

                                          @domubpkm said in Change DNS servers, wifi and mobile data:

                                          Sometimes a reboot is necessary to get my carrier's DNS fully restored

                                          It could be caused by dns cache, after restoring try this :

                                          sudo resolvectl flush-caches
                                          

                                          if it works, I can add it to next version

                                          @domubpkm said in Change DNS servers, wifi and mobile data:

                                          Shouldn't cloudflare DNS all stay in its country of origin

                                          servers in 120+ countries ... I don’t know what criteria they use

                                          ^

                                          • Google Pixel 3a XL
                                          • Xiaomi MI A2
                                          D 1 Reply Last reply Reply Quote 0
                                          • D Offline
                                            domubpkm @Br1
                                            last edited by

                                            @Br1 said in Change DNS servers, wifi and mobile data:

                                            It could be caused by dns cache, after restoring try this :

                                            sudo resolvectl flush-caches

                                            Sorry, i can't confirm it works for me. A reboot is yet necessary.

                                            @Br1 said in Change DNS servers, wifi and mobile data:

                                            Shouldn't cloudflare DNS all stay in its country of origin

                                            servers in 120+ countries ... I don’t know what criteria they use

                                            When i did my precedent feedback, i was in RC TEST OTA-4. Now i am on 'real' OTA-4 and all cloudfare DNS are in my country. So for this, it's solved. 🤔 🙂

                                            1 Reply Last reply Reply Quote 0
                                            • Br1B Offline
                                              Br1
                                              last edited by

                                              --- New version (only an optimization) here, as reported by @domubpkm to restore the original dns servers reboot is required (added message).

                                              ^

                                              • Google Pixel 3a XL
                                              • Xiaomi MI A2
                                              1 Reply Last reply Reply Quote 0
                                              • Br1B Br1 referenced this topic on
                                              • First post
                                                Last post