Как изменить dns сервер linux

Ubuntu is an open source software operating system that runs from the desktop, to the cloud, to all your internet connected things.

Domain Name Service (DNS) is an Internet service that maps IP addresses and fully qualified domain names (FQDN) to one another. In this way, DNS alleviates the need to remember IP addresses. Computers that run DNS are called name servers. Ubuntu ships with BIND (Berkley Internet Naming Daemon), the most common program used for maintaining a name server on Linux.

Installation

At a terminal prompt, enter the following command to install dns:

sudo apt install bind9

A very useful package for testing and troubleshooting DNS issues is the dnsutils package. Very often these tools will be installed already, but to check and/or install dnsutils enter the following:

sudo apt install dnsutils

Configuration

There are many ways to configure BIND9. Some of the most common configurations are a caching nameserver, primary server, and secondary server.

  • When configured as a caching nameserver BIND9 will find the answer to name queries and remember the answer when the domain is queried again.

  • As a primary server, BIND9 reads the data for a zone from a file on its host and is authoritative for that zone.

  • As a secondary server, BIND9 gets the zone data from another nameserver that is authoritative for the zone.

Overview

The DNS configuration files are stored in the /etc/bind directory. The primary configuration file is /etc/bind/named.conf, which in the layout provided by the package just includes these files.

  • /etc/bind/named.conf.options: global DNS options
  • /etc/bind/named.conf.local: for your zones
  • /etc/bind/named.conf.default-zones: default zones such as localhost, its reverse, and the root hints

The root nameservers used to be described in the file /etc/bind/db.root. This is now provided instead by the /usr/share/dns/root.hints file shipped with the dns-root-data package, and is referenced in the named.conf.default-zones configuration file above.

It is possible to configure the same server to be a caching name server, primary, and secondary: it all depends on the zones it is serving. A server can be the Start of Authority (SOA) for one zone, while providing secondary service for another zone. All the while providing caching services for hosts on the local LAN.

Caching Nameserver

The default configuration acts as a caching server. Simply uncomment and edit /etc/bind/named.conf.options to set the IP addresses of your ISP’s DNS servers:

forwarders {
    1.2.3.4;
    5.6.7.8;
};

Note

Replace 1.2.3.4 and 5.6.7.8 with the IP Addresses of actual nameservers.

To enable the new configuration, restart the DNS server. From a terminal prompt:

sudo systemctl restart bind9.service

See dig for information on testing a caching DNS server.

Primary Server

In this section BIND9 will be configured as the Primary server for the domain example.com. Simply replace example.com with your FQDN (Fully Qualified Domain Name).

Forward Zone File

To add a DNS zone to BIND9, turning BIND9 into a Primary server, first edit /etc/bind/named.conf.local:

zone "example.com" {
    type master;
    file "/etc/bind/db.example.com";
};

Note

If bind will be receiving automatic updates to the file as with DDNS, then use /var/lib/bind/db.example.com rather than /etc/bind/db.example.com both here and in the copy command below.

Now use an existing zone file as a template to create the /etc/bind/db.example.com file:

sudo cp /etc/bind/db.local /etc/bind/db.example.com

Edit the new zone file /etc/bind/db.example.com and change localhost. to the FQDN of your server, leaving the additional . at the end. Change 127.0.0.1 to the nameserver’s IP Address and root.localhost to a valid email address, but with a . instead of the usual @ symbol, again leaving the . at the end. Change the comment to indicate the domain that this file is for.

Create an A record for the base domain, example.com. Also, create an A record for ns.example.com, the name server in this example:

;
; BIND data file for example.com
;
$TTL    604800
@       IN      SOA     example.com. root.example.com. (
                              2         ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                         604800 )       ; Negative Cache TTL

@       IN      NS      ns.example.com.
@       IN      A       192.168.1.10
@       IN      AAAA    ::1
ns      IN      A       192.168.1.10

You must increment the Serial Number every time you make changes to the zone file. If you make multiple changes before restarting BIND9, simply increment the Serial once.

Now, you can add DNS records to the bottom of the zone file. See Common Record Types for details.

Note

Many admins like to use the last date edited as the serial of a zone, such as 2020012100 which is yyyymmddss (where ss is the Serial Number)

Once you have made changes to the zone file BIND9 needs to be restarted for the changes to take effect:

sudo systemctl restart bind9.service

Reverse Zone File

Now that the zone is setup and resolving names to IP Addresses, a Reverse zone needs to be added to allows DNS to resolve an address to a name.

Edit /etc/bind/named.conf.local and add the following:

zone "1.168.192.in-addr.arpa" {
    type master;
    file "/etc/bind/db.192";
};

Note

Replace 1.168.192 with the first three octets of whatever network you are using. Also, name the zone file /etc/bind/db.192 appropriately. It should match the first octet of your network.

Now create the /etc/bind/db.192 file:

sudo cp /etc/bind/db.127 /etc/bind/db.192

Next edit /etc/bind/db.192 changing the same options as /etc/bind/db.example.com:

;
; BIND reverse data file for local 192.168.1.XXX net
;
$TTL    604800
@       IN      SOA     ns.example.com. root.example.com. (
                              2         ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                         604800 )       ; Negative Cache TTL
