Change Your DNS Server on Linux

Patrick Olen

a bunch of blue wires connected to each other

Changing your DNS server on Linux can speed up your internet browsing. DNS servers turn website names into IP addresses. Some DNS servers work faster than others. You can change your DNS server on Linux by editing a configuration file or using network management tools.

Linux gives users control over their DNS settings. This lets you pick faster or more secure DNS servers. Popular choices include Google DNS and Cloudflare DNS. These often work better than the default DNS from internet providers.

Changing your DNS server is easy on most Linux systems. The process differs slightly between distributions. Ubuntu users can change DNS through the Settings app. Other systems may need command line edits. With a new DNS server, web pages may load quicker.

Taking Control of Your DNS Settings in Linux

Understanding DNS and Why You Might Change It

  • DNS (Domain Name System) translates human-readable website names (like www.example.com) into IP addresses that computers understand.
  • Changing DNS Servers: You may want to change your DNS server for faster browsing speeds, better privacy, or to access content that might be restricted on your current network.

Common Methods to Change DNS on Linux

1. Editing /etc/resolv.conf (Temporary)

This is a quick way to change DNS, but the settings might be overwritten by network updates.

  • Open the file: sudo nano /etc/resolv.conf (or your preferred text editor)
  • Add nameserver lines: Replace existing nameserver lines with:
    • nameserver 8.8.8.8 (Google DNS)
    • nameserver 1.1.1.1 (Cloudflare DNS)
    • You can use other DNS servers you prefer.
  • Save and exit: Ctrl+X, then Y to save.
  • Apply changes: sudo systemctl restart systemd-resolved (or sudo /etc/init.d/networking restart on some systems)

2. Using NetworkManager (Persistent)

This method provides a more permanent solution, especially on desktop systems.

  • Open NetworkManager: Search for “Network” or similar in your system settings.
  • Edit connection: Go to your connection settings, usually by clicking on the network icon.
  • Find IPv4 or IPv6 settings: Look for the section related to IP settings.
  • Change DNS: Switch from “Automatic” to “Manual” and enter your desired DNS servers.
  • Save and apply: Save the changes and restart your network connection if needed.

3. Modifying Network Interface Configuration Files (Advanced)

For more fine-grained control, you can directly edit network interface configuration files.

  • Locate the file: Usually in /etc/network/interfaces or /etc/sysconfig/network-scripts/ifcfg-eth0 (replace eth0 with your interface name).
  • Add DNS lines: Add lines like dns-nameservers 8.8.8.8 1.1.1.1.
  • Restart networking: sudo systemctl restart networking (or the appropriate command for your system)

Choosing the Right DNS Server

DNS ServerProsCons
Google (8.8.8.8, 8.8.4.4)Fast, reliableSome privacy concerns
Cloudflare (1.1.1.1, 1.0.0.1)Focus on privacy, speedRelatively new
OpenDNS (208.67.222.222, 208.67.220.220)Customizable filtering optionsCan be slower than others
Quad9 (9.9.9.9, 149.112.112.112)Security-focused, blocks malicious domainsMight block legitimate sites

Remember

  • Always back up your configuration files before making changes.
  • Test your new DNS settings to make sure they’re working correctly.
  • Choose a DNS server that fits your needs and preferences.

Understanding DNS on Linux

DNS is a key part of how computers find websites on the internet. It turns web addresses into IP addresses that computers can use. Linux systems have ways to set up and change DNS settings.

What Is DNS

DNS stands for Domain Name System. It acts like a phone book for the internet. When you type a web address, DNS finds the right IP address for that site. This process happens fast, often in less than a second.

DNS servers hold lists of domain names and IP addresses. Your computer asks these servers to find the right IP for a website. Without DNS, you’d have to remember long strings of numbers instead of easy names.

How DNS Works

When you enter a web address, your computer first checks its own records. If it doesn’t know the IP, it asks a DNS server. This server might know the answer. If not, it asks other servers until it finds the right IP.

This process has several steps:

  1. Your computer checks its cache
  2. It asks your ISP’s DNS server
  3. The server searches or asks other servers
  4. The IP address is sent back to your computer

The whole lookup usually takes just milliseconds. Once found, your computer saves the IP for a while. This makes future visits to the site faster.

Linux System DNS Configuration

Linux lets you set up DNS in different ways. The main file for DNS settings is /etc/resolv.conf. This file lists the DNS servers your system uses. You can edit this file to change your DNS servers.

