Вопрос или проблема
Я работаю на Fedora 31. Мне нужно переопределить разрешение DNS для одного домена. С помощью /etc/hosts
я бы добавил:
172.16.2.1 example.com
172.16.2.1 www.example.com
Я не уверен, что мне нужно делать в настоящее время с Systemd. Я не могу найти обсуждение в Руководстве по системному администрированию Fedora. Интернет возвращает шум и бессодержательные материалы.
Как мы можем переопределить разрешение DNS для одного имени на Fedora 31 с помощью Systemd?
Вот /etc/resolv.conf
:
$ cat /etc/nsswitch.conf | grep -v '#' | sed -r '/^\s*$/d'
passwd: sss files systemd
shadow: files sss
group: sss files systemd
hosts: files dns myhostname
bootparams: files
ethers: files
netmasks: files
networks: files
protocols: files
rpc: files
services: files sss
netgroup: sss
publickey: files
automount: files sss
aliases: files
Да, изменение /etc/hosts
— это правильный способ переопределить стандартный DNS.
Это не будет работать, если вы используете DNS через HTTPS (DOH).
Некоторые операционные системы и браузеры потребуют сброса их внутренних кэшей DNS для немедленных изменений в разрешении имен.
Ответ или решение
Да, файл /etc/hosts
по-прежнему используется для переопределения разрешения DNS в Fedora, включая версию 31. В этом файле можно указать статическое сопоставление IP-адресов и доменных имен. В вашем случае, чтобы переопределить DNS-разрешение для домена example.com
, вы можете добавить в /etc/hosts
следующие строки:
172.16.2.1 example.com
172.16.2.1 www.example.com
Порядок поиска имен в Fedora
Как показывает ваш вывод из nsswitch.conf
, система будет следовать данному порядку при разрешении имен хостов:
- files — сначала будет проверяться файл
/etc/hosts
. - dns — далее система обратится к DNS-серверу.
- myhostname — в последнюю очередь будет рассмотрено имя самого хоста.
Это значит, что если вы добавите записи в /etc/hosts
, они будут иметь преимущество перед запросами к DNS. Это полезно для разработки или тестирования, когда вы хотите, чтобы запросы к определённому домену указывали на локальный сервер или IP-адрес.
Влияние Systemd и других технологий
В последние годы в Linux, включая Fedora, активно внедряются технологии, такие как Systemd, который отвечает за управление множеством системных сервисов, включая системные службы сети. Однако это не мешает файлу /etc/hosts
продолжать работать. На самом деле, эти зависимости между сетевыми серверами и именами хостов остаются одинаковыми.
Тем не менее, следует учитывать следующее:
-
DNS-over-HTTPS (DOH): Если вы используете DOH в вашем браузере или системе, это может мешать работе файла
/etc/hosts
, поскольку браузер будет игнорировать локальное разрешение имен. -
Кэш DNS: Некоторые операционные системы и браузеры могут кешировать DNS-записи. Таким образом, чтобы изменения вступили в силу, может потребоваться очистить кэш. В большинстве случаев достаточно перезапустить сетевой сервис или, в крайнем случае, перезагрузить систему.
Проверка работы
После того как вы внесли изменения в файл /etc/hosts
, вы можете проверить корректность работы с помощью команды ping
или nslookup
:
ping example.com
или
nslookup example.com
Если все сделано правильно, должно отображаться IP-адрес 172.16.2.1
, который вы указали в файле /etc/hosts
.
Заключение
Итак, да, вы можете использовать /etc/hosts
для переопределения DNS-разрешения на Fedora 31. Это надежный и простой способ контролировать, как разрешаются домены, если вы не используете специфические решения, такие как DOH. Убедитесь, что вы следите за кэшем DNS и другими современными реализациями, которые могут повлиять на разрешение имен.