;
@       IN      NS      ns.
10      IN      PTR     ns.example.com.

The Serial Number in the Reverse zone needs to be incremented on each change as well. For each A record you configure in /etc/bind/db.example.com, that is for a different address, you need to create a PTR record in /etc/bind/db.192.

After creating the reverse zone file restart BIND9:

sudo systemctl restart bind9.service

Secondary Server

Once a Primary Server has been configured a Secondary Server is highly recommended in order to maintain the availability of the domain should the Primary become unavailable.

First, on the Primary server, the zone transfer needs to be allowed. Add the allow-transfer option to the example Forward and Reverse zone definitions in /etc/bind/named.conf.local:

zone "example.com" {
    type master;
    file "/etc/bind/db.example.com";
    allow-transfer { 192.168.1.11; };
};
    
zone "1.168.192.in-addr.arpa" {
    type master;
    file "/etc/bind/db.192";
    allow-transfer { 192.168.1.11; };
};

Note

Replace 192.168.1.11 with the IP Address of your Secondary nameserver.

Restart BIND9 on the Primary server:

sudo systemctl restart bind9.service

Next, on the Secondary server, install the bind9 package the same way as on the Primary. Then edit the /etc/bind/named.conf.local and add the following declarations for the Forward and Reverse zones:

zone "example.com" {
    type secondary;
    file "db.example.com";
    masters { 192.168.1.10; };
};        
          
zone "1.168.192.in-addr.arpa" {
    type secondary;
    file "db.192";
    masters { 192.168.1.10; };
};

Note

Replace 192.168.1.10 with the IP Address of your Primary nameserver.

Restart BIND9 on the Secondary server:

sudo systemctl restart bind9.service

In /var/log/syslog you should see something similar to the following (some lines have been split to fit the format of this document):

client 192.168.1.10#39448: received notify for zone '1.168.192.in-addr.arpa'
zone 1.168.192.in-addr.arpa/IN: Transfer started.
transfer of '100.18.172.in-addr.arpa/IN' from 192.168.1.10#53:
 connected using 192.168.1.11#37531
zone 1.168.192.in-addr.arpa/IN: transferred serial 5
transfer of '100.18.172.in-addr.arpa/IN' from 192.168.1.10#53:
 Transfer completed: 1 messages, 
6 records, 212 bytes, 0.002 secs (106000 bytes/sec)
zone 1.168.192.in-addr.arpa/IN: sending notifies (serial 5)

client 192.168.1.10#20329: received notify for zone 'example.com'
zone example.com/IN: Transfer started.
transfer of 'example.com/IN' from 192.168.1.10#53: connected using 192.168.1.11#38577
zone example.com/IN: transferred serial 5
transfer of 'example.com/IN' from 192.168.1.10#53: Transfer completed: 1 messages, 
8 records, 225 bytes, 0.002 secs (112500 bytes/sec)

Note

Note: A zone is only transferred if the Serial Number on the Primary is larger than the one on the Secondary. If you want to have your Primary DNS notifying other Secondary DNS Servers of zone changes, you can add also-notify { ipaddress; }; to /etc/bind/named.conf.local as shown in the example below:

zone "example.com" {
    type master;
    file "/etc/bind/db.example.com";
    allow-transfer { 192.168.1.11; };
    also-notify { 192.168.1.11; }; 
};

zone "1.168.192.in-addr.arpa" {
    type master;
    file "/etc/bind/db.192";
    allow-transfer { 192.168.1.11; };
    also-notify { 192.168.1.11; }; 
};
    

Note

The default directory for non-authoritative zone files is /var/cache/bind/. This directory is also configured in AppArmor to allow the named daemon to write to it. For more information on AppArmor see Security — AppArmor.

Troubleshooting

This section covers diagnosing problems with DNS and BIND9 configurations.

Testing

resolv.conf

The first step in testing BIND9 is to add the nameserver’s IP Address to a hosts resolver. The Primary nameserver should be configured as well as another host to double check things. Refer to DNS client configuration for details on adding nameserver addresses to your network clients. In the end your nameserver line in /etc/resolv.conf should be pointing at 127.0.0.53 and you should have a search parameter for your domain. Something like this:

nameserver  127.0.0.53
search example.com

To check which DNS server your local resolver is using, run:

systemd-resolve --status

Note

You should also add the IP Address of the Secondary nameserver to your client configuration in case the Primary becomes unavailable.

dig

If you installed the dnsutils package you can test your setup using the DNS lookup utility dig:

  • After installing BIND9 use dig against the loopback interface to make sure it is listening on port 53. From a terminal prompt:

    dig -x 127.0.0.1
    

    You should see lines similar to the following in the command output:

    ;; Query time: 1 msec
    ;; SERVER: 192.168.1.10#53(192.168.1.10)
    
  • If you have configured BIND9 as a Caching nameserver “dig” an outside domain to check the query time:

    dig ubuntu.com
    

    Note the query time toward the end of the command output:

    ;; Query time: 49 msec
    

    After a second dig there should be improvement:

    ;; Query time: 1 msec
    

ping

Now to demonstrate how applications make use of DNS to resolve a host name use the ping utility to send an ICMP echo request:

ping example.com

This tests if the nameserver can resolve the name ns.example.com to an IP Address. The command output should resemble:

