Вопрос или проблема
Я пытаюсь задать серверы DNS явно, так как мне интересно, не связаны ли мои медленные скорости на медиа-сервере с плохими DNS от Verizon. Однако я искал везде, и ничего из найденного не работает. Проверка моего DNS показывает следующее:
❯ resolvectl dns
Global: 1.1.1.1 1.0.0.1
Link 2 (eno2): 192.168.1.1
или
❯ nmcli device show eno2 | grep IP4.DNS
IP4.DNS[1]: 192.168.1.1
Как я понимаю, мой DNS устанавливается через DHCP, но попытка изменить его с помощью resolvetl dns eno2 1.1.1.1
не сохраняется, также не помогает добавление этого в /etc/systemd/resolved.conf.d/dns_servers.conf
:
[Resolve]
DNS=1.1.1.1 1.0.0.1
Также пробовал установить этот файл /etc/systemd/network/eno2.network
:
[Match]
Name=eno2
[DHCPv4]
UseHostname=no
UseDNS=no
UseNTP=no
UseDomains=no
[DHCPv6]
UseHostname=no
UseDNS=no
UseNTP=no
[Network]
DNS=1.1.1.1 1.0.0.1
Domains=cloudflare-dns.com
но это тоже не сработало.
Думаю, это моя проблема:
❯ cat /etc/netplan/01-network-manager-all.yaml
# Let NetworkManager manage all devices on this system
network:
version: 2
renderer: NetworkManager
Однако я не имею представления, как переопределить Network Manager. nmcli
, кажется, ничего не делает, или, возможно, я выполняю неправильную команду:
❯ nmcli con
NAME UUID TYPE DEVICE
Wired connection 1 b28835af-2164-37f9-b4df-e185f17a54c4 ethernet eno2
br-bfaa0d30981b afe1cb8b-3d6e-454a-97f6-947f546e7114 bridge br-bfaa0d30981b
docker0 5f24f23d-e6d9-4743-9f7e-2fc81dda21ff bridge docker0
Verizon_4M3LTJ d40366ad-bdb0-49fe-9aa3-168aea6300a5 wifi --
❯ sudo nmcli con mod "Wired connection 1" ipv4.dns "1.1.1.1 1.0.0.1"
❯ nmcli device show eno2 | grep IP4.DNS
IP4.DNS[1]: 192.168.1.1
❯ sudo nmcli con mod "Wired connection 1" IP4.DNS "1.1.1.1 1.0.0.1"
Error: invalid or not allowed setting 'IP4': 'IP4' not among [connection, 802-3-ethernet (ethernet), 802-1x, dcb, sriov, ethtool, match, ipv4, ipv6, hostname, tc, proxy].
❯ resolvectl dns
Global: 1.1.1.1 1.0.0.1
Link 2 (eno2): 192.168.1.1
У меня нет физического доступа к этой машине в данный момент, поэтому я не могу использовать интерфейс пользователя для настройки DNS и у меня не открыт порт для RDP. Но уж наверняка должен быть какой-то способ настроить это исключительно через CLI?
Копируя соответствующие части из этого ответа: https://askubuntu.com/a/1536841/285001 (поделился @mpboden в комментариях к оригинальному посту).
Эти команды смогли решить мою проблему с DNS:
❯ nmcli con
NAME UUID TYPE DEVICE
Wired connection 1 b28835af-2164-37f9-b4df-e185f17a54c4 ethernet eno2
br-bfaa0d30981b afe1cb8b-3d6e-454a-97f6-947f546e7114 bridge br-bfaa0d30981b
docker0 5f24f23d-e6d9-4743-9f7e-2fc81dda21ff bridge docker0
Verizon_4M3LTJ d40366ad-bdb0-49fe-9aa3-168aea6300a5 wifi --
❯ sudo nmcli con mod "Wired connection 1" ipv4.dns "1.1.1.1 1.0.0.1"
❯ sudo nmcli con mod "Wired connection 1" ipv4.dns-search "cloudflare-dns.com"
❯ sudo nmcli con mod "Wired connection 1" ipv4.ignore-auto-dns yes
❯ sudo systemctl restart NetworkManager
❯ resolvectl
Global
Protocols: -LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported
resolv.conf mode: stub
Current DNS Server: 1.1.1.1
DNS Servers: 1.1.1.1 1.0.0.1
Fallback DNS Servers: 8.8.8.8 8.8.4.4
DNS Domain: cloudflare-dns.com
Link 2 (eno2)
Current Scopes: DNS
Protocols: +DefaultRoute +LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported
Current DNS Server: 1.1.1.1
DNS Servers: 1.1.1.1 1.0.0.1
DNS Domain: cloudflare-dns.com
К сожалению, это не решает проблему скорости, но, по крайней мере, исключает DNS как причину.
С netplan
и если вам не нужен NetworkManager
на этом интерфейсе, тогда в netplan
YAML
сделайте это:
network:
version: 2
renderer: networkd
ethernets:
eno2:
addresses:
- 192.168.1.100/24
gateway4: 192.168.1.1
nameservers:
addresses: [1.1.1.1, 1.0.0.1]
dhcp4: no
затем примените
sudo netplan apply
Вы можете проверить все это с помощью
ip addr show eno2
ip route
resolvectl status eno2
заметьте, что у вас будет статический IP-адрес, в нашем примере 192.168.1.100/24
), шлюз (192.168.1.1
) и DNS-серверы (1.1.1.1
и 1.0.0.1
).
.
Ответ или решение
Настройка DNS на Ubuntu 22.04 через SSH является важной задачей, особенно если вы хотите оптимизировать скорость и надежность вашего интернет-соединения, например, из-за несовершенств DNS-провайдера. В этой статье я расскажу, как это сделать с учетом всех необходимых шагов и нюансов.
Теория
Ubuntu 22.04 использует несколько компонентов, связанных с сетями: Netplan, NetworkManager и systemd-resolved. По умолчанию Netplan используется для конфигурирования сети через YAML-файлы, а NetworkManager управляет подключениями на большинстве десктопных систем. Однако, если речь идет о серверных или специфических конфигурациях, можно также использовать networkd.
systemd-resolved — это сервис, отвечающий за резолвинг DNS, который предоставляет такую информацию как IP-адреса DNS-серверов. Изменения, внесенные через команду resolvectl
, могут быть временными и пропадать после перезагрузки. Поэтому правильной практикой будет внесение постоянных изменений через NetworkManager или Netplan.
Пример
Раскроем задачу на разных уровнях:
-
Изменения через NetworkManager:
- Для изменения DNS-серверов используйте команду
nmcli
, которая модифицирует конфигурацию соединения, управляемую NetworkManager. - Например, чтобы установить публичные DNS-серверы Cloudflare, выполните следующие команды:
sudo nmcli con mod "Wired connection 1" ipv4.dns "1.1.1.1 1.0.0.1" sudo nmcli con mod "Wired connection 1" ipv4.dns-search "cloudflare-dns.com" sudo nmcli con mod "Wired connection 1" ipv4.ignore-auto-dns yes sudo systemctl restart NetworkManager
- После этого вы можете проверить настройки DNS:
resolvectl status
- Для изменения DNS-серверов используйте команду
-
Изменения через Netplan:
- Если вы не используете NetworkManager или хотите установить статическую конфигурацию через Netplan, отредактируйте соответствующий YAML-файл, например
/etc/netplan/01-netcfg.yaml
. - Пример изменения файла конфигурации:
network: version: 2 renderer: networkd ethernets: eno2: addresses: - 192.168.1.100/24 gateway4: 192.168.1.1 nameservers: addresses: [1.1.1.1, 1.0.0.1] dhcp4: no
- После изменения документа примените конфигурации:
sudo netplan apply
- Если вы не используете NetworkManager или хотите установить статическую конфигурацию через Netplan, отредактируйте соответствующий YAML-файл, например
Применение
После настройки убедитесь в корректности работы вашей сети. Вы можете использовать команды ip addr show eno2
, ip route
и resolvectl status
для проверки настроек IP-адресации, маршрутизации и DNS.
При некорректных настройках DNS ваша система может не иметь доступ к нужным ресурсам, из-за чего производительность сети может существенно снижаться. Поэтому после настройки желательно протестировать соединение с важными для вас ресурсами и убедиться, что все работает корректно.
Если у вас возникают проблемы с производительностью даже после изменения DNS, причины могут быть более глубокими и включать в себя проблемы с самим интернет-каналом, конфигурацию маршрутизации или неисправности конкретных серверов.
Чтобы изолировать проблему, можно использовать такие утилиты как ping
, traceroute
и iperf
, чтобы разобраться, где именно возникают пробуксовки.
Заключение
Настройка DNS может существенно повлиять на общую производительность вашей сети. Правильная конфигурация и выбор DNS-серверов помогут обеспечить надежность и скорость интернет-соединения. Однако помните, что DNS — это лишь часть сложного механизма сети, и в случае сложностей следует рассматривать все возможные аспекты инфраструктуры сети.