Many Linux systems now use newer tools to manage DNS. NetworkManager is common on desktop systems. It offers a GUI to change DNS settings. Server systems might use systemd-resolved or other tools.

To check your current DNS servers, you can use the nslookup command. Just type nslookup followed by a domain name. This shows which DNS server your system is using.

Different Linux distributions may handle DNS setup in their own ways. It’s good to check your specific system’s docs for the best method to change DNS.

Preparing to Change DNS Server

Before changing your DNS server on Linux, you need to check your current settings and choose a new server. These steps help you make an informed decision and avoid problems.

Checking Current DNS Settings

To see your current DNS settings on Linux, you can use the terminal. Open it and type the following command:

resolvectl status

This shows your DNS servers for each network connection. Write down these addresses in case you need to switch back later.

Another way to check is by looking at the resolv.conf file. Use this command:

cat /etc/resolv.conf

This file lists your DNS servers. The lines starting with “nameserver” show the IP addresses.

You can also use the dig command to test your DNS:

dig google.com

This tells you which DNS server answered the query and how long it took.

Selecting a DNS Server

When picking a new DNS server, think about speed and privacy. Some popular options are:

  • Google DNS: 8.8.8.8 and 8.8.4.4
  • Cloudflare: 1.1.1.1 and 1.0.0.1
  • OpenDNS: 208.67.222.222 and 208.67.220.220

You can test these servers to see which is fastest for you. Use the dig command like this:

dig @1.1.1.1 google.com

Replace 1.1.1.1 with each DNS server you want to try. Compare the query times to find the quickest one for your location.

Some DNS servers offer extra features like blocking malware or filtering content. Pick one that fits your needs and internet habits.

Methods to Change DNS Server

Linux users have several ways to change their DNS server. These methods range from using the command line to editing files or using a graphical interface.

Using the Command Line Interface (CLI)

The CLI offers a quick way to change DNS settings. Users can use the ‘resolvectl’ command to view current DNS servers:

resolvectl status

To change the DNS server, edit the network connection file:

sudo nano /etc/NetworkManager/system-connections/[connection-name]

Add these lines under the [ipv4] section:

dns=8.8.8.8;8.8.4.4
ignore-auto-dns=true

Replace 8.8.8.8 and 8.8.4.4 with your chosen DNS servers. Save the file and restart NetworkManager:

sudo systemctl restart NetworkManager

Editing resolv.conf File

The resolv.conf file stores DNS settings. To edit it:

  1. Open the file:
sudo nano /etc/resolv.conf
  1. Add new DNS servers:
nameserver 8.8.8.8
nameserver 8.8.4.4
  1. Save and exit the file.

Note: Some systems may overwrite this file. In such cases, edit the NetworkManager config instead.

Using a Graphical User Interface (GUI)

Many Linux distros offer a GUI for network settings. Here’s how to change DNS using it:

  1. Open System Settings or Network Manager.
  2. Click on your active network connection.
  3. Go to the IPv4 tab.
  4. Change “Method” to “Automatic (Addresses Only)”.
  5. In the DNS field, enter your new DNS servers.
  6. Click Apply to save changes.

This method is user-friendly and works well for those less comfortable with the command line.

Step-by-Step DNS Server Change

Changing DNS servers on Linux can improve internet speed and security. There are a few ways to do this depending on your system setup.

Change DNS Server via Terminal

To change DNS servers using the terminal:

  1. Open the terminal
  2. Edit the resolv.conf file:
    sudo nano /etc/resolv.conf

  3. Add new DNS server IPs:
    nameserver 8.8.8.8
    nameserver 8.8.4.4

  4. Save and exit

This change is temporary. To make it stick, edit the network config file instead. The location varies by distro.

On Ubuntu, edit /etc/network/interfaces:

dns-nameservers 8.8.8.8 8.8.4.4

Then restart networking:

sudo systemctl restart networking

Change DNS Server Using NetworkManager

Many Linux systems use NetworkManager. To change DNS with it:

  1. Click the network icon
  2. Select “Edit Connections”
  3. Choose your connection
  4. Go to IPv4 settings
  5. Set “Method” to “Automatic (DHCP) addresses only”
  6. Enter new DNS IPs in “DNS servers”
  7. Click “Save”

You can also use the command line:

nmcli con mod eth0 ipv4.dns "8.8.8.8 8.8.4.4"
nmcli con up eth0