PING ns.example.com (192.168.1.10) 56(84) bytes of data.
64 bytes from 192.168.1.10: icmp_seq=1 ttl=64 time=0.800 ms
64 bytes from 192.168.1.10: icmp_seq=2 ttl=64 time=0.813 ms

named-checkzone

A great way to test your zone files is by using the named-checkzone utility installed with the bind9 package. This utility allows you to make sure the configuration is correct before restarting BIND9 and making the changes live.

  • To test our example Forward zone file enter the following from a command prompt:

    named-checkzone example.com /etc/bind/db.example.com
    

    If everything is configured correctly you should see output similar to:

    zone example.com/IN: loaded serial 6
    OK
    
  • Similarly, to test the Reverse zone file enter the following:

    named-checkzone 1.168.192.in-addr.arpa /etc/bind/db.192
    

    The output should be similar to:

    zone 1.168.192.in-addr.arpa/IN: loaded serial 3
    OK
    

Note

The Serial Number of your zone file will probably be different.

Quick temporary query logging

With the rndc tool, you can quickly turn query logging on and off, without restarting the service or changing the configuration file.

To turn query logging on, run:

sudo rndc querylog on

Likewise, to turn it off, run:

sudo rndc querylog off

The logs will be sent to syslog and will show up in /var/log/syslog by default:

Jan 20 19:40:50 new-n1 named[816]: received control channel command 'querylog on'
Jan 20 19:40:50 new-n1 named[816]: query logging is now on
Jan 20 19:40:57 new-n1 named[816]: client @0x7f48ec101480 192.168.1.10#36139 (ubuntu.com): query: ubuntu.com IN A +E(0)K (192.168.1.10)

Note

The amount of logs generated by enabling querylog could be huge!

Logging

BIND9 has a wide variety of logging configuration options available, but the two main ones are channel and category, which configure where logs go, and what information gets logged, respectively.

If no logging options are configured the default configuration is:

logging {
     category default { default_syslog; default_debug; };
     category unmatched { null; };
};

Let’s instead configure BIND9 to send debug messages related to DNS queries to a separate file.

We need to configure a channel to specify which file to send the messages to, and a category. In this example, the category will log all queries. Edit /etc/bind/named.conf.local and add the following:

logging {
    channel query.log {
        file "/var/log/named/query.log";
        severity debug 3;
    };
    category queries { query.log; };
};

Note

The debug option can be set from 1 to 3. If a level isn’t specified, level 1 is the default.

  • Since the named daemon runs as the bind user the /var/log/named directory must be created and the ownership changed:

    sudo mkdir /var/log/named
    sudo chown bind:bind /var/log/named
    
  • Now restart BIND9 for the changes to take effect:

    sudo systemctl restart bind9.service
    

You should see the file /var/log/named/query.log fill with query information. This is a simple example of the BIND9 logging options. For coverage of advanced options see More Information.

References

Common Record Types

This section covers some of the most common DNS record types.

  • A record: This record maps an IP Address to a hostname.

    www      IN    A      192.168.1.12
    
  • CNAME record: Used to create an alias to an existing A record. You cannot create a CNAME record pointing to another CNAME record.

    web     IN    CNAME  www
    
  • MX record: Used to define where email should be sent to. Must point to an A record, not a CNAME.

    @       IN    MX  1   mail.example.com.
    mail    IN    A       192.168.1.13
    
  • NS record: Used to define which servers serve copies of a zone. It must point to an A record, not a CNAME. This is where Primary and Secondary servers are defined.

    @       IN    NS     ns.example.com.
    @       IN    NS     ns2.example.com.
    ns      IN    A      192.168.1.10
    ns2     IN    A      192.168.1.11
    

More Information

  • Upstream BIND9 Documentation

  • DNS and BIND is a popular book now in it’s fifth edition. There is now also a DNS and BIND on IPv6 book.

  • A great place to ask for BIND9 assistance, and get involved with the Ubuntu Server community, is the #ubuntu-server IRC channel on freenode.

В статье мы расскажем, как изменить настройки DNS-серверов на популярных ОС: Ubuntu, Debian, Centos и Windows Server.

Самые распространённые причины смены DNS-серверов:

  • увеличение скорости загрузки сайта в браузере,
  • настройка родительского контроля (чтобы дети не просматривали нежелательный контент),
  • защита от фишинга и другие.

Ubuntu 18.04

Изменить DNS-серверы поможет служба netplan. С её помощью нужно отредактировать её конфигурационный файл 01-netcfg.yaml.

Чтобы внести изменения:

  1. 1.

    Подключитесь к серверу по SSH.

  2. 2.

    Откройте файл 01-netcfg.yaml:

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

    Примерное содержимое файла:

    network:
    
      ethernets:
    
        eth0:
          addresses:
          - 123.123.123.123/24
            - 2002:7b7b:7b7b:0:0:0:0:0/64
    
            gateway4: 123.123.123.123
    
            gateway6: 2002:7b7b:7b7b:0:0:0:0:0
    
          nameservers:
            addresses:
            - 1.1.1.1
            - 1.0.0.1
      renderer: networkd
      version: 2
  3. 3.

    В блоке «nameservers» измените адреса DNS:

    nameservers:
                addresses:
                - 8.8.8.8
                - 8.8.4.4

    Вместо 8.8.8.8 и 8.8.4.4 укажите свои IP-адреса.

  4. 4.

    Нажмите Ctrl + O, чтобы сохранить изменения. Закройте файл с помощью комбинации Ctrl + X.

  5. 5.

    Примените изменения командой:

  6. 6.

    Проверьте, работают ли DNS-серверы:

    systemd-resolve --status | grep 'DNS Servers' -A2

    Если настройка прошла корректно, команда покажет следующий вывод:

    DNS Servers: 8.8.8.8
                 8.8.4.4

    Вместо 8.8.8.8 и 8.8.4.4 будут указаны ваши IP-адреса.

Ubuntu 20.04/Debian

Чтобы сменить DNS-серверы:

  1. 1.

    Подключитесь к серверу по SSH.

  2. 2.

    Откройте файл resolv.conf:

    sudo nano /etc/systemd/resolved.conf
  3. 3.

    В строке «DNS» добавьте IP-адреса DNS-серверов:

    Вместо 8.8.8.8 и 8.8.4.4 укажите свои IP-адреса.

  4. 4.

    Нажмите Ctrl + O, чтобы сохранить изменения. Закройте файл с помощью комбинации Ctrl + X.

  5. 5.

    Примените изменения командой:

    sudo systemctl restart systemd-resolved
  6. 6.

    Проверьте, работают ли преобразователи:

    systemd-resolve --status | grep 'DNS Servers' -A2

    Если настройка прошла корректно, команда покажет следующий вывод:

    DNS Servers: 8.8.8.8
                 8.8.4.4

    Вместо 8.8.8.8 и 8.8.4.4 будут указаны ваши IP-адреса.

CentOS

Чтобы сменить DNS-серверы:

  1. 1.

    Подключитесь к серверу по SSH.

  2. 2.

    Выполните команду:

    В консоли отобразится вывод:

    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state
            UNKNOWN group default qlen 1000
                link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
                 inet 127.0.0.1/8 scope host lo
                    valid_lft forever preferred_lft
            forever
                inet6 ::1/128 scope host
                   valid_lft forever preferred_lft
            forever
    2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast
            state UP group default qlen 1000
                link/ether 2002:7b7b:7b7b:0:0:0:0:0
                inet 123.123.123.123/24 brd 123.123.123.255
            scope global eth0
                   valid_lft forever preferred_lft
            forever
                inet6 2002:7b7b:7b7b:0:0:0:0:0/64 scope global
                   valid_lft forever preferred_lft
            forever
                inet6 2002:7b7b:7b7b:0:0:0:0:0/64 scope link
                   valid_lft forever preferred_lft
            forever
    3: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN
            group default qlen 1000
                link/ether 52:54:00:e4:b4:cc brd ff:ff:ff:ff:ff:ff

    Слева от значения <BROADCAST,MULTICAST,UP,LOWER_UP> отображается параметр, который отвечает за название конфигурационного файла (в нашем примере это eth0). Его название будет отличаться в зависимости от настроек.

  3. 3.

    Откройте файл конфигурации:

    sudo nano /etc/sysconfig/network-scripts/ifcfg-eth0

    Вместо eth0 укажите название вашего конфигурационного файла.

    На экране отобразится содержимое файла:

    NAME="eno1"
    ONBOOT=yes
    BOOTPROTO=static
    HWADDR="2002:7b7b:7b7b:0:0:0:0:0"
    IPADDR="123.123.123.123"
    NETMASK="255.255.255.0"
    GATEWAY="123.123.123.123"
    TYPE=Ethernet
    DEVICE=eth0
    BOOTPROTO=none
    ONBOOT=yes
    IPADDR=123.123.123.123
    PREFIX=24
    GATEWAY=123.123.123.123
    DNS1=1.1.1.1
    DNS2=1.0.0.1
    IPV6INIT=yes
    IPV6ADDR=2002:7b7b:7b7b:0:0:0:0:0::3f9d/64
    IPV6_DEFAULTGW=2002:7b7b:7b7b:0:0:0:0:0
  4. 4.

    Измените IP-адреса в строках:

    DNS1="8.8.8.8"
    DNS2="8.8.4.4"

    Вместо 8.8.8.8 и 8.8.4.4 будут указаны ваши IP-адреса. Если вам нужно добавить дополнительные DNS-серверы, добавьте их на следующих строках как DNS3 и DNS4.

  5. 5.

    Нажмите Ctrl + O, чтобы сохранить изменения. Закройте файл с помощью комбинации Ctrl + X.

  6. 6.

    Примените изменения командой:

    systemctl restart network
  7. 7.

    Проверьте, работают ли преобразователи:

    Если настройка прошла корректно, команда покажет следующий вывод:

    ; generated by /usr/sbin/dhclient-script
          search localdomain
          nameserver 8.8.8.8
          nameserver 8.8.4.4

    Вместо 8.8.8.8 и 8.8.4.4 будут указаны ваши IP-адреса.

Windows

