Это, кажется, разница в поведении, которая началась только в 18.10 или 19.04.
Хотя avahi-resolve --name my.subdomain.local
возвращает действительный IP-адрес и работает, он не работает вне этого, то есть ping
, curl
или chrome
.
Разрешение имен все еще работает, хотя для subdomain.local
. Похоже, это связано с тем, что *.subdomain.local
разрешается как CNDN mDNS.
Содержание nsswitch.conf
passwd: compat systemd
group: compat systemd
shadow: compat
gshadow: files
hosts: files mdns4_minimal [NOTFOUND=return] dns
networks: files
protocols: db files
services: db files
ethers: db files
rpc: db files
netgroup: nis
Содержание /etc/resolv.conf
nameserver 127.0.0.53
options edns0
Существует много способов настроить DNS, но со стандартной установкой Ubuntu с помощью systemd я нахожу, что неустойчивые отказы происходят, если я также не устанавливаю пакет libnss-твердости. Единственная вещь, которую делает этот пакет, состоит в том, чтобы изменить строку "хостов" в/etc/nsswitch.conf файле - добавляющий в "твердости [! UNAVAIL=return]" перед записью DNS. например.
hosts: files mdns4_minimal [NOTFOUND=return] resolve [!UNAVAIL=return] dns myhostname
Посмотрите ошибки, 1 727 237 systemd-разрешенных не находят домен, 1 805 027 systemd-разрешенных не могут разрешить, что адреса почтового сервера Comcast, и systemd-разрешенный имеют проблемы, когда ответ составляет более чем 512 байтов с отключенным EDNS
То, что делает эти отказы определения имен трудно для разыскивания, - то, что они происходят только при определенных условиях, когда нейтрализация к UDB имеет предел 512 байтов для результатов. То, как это, проблемы касаются nsswitch.conf, размещает строку, еще более трудно выяснить, но предложение добавления пакета libnss-твердости было упомянуто в ошибках, и это решило все мои случайные проблемы.
Следующее работало на меня на Ubuntu 19.10:
sudo apt install libnss-resolve
sudo bash -c "cat > /etc/mdns.allow" <<'EOF'
.local.
.local
EOF
Затем отредактируйте /etc/nsswitch.conf
как корень и изменение:
hosts: files mdns4_minimal [NOTFOUND=return] resolve [!UNAVAIL=return] dns
к [1 118]
hosts: files mdns4 [NOTFOUND=return] resolve [!UNAVAIL=return] dns
Это поведение происходит из-за предел с двумя маркировками эвристика в nss-mdns. Другие такие пределы:
- , Если запрос не заканчивается
.local
или.local.
, он отклоняется. Пример:example.test
отклоняется.- , Если запрос имеет больше чем две маркировки, он отклоняется. Пример:
foo.bar.local
отклоняется. Это предельная эвристика с двумя маркировками .- , Если во время запроса настроенные системой одноадресно передают DNS (указанный в
/etc/resolv.conf
) сообщает о записи SOA для локального имени верхнего уровня, запрос отклоняется. Пример:host -t SOA local
возвраты что-то другое, чем "Хост, локальный не найденный: 3 (NXDOMAIN)". Это - одноадресная передача эвристика SOA.
вышеупомянутое решение адаптировано от выпуска #64 .
GitHub