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:

Text
rndc querylog on

Teraz 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:

Text
dig yourdomain.local @yourdnsserver

Jeś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/):

YAML
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: 2

Ponadto, 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ą:

Text
network: {config: disabled}

Następnie ponownie zastosuj konfigurację sieci:

Bash
sudo netplan try

Dla 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:

Bash
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-resolved

Swó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.

Wersja Markdown

Wszystkie treści na tej stronie są udostępniane na licencji Uznanie autorstwa – Użycie niekomercyjne – Bez utworów zależnych 4.0 Międzynarodowe (CC BY-NC-ND 4.0). Cytuj jako: Michał Sobczak, „Umożliwienie rozwiązywania domen z sufiksem .local”, 6 września 2022, https://michalasobczak.pl/pl/posts/allow-local-domain-suffix-to-be-resolved.html