Чтобы сменить DNS-серверы:

  1. 1.

    Подключитесь к серверу по RDP.

  2. 2.

    Откройте окно Выполнить. Для этого нажмите сочетание клавиш Win + R.

  3. 3.

    Введите ncpa.cpl и нажмите OK:

  4. 4.

    Правой кнопкой мыши кликните по названию соединения и выберите Свойства:

  5. 5.

    Кликните по строке IP версии 4 (TCP/IPv4) и нажмите Свойства:

  6. 6.

    Отметьте пункт Использовать следующие адреса DNS-серверов. Укажите IP-адреса и кликните OK:

  7. 7.

    Откройте приложение PowerShell и выполните команду:

    В последней строке вывода отобразятся новые адреса DNS-серверов:

    DNS-серверы. . . . . . . . . . . : 8.8.8.8
                                       8.8.4.4

Introduction

The Domain Name System (DNS) translates text-based domain names to numeric IP addresses. By default, most networks are configured to work with DNS servers supplied by the internet service provider. However, users are free to change the DNS nameservers.

This tutorial will show you how to change DNS nameservers on your Ubuntu machine using GUI or the command line.

How to Set DNS Nameserver on Ubuntu 20.04

Prerequisites

  • Ubuntu 20.04 (both methods also work on Ubuntu 18.04 and later)
  • Access to the terminal
  • Sudo privileges

Change DNS Nameserver via GUI

Use Ubuntu Settings to complete all the steps to change DNS addresses via the graphical user interface.

1. Launch Settings and click the Network tab in the menu on the left.

2. Click the cogwheel next to the connection you wish to set up.

Finding network settings for a specific network in Ubuntu

Note: To change the settings for a wireless connection, select the Wi-Fi tab, choose a wireless network and proceed with the steps below.

3. Go to the IPv4 tab.

4. Disable automatic DNS configuration by turning off the switch next to the DNS field.

5. Type new DNS addresses in the field. The example shows Google’s public DNS nameservers.

6. Click Apply.

Configuring and applying new DNS settings in Ubuntu

The system is now configured to work with the new DNS servers.

Note: If you wish to set up IPv6 nameservers, go to the IPv6 tab and enter them there. The IPv6 address format is different from IPv4. For example, Google’s IPv6 DNS servers are: 2001:4860:4860::8888 and 2001:4860:4860::8844.

Change DNS Nameserver via Config File

If you do not use a GUI, change DNS settings with the command line Netplan tool.

1. Go to the Netplan directory:

cd /etc/netplan

2. List the directory contents with ls to see the name of the yaml file containing network configuration.

Checking the /etc/netplan folder contents

Open the file in a text editor. Your file may have a different name.

sudo nano 01-network-manager.yaml

Ethernet connections are listed in the ethernets section of the file. If there are any wireless connections, you can find them in the wifis section. Netplan stores the current DNS configuration parameters in nameservers subsections of each section.

Editing the yaml file in /etc/netplan using nano

Replace the addresses located in the file with the DNS addresses you want to use. You can enter more than two addresses. Save the changes and exit.

Note: The file on your system may lack the entire ethernets or wifis section. In that case, add the lines that are missing, making sure you respect the indentation provided in the example.

3. Apply the changes you made in the config file:

sudo netplan apply

If the operation is successful, there is no output. To check if the system successfully applied the changes, type:

systemd-resolve --status | grep 'DNS Servers' -A2

The output lists your current DNS servers:

Confirming the successful configuration of new DNS nameservers using the resolvectl command

Why Change DNS Nameserver on Ubuntu?

In most cases, your default DNS settings offer optimal performance. However, there are scenarios in which you should consider switching to a third-party DNS provider:

  • Large companies with better infrastructure are usually more capable of providing uninterrupted DNS service. If your ISP is unreliable and you experience frequent downtimes, switching the DNS provider may be the solution.
  • Third-party DNS servers can be faster than those provided to you by your ISP.

Note: Since latency is the primary consideration for DNS, a fast third-party server located far away may provide inferior service to a slower one that is closer to you.

  • Some DNS providers offer filters that prevent phishing sites from reaching your computer. The same mechanism is also used to block sensitive content on the internet. Businesses often employ this DNS feature.
  • Internet Service Providers sometimes block content on the DNS level, so switching to another DNS nameserver may help you access some geo-restricted websites.

Conclusion

This tutorial showed you how to set your DNS nameservers on Ubuntu, either using a graphical user interface or the command line.

To learn more about DNS, read What Is a Domain Name System & How Does it Work?

Содержание

  • Настраиваем DNS в Linux
    • Способ 1: Меню графической оболочки
    • Способ 2: Редактирование конфигурационных файлов
  • Вопросы и ответы

Настройка DNS в Linux

Каждый сайт, устройство или определенное расположение имеет собственный IP-адрес, определяющийся оборудованием при обращении к сетям и взаимодействии с ними. Пользователи, которые сталкиваются с необходимостью, например, перехода по сайтам или подключения к другому сетевому компьютеру, тоже должны вводить соответствующий адрес для успешного обмена информацией. Однако запомнить случайный набор цифр довольно сложно. Именно поэтому и была придумана система доменных имен DNS (Domain Name System). Теперь компьютер самостоятельно обращается к серверу для определения IP-адреса при указании доменного имени во время перехода к ресурсу. Такие сервера указываются автоматически или вручную, что зависит от типа конфигурации. Именно об этом процессе мы и хотим поговорить в рамках сегодняшнего материала, взяв за пример известный дистрибутив операционной системы Linux.