Replace eth0 with your connection name.

Configure DNS Server in Netplan

Ubuntu and some other distros use Netplan. To change DNS in Netplan:

  1. Edit the yaml config file:


    sudo nano /etc/netplan/01-netcfg.yaml

  2. Add DNS servers:


    network:
    version: 2
    renderer: NetworkManager
    ethernets:
    eth0:
    dhcp4: yes
    nameservers:
    addresses: [8.8.8.8, 8.8.4.4]

  3. Apply changes:


    sudo netplan apply

This sets DNS for all connections. Adjust the yaml as needed for your setup.

Popular Public DNS Servers

Public DNS servers offer faster browsing speeds and better security than default ISP servers. These servers are free to use and easy to set up on Linux systems.

Google Public DNS

Google Public DNS is a well-known service that provides fast and secure DNS resolution. It uses the IP addresses 8.8.8.8 and 8.8.4.4.

Google’s DNS servers are:

  • Fast and reliable
  • Protected against DNS attacks
  • Privacy-focused (they don’t store personal info)

To use Google DNS on Linux, users can edit the resolv.conf file. This change can speed up web browsing and improve online security.

Google DNS also supports DNS-over-HTTPS for extra privacy. This feature encrypts DNS queries to protect user data.

Cloudflare DNS

Cloudflare DNS is another popular choice. It uses the easy-to-remember IP address 1.1.1.1.

Key features of Cloudflare DNS:

  • Very fast response times
  • Strong privacy protection
  • Built-in malware blocking

Cloudflare promises not to sell user data or use it for ads. They also delete all logs within 24 hours.

Linux users can set up Cloudflare DNS by changing network settings. This process varies slightly depending on the Linux distribution.

Cloudflare also offers a DNS app for mobile devices. This app makes it easy to use their DNS on phones and tablets.

OpenDNS

OpenDNS is a flexible DNS service with both free and paid options. It’s known for its content filtering and security features.

OpenDNS offers:

  • Phishing protection
  • Optional content filtering
  • Detailed usage stats

The free version of OpenDNS is called OpenDNS Home. It lets users block specific websites and set up custom filters.

To use OpenDNS on Linux, users need to update their network configuration. This usually involves editing system files or using a network manager tool.

OpenDNS is a good choice for families or businesses that want more control over internet access.

Quad9

Quad9 is a security-focused DNS service. It blocks access to malicious websites to protect users from cyber threats.

Quad9’s main features:

Quad9 uses the IP address 9.9.9.9, which is easy to remember. It’s run by a non-profit organization.

To set up Quad9 on Linux, users can modify their DNS settings. The exact steps depend on the Linux version being used.

Quad9 is a good option for users who want extra security without paying for a premium service.

Advanced DNS Configuration

Linux systems offer powerful tools for advanced DNS setup. These let you customize how your computer handles domain names and IP addresses.

Using dnsmasq for Local DNS

Dnsmasq is a lightweight DNS server that’s great for home networks. It can cache DNS queries to speed up browsing. To set it up:

  1. Install dnsmasq:


    sudo apt-get install dnsmasq

  2. Edit the config file:


    sudo nano /etc/dnsmasq.conf

  3. Add these lines:


    listen-address=127.0.0.1
    cache-size=1000

This tells dnsmasq to listen on localhost and cache 1000 DNS entries. Restart dnsmasq to apply changes:

sudo systemctl restart dnsmasq

Now your system will use dnsmasq for DNS lookups. This can make web browsing faster.

DNS Security Features with systemd-resolved

Systemd-resolved is a modern DNS resolver. It has built-in security features. To use it:

  1. Check if it’s running:


    systemctl status systemd-resolved

  2. If not, start it:


    sudo systemctl start systemd-resolved

  3. Enable DNSSEC:


    sudo nano /etc/systemd/resolved.conf

    Add this line:


    DNSSEC=true

  4. Restart the service:


    sudo systemctl restart systemd-resolved

DNSSEC helps protect against DNS spoofing attacks. It checks if DNS responses are real. This makes your browsing safer.

Troubleshooting DNS Issues

DNS problems can cause internet connectivity issues. Fixing these problems often involves checking settings and using tools to test DNS resolution.

Common DNS Configuration Errors

DNS configuration errors can lead to internet connection problems. A common mistake is using the wrong DNS server address. This can happen if you type the address incorrectly or use an outdated one.

