Да, проблема (по крайней мере, в моем случае), казалось, заключалась в двух вещах:
./
нужно было удалить; rsync ожидает, что исключаемые объекты будут указаны либо в абсолютном порядке, либо относительно исходного каталога. И да, я получил кучу пустых каталогов, но сценарий для удаления пустых каталогов - это приключение для другого времени.
Самая распространенная причина, по которой вы получаете поддельный IP-адрес для несуществующего домена, заключается в том, что ваш интернет-провайдер конвертирует отрицательные ответы в адреса своих рекламных серверов, чтобы показывать вам больше рекламы, когда вы делаете опечатку в адресе веб-сайта. Это определенно сомнительная практика, но, к сожалению, некоторые интернет-провайдеры ее применяют.
Обычно этому можно противодействовать, используя различные восходящие DNS-серверы, такие как OpenDNS ( server = 208.67.222.222
и server = 208.67.220.220
) или Google ( сервер = 8.8.8.8
и сервер = 8.8.4.4
). Если вам нужны серверы вашего интернет-провайдера для обслуживания клиентов, вы можете использовать их только в определенном домене ( server = / myisp.com / 203.0.113.1
).
При этом в вашем случае проблема в том, что ваша конфигурация не выполняет то, что вы хотите.
Как я могу запретить DNSMasq преобразовывать несуществующие поддомены в локальный IP-адрес.
Не заявляя, что домен существует. Dnsmasq не заменяет IP-адрес несуществующими доменами.
Как я могу указать DNSMasq всегда использовать внешний DNS для определенной записи.
Не объявляя значение для этого имени хоста или подстановочный знак, включающий это имя хоста.
Проблема в вашей конфигурации - строка
address = / home.com / 192.168.1.210
Это подстановочный знак: он объявляет, что 192.168.1.210
является адрес home.com
и все имена хостов в этом домене. Вам не нужен этот подстановочный знак, поэтому удалите его.
Вместо этого объявите home.com
и любой отдельный домен home.com
как имена хостов , а не как подстановочные знаки, указав их в / etc / hosts
. Удалите строку no-hosts
- вы хотите объявить определенные хосты, значит, она вам нужна! Или, если вы предпочитаете не использовать / etc / hosts
, оставьте эту строку и добавьте строку, указывающую на другой файл, объявленный с помощью addn-hosts = / path / to / hosts-file
. Или, если вы хотите сохранить все это внутри dnsmasq.conf
, замените эту строку на host-record = home.com, 192.168.1.210
Если вы хотите иметь подстановочный знак с исключениями (вернуть 192.168.1.210 для всех xxx.home.com
, кроме mymachine.home.com
, или всегда запрашивать вышестоящие серверы и заменять 192.168.1.210 только на отрицательные ответы), я не думаю, что dnsmasq может это сделать.
У меня была запись для моего домена
address = / domain.com / 192.168.1.7
(мой обратный прокси-сервер NginX)
Из-за этого все несуществующие поддомены, такие как acoimasdin.domain.com, преобразовывались в 192.169.1.7.
Поскольку у меня уже есть все настройки для перенаправления domain.com на www.domain.com в apache, я сделал запись
address=/www.domain.com/192.168.1.7
Теперь мой удаленный DNS субдомена перенаправляется на Google DNS, как и должно, а не -существующий DNS возвращается как «хост не существует», что именно то, что я хотел!
По сути, у меня не может быть запись нижнего / верхнего (не уверен, что это правильный термин) уровня, которая является domain.com, или все несуществующие записи DNS будут использовать эту запись DNS.
Просто чтобы подробнее рассказать о правильном ответе Жиля:
Из справочной страницы TheKelleys.org DNSMasq
-A, --address=/<domain>/[domain/][<ipaddr>]
Укажите возвращаемый IP-адрес для любого хоста в данные домены. Запросы в доменах никогда не пересылаются и всегда отвечают с указанным IP-адресом, который может быть IPv4 или IPv6. Чтобы указать для домена адреса IPv4 и IPv6, используйте повторяющиеся флаги -A. Обратите внимание, что / etc / hosts и аренда DHCP переопределяют это для отдельных имен. Обычно это используется для перенаправления всего домена doubleclick.net на некоторый дружественный локальный веб-сервер, чтобы избежать рекламных баннеров. Спецификация домена работает так же, как и для --server, с дополнительной возможностью, что / # / соответствует любому домену. Таким образом, --address = / # / 1.2.3.4 всегда будет возвращать 1.2.3.4 для любого запроса, на который не был дан ответ от / etc / hosts или DHCP и который не был отправлен на вышестоящий сервер имен более конкретной директивой --server. . Что касается --server, один или несколько доменов без адреса возвращают ответ без такого домена, поэтому --address = / example.com / эквивалентен --server = / example.com / и возвращает, например, NXDOMAIN. com и все его поддомены.
--host-record=<name>[,<name>....],[<IPv4-address>],[<IPv6-address>][,<TTL>]
Добавить записи A, AAAA и PTR в DNS. Это добавляет одно или несколько имен в DNS с соответствующими записями IPv4 (A) и IPv6 (AAAA). Имя может появиться более чем в одной записи хоста, и поэтому ему может быть назначено более одного адреса. Только первый адрес создает запись PTR, связывающую адрес с именем. Это то же правило, что и при чтении hosts-файлов. Параметры host-record считаются считанными до host-файлов, поэтому появившееся там имя запрещает создание PTR-записи, если оно также присутствует в hosts-файле. В отличие от файлов-хостов, имена не раскрываются, даже если действует расширение-хосты. Короткие и длинные имена могут появляться в одной и той же записи хоста, например. --host-record = laptop, laptop.thekelleys.org, 192.168.0.1,1234 :: 100 Если задано время жизни, оно отменяет значение по умолчанию, равное нулю или значению - -local-ttl. Значение представляет собой положительное целое число и дает время жизни в секундах.