Umożliwienie rozwiązywania domen z sufiksem .local
Przetłumaczone automatycznie z angielskiego. Przeczytaj oryginał
Nierzadko może być potrzebne skonfigurowanie domen z sufiksem .local. Niestety jest on objęty dokumentem RFC 6762 (multicast DNS). W niektórych dystrybucjach Linuksa nie będziesz w stanie rozwiązać takich domen za pomocą serwera DNS ustawionego na maszynie lub w ustawieniach chmury (np. Azure).
Skąd wiadomo, że zapytanie DNS nie dociera do docelowego serwera DNS? Jeśli używasz named, najpierw włącz logowanie zapytań następującym poleceniem:
rndc querylog onTeraz zapytania DNS od klientów, którzy ustawili ten konkretny serwer DNS jako swój resolver, będą widoczne w pliku loggera systemowego, np. /var/log/messages. Następnie spróbuj wykonać ping lub curl na docelowy adres domeny z sufiksem .local i sprawdź, czy pojawia się w logu serwera DNS. Możesz też wymusić skierowanie zapytania DNS do tego serwera DNS za pomocą polecenia dig:
dig yourdomain.local @yourdnsserverJeśli zapytanie jest widoczne w pliku logu serwera DNS, możesz mieć pewność, że po rekonfiguracji maszyny klienckiej wszystko zadziała prawidłowo. Aby zrobić to na Ubuntu 20, potrzebnych jest kilka rzeczy. Pierwsza to stała konfiguracja IP (jakiś plik yaml w katalogu /etc/netplan/):
network:
ethernets:
eth0:
dhcp4: no
addresses:
- 10.99.99.10/24
gateway4: 10.99.99.1
nameservers:
addresses: [10.99.99.20]
dhcp4-overrides:
route-metric: 100
dhcp6: false
match:
driver: hv_netvsc
macaddress: 60:45:bd:94:4a:85
set-name: eth0
version: 2Ponadto, zgodnie z sugestią w pliku konfiguracyjnym netplan, aby wyłączyć funkcję cloud init, utwórz plik /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg z następującą zawartością:
network: {config: disabled}Następnie ponownie zastosuj konfigurację sieci:
sudo netplan tryDla mnie osobiście jest to czasem nadmiernie skomplikowane w porównaniu z dystrybucją CentOS. Teraz, mając stałe ustawienia, które nie powinny być nadpisywane przez inne procesy, możesz przejść do wyłączenia lokalnego DNS stub listenera:
cd /etc/
sudo ln -sf ../run/systemd/resolve/resolv.conf
cd /etc/systemd/
sudo sed -i -e 's/#DNSStubListener=yes/DNSStubListener=no/' resolved.conf
sudo systemctl restart systemd-resolvedSwój docelowy serwer DNS możesz wpisać w pliku /etc/systemd/resolved.conf. Po wykonaniu wszystkich tych operacji spróbuj ping, curl lub wget ze swoją domeną .local i sprawdź, czy to zapytanie pojawia się w pliku logu serwera DNS.