To fix this, double-check the DNS server addresses in your network settings. Make sure they match the correct ones from your internet service provider or a public DNS service.

Another error is forgetting to save changes after updating DNS settings. Always save your changes and restart your network connection to apply them.

Misconfigured DNS settings can also cause issues. Check that your DNS configuration file has the right format and entries.

Using dig to Test DNS Resolution

The dig command is a helpful tool for testing DNS resolution on Linux. It can show if your DNS queries are working properly.

To use dig, open a terminal and type:

dig google.com

This will return information about google.com’s DNS records. Look for the “ANSWER SECTION” in the output. If you see IP addresses listed there, your DNS resolution is working.

You can also test specific DNS servers:

dig @8.8.8.8 google.com

This tests Google’s public DNS server (8.8.8.8). If it works but your default DNS doesn’t, you may need to update your DNS server settings.

Ensuring Persistent DNS Configuration

To make DNS changes stick after reboots, you need to update the right files. The exact steps depend on your Linux distribution.

For many systems, edit the /etc/resolv.conf file:

  1. Open the file with sudo privileges
  2. Add your preferred DNS servers
  3. Save and close the file

But some systems overwrite this file on reboot. In that case, you’ll need to change network configuration files instead.

Ubuntu and Debian users can edit /etc/network/interfaces. Red Hat and CentOS users should look at /etc/sysconfig/network-scripts/ifcfg-eth0.

Persistent DNS configuration ensures your chosen DNS servers are always used. This helps avoid future connectivity problems.

Optimizing DNS for Better Performance

Faster DNS lookups can speed up your internet browsing. Two key ways to boost DNS performance are caching and picking fast servers.

DNS Caching

DNS caching stores recent lookups to speed up future requests. Linux systems use a local DNS cache to remember IP addresses. This cuts down on repeat queries to external servers.

To enable DNS caching on Linux:

  1. Install a caching service like dnsmasq
  2. Configure it to run at startup
  3. Point your system to use it as the primary DNS server

Caching can greatly improve DNS speed for sites you visit often. The cache keeps common lookups quick and local.

Choosing DNS Servers for Speed

Picking fast DNS servers can boost browsing speed. Some public DNS options are faster than those from internet providers.

Top choices for speedy DNS servers:

  • Google Public DNS (8.8.8.8)
  • Cloudflare (1.1.1.1)
  • OpenDNS (208.67.222.222)

To switch DNS servers on Linux:

  1. Open network settings
  2. Find your connection
  3. Edit DNS server addresses

You can change DNS servers easily in most Linux systems. Try a few options to see which gives the best speed for your location.

Frequently Asked Questions

Linux users often have questions about DNS server configuration. Here are answers to some common queries about changing DNS settings on Linux systems.

How can I configure a DNS server in Ubuntu using the command line?

To set up a DNS server in Ubuntu via the command line, edit the /etc/resolv.conf file. Use a text editor like nano with sudo privileges. Add the line “nameserver x.x.x.x” where x.x.x.x is the IP of your chosen DNS server.

What is the process for setting a DNS server permanently on a Linux system?

To make DNS changes stick on Linux, edit the network configuration file. The exact file varies by distro. On Ubuntu, modify /etc/netplan/*.yaml. Add DNS server IPs under the nameservers section. Apply changes with “sudo netplan apply”.

Where is the DNS configuration file located in a Linux system?

The main DNS config file on Linux is /etc/resolv.conf. But this file often gets overwritten. For lasting changes, look for files in /etc/netplan/ or /etc/NetworkManager/system-connections/.

Can you provide a step-by-step guide for DNS server configuration on Linux?

  1. Open terminal
  2. Edit network config file (e.g. /etc/netplan/*.yaml)
  3. Add DNS server IPs
  4. Save the file
  5. Apply changes with “sudo netplan apply”
  6. Restart networking service

What is the procedure to check the current DNS settings in Linux?

To view current DNS settings on Linux, check the /etc/resolv.conf file. You can also use the “nmcli” command. Type “nmcli dev show | grep DNS” in the terminal to see active DNS servers.

How do I set a specific DNS server, for example, Google’s 8.8.8.8, on a Linux machine?

To use Google’s DNS (8.8.8.8) on Linux, edit the network settings. Open network connections, choose your connection, and edit IPv4 settings. Set method to “Automatic (DHCP) addresses only”. Enter 8.8.8.8 in the DNS servers field. Apply changes and restart networking.