Практически все дистрибутивы Linux функционируют по похожему принципу. Отличаются лишь некоторые консольные команды и оформление графической оболочки. В качестве примера мы рассмотрим Ubuntu, а вы, отталкиваясь от особенностей своей сборки, тоже сможете без проблем выполнить поставленную задачу. Если трудности возникнут на уровне использования определенных команд или при поиске пунктов меню графической среды, воспользуйтесь официальной документацией дистрибутива, чтобы узнать, какая альтернативная команда или опция отвечает за осуществление нужного действия.

Способ 1: Меню графической оболочки

Этот способ в первую очередь нацелен на начинающих пользователей, поскольку чаще всего в Linux их пугает необходимость выполнять каждое действие, вводя команды в консоль. Уже давно практически во всех окружениях присутствуют соответствующие пункты, позволяющие реализовывать различные конфигурации без единого обращения к «Терминалу». К DNS это тоже относится. Давайте посмотрим, как производится данное редактирование в стандартной графической оболочке Ubuntu.

  1. Обратите внимание на верхнюю панель, где присутствует кнопка сети и выключения компьютера. Нажмите по одной из них, чтобы просмотреть список подключений.
  2. Открытие панели задач для перехода к конфигурации сети при настройке DNS в Linux

  3. Здесь вас интересует кнопка под названием «Параметры соединения».
  4. Переход к конфигурации сети для изменения параметров DNS в Linux

  5. В открывшемся меню отыщите текущее соединение и нажмите по значку в виде шестеренки, чтобы перейти к конфигурации.
  6. Выбор сети из списка для изменения параметров DNS в Linux

  7. Если вы хотите узнать свой адрес DNS, просто посмотрите на специально отведенную строку на вкладке «Сведения о системе». Для настройки получения DNS переместитесь на вкладку «IPv4» или «IPv6», воспользовавшись верхней панелью.
  8. Просмотр адреса маршрутизатора и переход к настройке DNS в Linux

  9. В строке «Метод» вы можете указать оптимальный для вас способ получения DNS. По умолчанию используется автоматический тип через DHCP. Однако ничего не мешает вам просто отметить маркером один из остальных присутствующих пунктов.
  10. Установка стандартных параметров DNS в Linux через графический интерфейс

  11. Вы можете самостоятельно прописать серверы DNS, к которым следует обращаться вашему маршрутизатору. Для этого в строке «DNS» через запятую укажите IP-адреса. На скриншоте ниже вы видите серверы от Google, и выглядят они так: 8.8.8.8 и 8.8.4.4.
  12. Ручной ввод нового сервера получения DNS в Linux через графическую оболочку

  13. По завершении конфигурации убедитесь в том, что все выставлено правильно, и только потом кликните на «Применить».
  14. Применение изменений после настройки DNS в Linux в графическом интерфейсе

  15. Если возникла надобность создания нового типа подключения, то вы можете сразу же прописать настройки DNS точно таким же образом, как это было показано только что.
  16. Настройка DNS в Linux при создании новой сети

  17. По окончании конфигурации откройте главное меню и запустите «Терминал» для проверки.
  18. Переход к Терминалу для проверки изменений после настройки DNS в Linux

  19. Введите nslookup, а затем укажите необходимый адрес для проверки, например, google.com.
  20. Ввод команды для пропингови сервера после изменения DNS в Linux

  21. После нажатия на Enter подождите несколько секунд и ознакомьтесь с полученной информацией. Вы будете уведомлены о том, какой именно DNS-сервер использовался при пропинговке адреса.
  22. Просмотр полученных DNS в Linux через пропинговку в Терминале

    Lumpics.ru

Как видите, этот метод максимально прост и позволяет обойтись без редактирования конфигурационных файлов через консоль. Однако некоторые пользователи не имеют возможности задействовать графический интерфейс или же настройка постоянно сбивается. В таком случае придется обращаться к «Терминалу», чему и будет посвящен наш следующий метод.

Способ 2: Редактирование конфигурационных файлов

