14

Я хочу сделать несколько тестов на Linux. Я хочу разместить небольшой веб-сервер на компьютере с IP-адресом: 1.2.3.4 (предположение), и когда делается запрос DNS для определенного URL-адреса: kitty.myweb.com, я хочу вернуть этот IP-адрес.

Сценарии:

  1. Когда я открываю браузер (Firefox или что-то еще), я ввожу URL kitty.myweb.com, и браузер будет выполнять DNS-запрос
  2. Я хочу написать программу, которая делает запрос DNS для kitty.myweb.com

Я знаю, что на каждом компьютере есть локальный преобразователь DNS, который кэширует некоторые записи; вызов URL-адреса сначала запросит локальный преобразователь DNS, и, если соответствующих записей нет, он отправит запрос внешнему преобразователю DNS в локальной сети или в Интернете.

Я хочу добавить запись (kitty.myweb.com: 1.2.3.4) в локальный преобразователь DNS, чтобы для двух вышеописанных сценариев ответ DNS был 1.2.3.4 без необходимости выполнения внешнего запроса.

Возможно ли это сделать на Linux, и если да, то как? Возможно, есть какие-нибудь фрагменты кода C, которые бы сделали это?

2 ответа2

25

Возможно, вы сможете использовать /etc /hosts для добавления вашей записи. Это на самом деле не использует DNS, но влияет на библиотеку распознавателя в Linux, которая используется большинством приложений. Добавлять:

1.2.3.4 kitty.myweb.com

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

Адрес =/kitty.myweb.com/1.2.3.4

Если вы используете свой собственный DNS-сервер, вам, вероятно, придется поиграть с /etc/resolv.conf, который используется библиотекой решателя Linux. Чтобы библиотека распознавания смотрела на локальный DNS-сервер, вам потребуется запись в resolv.conf:

nameserver 127.0.0.1

8

Самый простой способ добавить одну запись DNS на локальный хост - это добавить ее в файл hosts. Расположение этого файла может варьироваться в зависимости от дистрибутива, но его традиционное расположение - /etc/hosts и оно должно выглядеть примерно так:

::1                     localhost localhost.yourdomain.tld
127.0.0.1               localhost localhost.yourdomain.tld
1.2.3.4                 kitty.myweb.com

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .