Я использую dnsmasq для разрешения DNS-запросов в моей домашней сети. К сожалению, если доменное имя не известно, оно добавит мое собственное доменное имя к запросу, что означает, что я всегда заканчиваю просмотром своего собственного сайта в браузере.
Например, если я ввожу http://dlksfhoiahdsfiuhsdf.com в браузере, я в конечном итоге просматриваю свой собственный сайт с этим URL. Если я попробую что-то вроде:
host dlksfhoiahdsfiuhsdf.com
Вместо ожидаемого:
Host dlksfhoiahdsfiuhsdf.com not found: 3(NXDOMAIN)
Я получаю это:
dlksfhoiahdsfiuhsdf.com.mydomainname.com has address W.X.Y.Z.
Ясно, что dnsmasq добавляет мое доменное имя к невозможным запросам имен, пытаясь решить их, но вместо этого я предпочел бы увидеть ошибку not found.
Я пытался поиграть с настройками расширения-хостов и конфигурации домена , но безрезультатно. Есть что-нибудь еще, что я могу попробовать?
Я попытался удалить домен, необходимый из моей собственной конфигурации, чтобы повторить вашу проблему, и это не привело к такому поведению. Это единственный другой параметр, который я могу найти, который может быть близок к релевантному.
Как выглядит ваш файл hosts? Может быть, происходит что-то странное, что заставляет думать, что все странные домены являются локальными для вашей сети?
попробуйте выполнить запрос с конечной точкой, чтобы явно установить корень:
host dlksfhoiahdsfiuhsdf.com.
Вероятно, это делает не dnsmasq, а ваша локальная библиотека распознавателя. Если вы используете unixish, попробуйте удалить строки "search" или "domain" из /etc/resolv.conf
Могут быть и другие причины, но наиболее очевидной причиной является конфигурация /etc/resolv.conf и тот факт, что большинству DNS-клиентов нравится быть очень лаконичными в отношении ошибок.
benc$ host thing.one
Host thing.one not found: 3(NXDOMAIN)
(хорошо, что я использовал для конфигурации DNS?)
benc$ cat /etc/resolv.conf
nameserver 192.168.1.1
(редактировать...)
benc$ cat /etc/resolv.conf
search test.com
nameserver 192.168.1.1
benc$ host thing.one
thing.one.test.com has address 64.214.163.132
Не пытаясь выполнить трассировку пакета, вероятнее всего, что он возвращает ошибку для последнего полного доменного имени, которое он пробовал.
У вас есть подстановочный домен?
dnsmasq пересылает добавленное имя на внешний DNS-сервер и получает его по шаблону.
вы можете использовать --server = / yourinternaldomainhere /, чтобы убедиться, что ваши внутренние запросы на поиск доменных имен не пересылаются.
Синтаксис в этом случае будет:
--server = / домен / iptoforwardto
и в этом случае оставьте область iptoforwardto пустой, так как вы не хотите, чтобы она куда-либо пересылалась.