Использование «Терминала» для редактирования конфигурационных файлов при изменении системных параметров — самый эффективный способ, поскольку все действия здесь будут осуществляться от имени суперпользователя, а также не сбросятся при первом же перезапуске системы. Для конфигурации DNS используйте следующую инструкцию.

  1. Запустите консоль так, как это было показано ранее, или используйте любой удобный способ, например, созданный значок на панели «Избранное».
  2. Запуск терминала через избранное для настройки DNS в Linux

  3. Для начала просмотрите список существующих сетевых интерфейсов, чтобы проверить файл для конфигурации. Введите ls /sys/class/net/ и нажмите на Enter.
  4. Команда для просмотра названий сети при настройке DNS в Linux

  5. Проверьте, присутствует ли здесь ваше название интерфейса. По умолчанию оно выглядит так: enp0s3. В случае отсутствия подобной строки придется добавить ее самостоятельно, чему и будут посвящены следующие шаги. Пропустите их, если имя присутствует.
  6. Просмотр текущего названия сети при конфигурации DNS в Linux

  7. Далее дело будет касаться взаимодействия с конфигурационными текстовыми файлами. Для этого вы можете использовать любой редактор, установленный по умолчанию, например, vi. Однако начинающим юзерам не всегда удобно управлять подобным софтом. В таких ситуациях мы советуем установить более подходящее решение. Пропишите sudo apt install nano и нажмите на Enter.
  8. Установка нового текстового редактора для дальнейшей конфигурации DNS в Linux

  9. Подтвердите свои намерения добавить софт, а после успешной инсталляции переходите к работе с файлами. Введите команду sudo nano /etc/network/interfaces и затем подтвердите ее.
  10. Открытие конфигурационного файла для ввода имени сети при настройке DNS в Linux

  11. Вставьте строки auto enp0s3 и iface enp0s3 inet dhcp, чтобы задать конфигурацию интерфейса.
  12. Ввод имени сети и стандартного DNS в Linux через конфигурационнй файл

  13. Используйте комбинацию Ctrl + O для сохранения настроек. В будущем запомните, что знак ^ обозначает Ctrl, то есть, например, выход из редактора осуществляется через Ctrl + X.
  14. Сохранение изменений и выход из текстового редактора при настройке DNS в Linux

  15. При сохранении не изменяйте имя файла для записи, а просто нажимайте на Enter.
  16. Сохранение имени файла при настройке DNS в Linux

  17. Следом в этом же файле введите dns-nameserver 8.8.8.8 для установки DNS от Google, и уже после этого можете закрыть данный объект.
  18. Команда для определения DNS в первом конфигурационном файле Линукс

  19. Далее понадобится настроить другой элемент, перейдите к нему через sudo nano /etc/dhcp/dhclient.conf.
  20. Переход к конфигурации второго файла для изменения DNS в Linux

  21. При запросе пароля суперпользователя введите его. Учтите, что символы при таком методе набора не отображаются в целях безопасности.
  22. Ввод пароля суперпользователя для доступа к файлу при настройке DNS в Linux

  23. Опуститесь в самый низ по содержимому и вставьте строку supersede domain-name-servers 8.8.8.8. Затем сохраните изменения и закройте файл.
  24. Вставка команды для второго конфигурационного файла DNS в Linux

  25. Осталось отредактировать последние параметры в sudo nano /etc/resolvconf/resolv.conf.d/base.
  26. Запуск третьего конфигурационного файла DNS в Linux

  27. Вставьте строку nameserver 8.8.8.8, определяющую DNS. Перед выходом не забудьте применить изменения в этом же файле.
  28. Изменение третьего конфиуграционного файла DNS в Linux

  29. Все изменения DNS вступят в силу сразу же после перезагрузки сети. Осуществляется это командой sudo systemctl restart networking.
  30. Перезапуск сети после изменений DNS в Linux

  31. Появившаяся пустая строка для ввода означает, что перезапуск прошел успешно.
  32. Успешный перезапуск сети после изменений настроек DNS в Linux

Конечно, использовать второй способ гораздо сложнее первого, однако это единственная альтернатива, которая оказывается эффективной в тех случаях, когда изменения DNS через графическую оболочку не приносят никаких результатов из-за постоянного сброса настроек. Вам достаточно просто следовать инструкциям, точно выполняя их для правильной конфигурации, и вы справитесь с редактированием параметров получения доменных имен.

Еще статьи по данной теме:

Помогла ли Вам статья?

Сервера DNS используются системой для преобразования сложных для запоминания IP адресов в простые доменные имена. Это делается потому что людям сложно запоминать несколько никак не связанных цифр, но очень просто запомнить слово.

Когда компьютеру нужно узнать IP адрес какого-либо домена, он отправляет запрос известному ему DNS серверу. Эти сервера могут быть получены автоматически от роутера по DHCP или же заданы в ручную. В этой статье мы рассмотрим как выполняется настройка DNS Ubuntu 16.04 и более старых версиях.

Раньше, для настройки DNS серверов, которые будут использоваться системой было достаточно внести адреса нужных серверов в файл /etc/resolv.conf. Но сейчас всей конфигурацией сети в Ubuntu управляет NetworkManager, а этот файл теперь представляет собой только ссылку на файл NetworkManager.

Этот способ до сих пор работает, но в нем вы можете настроить DNS на LiveCD, или до перезагрузки. После перезагрузки все настройки собьются и придется все делать заново. Поэтому, чтобы все сохранилось нужно выполнять все действия через интерфейс NetworkManager. Сначала откройте контекстное меню для значка сети на панели и выберите «Изменить подключения»:

Выберите ваше подключение и нажмите «Изменить»:

В открывшемся окне перейдите на вкладку «Параметры IPv4»:

Затем, в поле «Способ настройки» выберите «Автоматически (DHCP, только адрес)»:

Теперь немного ниже появиться поле «Серверы DNS», где вам нужно прописать нужные серверы, можно несколько адресов через запятую. Например, можно указать сервера от Google:

Поле этого нажмите «Сохранить» и «Закрыть». Теперь можете переподключитесь к этому соединению и можете проверять текущий DNS сервер:

nslookup ya.ru

Собственно, это все, но есть еще один способ настройки через консоль, если этот не сработал или вы предпочитаете работать из консоли.

Настройка DNS через терминал Ubuntu

В Ubuntu есть унифицированный интерфейс настройки сети, который настраивается через конфигурационный файл /etc/network/interfaces. Сначала смотрим список сетевых интерфейсов:

ls /sys/class/net/

Откройте файл для редактирования и найдите в нем имя своего сетевого интерфейса, например, auto enp0s3, если такой секции нет, ее нужно добавить:

sudo vi /etc/network/interfaces

auto enp0s3
iface enp0s3 inet dhcp

Затем, добавьте в эту секцию строчку:

dns-nameserver 8.8.8.8

Здесь адрес 8.8.8.8 — это адрес вашего DNS сервера. Но эта настройка сработает, только если ваш DHCP клиент не пытается назначить адрес самостоятельно. Чтобы указать DNS адрес на уровне DHCP сервера нужно добавить такую строчку в конфигурационный файл /etc/dhcp/dhclient.conf:

sudo vi /etc/dhcp/dhclient.conf

supersede domain-name-servers 8.8.8.8

Здесь тоже адрес 8.8.8.8 означает адрес DNS сервера. Для верности, вы можете добавить свои адреса DNS серверов в файл /etc/resolvconf/resolv.conf.d/base:

sudo vi /etc/resolvconf/resolv.conf.d/base

nameserver 8.8.8.8

Чтобы настройки вступили в силу необходимо перезапустить сеть:

sudo systemctl restart networking

Возможно, даже лучше будет если вы полностью перезагрузите компьютер. Теперь вы можете открыть /etc/resolv.conf и посмотреть применялся ли новый адрес DNS:

Как видите, в моем примере все заработало. Подобно этому выполняется настройка dns linux для любого дистрибутива.

Выводы

В этой небольшой статье мы рассмотрели как выполняется настройка DNS Ubuntu 16.04 через графический интерфейс или терминал. В Ubuntu автоматической настройкой DNS могут заниматься множество утилит и это создает некоторые проблемы при настройке, но со всем можно разобраться. Надеюсь, эта информация была полезной для вас.

Creative Commons License

Статья распространяется под лицензией Creative Commons ShareAlike 4.0 при копировании материала ссылка на источник обязательна .

Об авторе

Основатель и администратор сайта losst.ru, увлекаюсь открытым программным обеспечением и операционной системой Linux. В качестве основной ОС сейчас использую Ubuntu. Кроме Linux, интересуюсь всем, что связано с информационными технологиями и современной наукой.

I know there are other posts here asking this, but those suggestions do not help, the configuration keeps changing and I simply cannot get my own changes to persist.

I have the Google 8.8.8.8 and 8.8.4.4 servers in my Network Manager configuration in the GUI, and

systemd-resolv --status returns

Link 2 (enp38s0f1)
      Current Scopes: DNS    
DefaultRoute setting: yes    
       LLMNR setting: yes    
MulticastDNS setting: no     
  DNSOverTLS setting: no     
      DNSSEC setting: no     
    DNSSEC supported: no     
  Current DNS Server: 8.8.8.8
         DNS Servers: 8.8.8.8
                      8.8.4.4
          DNS Domain: ~.   

Nevertheless, dig google.com shows

;; Query time: 0 msec
;; SERVER: 192.168.1.1#53(192.168.1.1)
;; WHEN: Mon Oct 05 11:08:26 EDT 2020
;; MSG SIZE  rcvd: 83

so my default route 192.168.1.1 as DNS. Furthermore, /etc/resolv.conf is a symlink to /run/systemd/resolve/resolv.conf, which in turn reads

# Generated by dhcpcd from enp38s0f1.dhcp, wlp0s20f3.dhcp
# /etc/resolv.conf.head can replace this line
domain fios-router.home
nameserver 192.168.1.1
# /etc/resolv.conf.tail can replace this line

The only enp38s0f1.dhcp file on this system (I’ve searched /) is /run/dhcpcd/resolv.conf/enp38s0f1.dhcp, which reads

# Generated by dhcpcd from enp38s0f1.dhcp
domain fios-router.home
search fios-router.home
nameserver 192.168.1.1

I have tried to write in other nameservers there, but they do not persist. In the past I’ve made the changes persistent by making the file immutable with chattr +i, but

lsattr /run/dhcpcd/resolv.conf/enp38s0f1.dhcp

returns

lsattr: Inappropriate ioctl for device While reading flags on /run/dhcpcd/resolv.conf/enp38s0f1.dhcp

so that attribute is not available here. And besides, I shouldn’t have to make the file immutable anyway: there should presumably be some way I can control the DNS server..


Edit:

In response to comments below:

$ dpkg -l *dnsmasq*
---
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name             Version         Architecture Description
+++-================-===============-============-============================================
un  dnsmasq          <none>          <none>       (no description available)
ii  dnsmasq-base     2.80-1.1ubuntu1 amd64        Small caching DNS proxy and DHCP/TFTP server
un  dnsmasq-base-lua <none>          <none>       (no description available)

Понравилась статья? Поделить с друзьями:
  • Как изменить fov stalker call of pripyat
  • Как изменить dns порты
  • Как изменить fov payday 2
  • Как изменить dns на телевизоре lg smart tv
  • Как изменить fov mw2