Po kroku 2 możesz być bez działającego resolvera systemu, dopóki krok 3 nie zostanie ukończony. Może być konieczne zrestartowanie podsystemu sieciowego (lub po prostu ponowne uruchomienie), aby dnsmasqdziałać z domyślnymi konfiguracjami. W moich testach dodanie znanego serwera DNS /etc/dnsmasq.confi ponowne uruchomienie dnsmasqwystarczyło, aby działał w środowisku liveCD.
Świetna odpowiedź i pozornie jedyne rozwiązanie po wyłączeniu NetworkManagera jest niedopuszczalne!
bagno 7.04.17
3
Dla mnie była to świetna odpowiedź, ale wymagała także dodatkowych kroków od odpowiedzi @ blabla, dodając dns=dnsmasqconfig do/etc/NetworkManager/NetworkManager.conf
Roberto Tyley
To samo tutaj. Po zmaganiu się z rozwiązaniami systemowymi i niezwiązanymi z przejściem na dnsmasq wykonał lewy system na Ubuntu 17.10. Musiałem jednak użyć dodatków blabla.
Alberto L. Bonfiglio
17
Oprócz odpowiedzi @quixotic:
Upewnij się, że masz plik /etc/NetworkManager/NetworkManager.conf:
[main]
dns=dnsmasq
jeśli chcesz go dodać, uruchom ponownie NetworkManager w następujący sposób:
sudo systemctl restart NetworkManager
i /etc/resolv.confmusi być dowiązaniem symbolicznym do /var/run/NetworkManager/resolv.conf. można to zrobić w ten sposób
Właściwie mam to ustawione jako dns=defaulti działa dobrze, ponieważ mam wtedy serwery nazw zdefiniowane przez NetworkManager zamiast być zdefiniowane w dnsmasq; to działa dla mnie - NM pobiera serwery nazw z ustawień dokonanych w konfiguracji NM KDE za pomocą zasobnika systemowego. Używam stałego adresu IP w mojej domowej sieci FWIW.
pbhj
1
Ten krok był dla mnie niezbędnym dodatkiem do odpowiedzi @ quixotic (ubuntu 17.04, pełna instalacja, nie LiveCD).
Roberto Tyley,
0
Zgodnie z instrukcją systemd-resolved systemd-resolved zapewnia usługi rozpoznawania nazw za pośrednictwem trzech różnych interfejsów:
„w pełni funkcjonalny API rozwiązany systemowo wyświetla się w magistrali”
„lokalny odbiornik kodów DNS na adres IP 127.0.0.53 w lokalnym interfejsie sprzężenia zwrotnego”
Interfejs API glibc getaddrinfo (3) zdefiniowany przez RFC3493 i powiązane z nim funkcje tłumaczące, w tym gethostbyname (3). Ten interfejs API jest szeroko obsługiwany, w tym poza platformą Linux. W obecnej formie nie ujawnia jednak informacji o statusie sprawdzania poprawności DNSSEC i jest tylko synchroniczny. Ten interfejs API jest wspierany przez przełącznik usługi nazw glibc (nss (5)). Konieczne jest użycie modułu NSS glibc nss-resolver (8), aby umożliwić funkcjom NSS glibc rozpoznawanie nazw hostów poprzez systemd-resolved.
Wygląda na to, że dwa pierwsze interfejsy nie będą zakłócały normalnej rozdzielczości DNS i dla mnie problem prawdopodobnie dotyczy trzeciego.
Aby aktywować moduł NSS, dodaj „resol” do linii zaczynającej się od „hosts:” w /etc/nsswitch.conf. W szczególności zaleca się umieszczenie „rozwiązania” na początku w wierszu „hosts:” /etc/nsswitch.conf (ale po wpisach „files” lub „mymachines”), tuż przed wpisem „dns”, jeśli istnieje, a następnie „[! UNAVAIL = return]”, aby upewnić się, że zapytania DNS są zawsze kierowane przez systemd-resolved (8), jeśli jest uruchomiony, ale są kierowane do nss-dns, jeśli ta usługa jest niedostępna
Potrzebne jest więc, aby „dns” poprzedza „resol” w linii „host:” w pliku /etc/nsswitch.conf . A następnie getaddrinfopowinien po prostu stosować się do /etc/resolv.conf .
To rozwiązanie zapobiega jedynie obsłudze przez systemd wszystkich rozwiązań rozpoznawania nazw DNS i nie jest ograniczone do konkretnego menedżera sieci. Zapewnia to również, że usługi LLMNR i mDNS działają normalnie.
(Nie jestem do końca zaznajomiony z działaniem rozpoznawania nazw w systemie Linux, a także nie jestem pewien, co zrozumiałem z tych podręczników. Zarzuty wskazują, czy coś poszło nie tak.
Wyłącz nasłuchiwanie rozpoznane przez system na porcie 53 (nie dotykaj /etc/systemd/resolved.conf, ponieważ może zostać nadpisany podczas aktualizacji):
(alternatywnie wyłącz to całkowicie przez $ sudo systemctl disable systemd-resolved.service)
Usuń /etc/resolv.conf i utwórz ponownie. Jest to ważne, ponieważ resolv.conf jest domyślnie dowiązaniem symbolicznym do /run/systemd/resolve/stub-resolv.conf. Jeśli nie usuniesz dowiązania symbolicznego, plik zostanie zastąpiony przez systemd przy ponownym uruchomieniu (nawet jeśli wyłączono systemd-rozwiązany!). Również NetworkManager (NM) sprawdza, czy jest to dowiązanie symboliczne do wykrywania konfiguracji rozwiązanej przez system.
Odpowiedzi:
dnsmasq
pakiety są nadal dostępne w wersji 16.10 i 17.04.Zainstaluj
dnsmasq
i zależności (lub przynajmniej pobierz ich pakiety) przed wyłączeniemsystemd-resolved
:Wyłącz
systemd-resolved
i sprawdź, czydnsmasq
działa:Dopraw
dnsmasq
do smaku. Po zastosowaniu ustawień uruchom ponowniednsmasq
:Po kroku 2 możesz być bez działającego resolvera systemu, dopóki krok 3 nie zostanie ukończony. Może być konieczne zrestartowanie podsystemu sieciowego (lub po prostu ponowne uruchomienie), aby
dnsmasq
działać z domyślnymi konfiguracjami. W moich testach dodanie znanego serwera DNS/etc/dnsmasq.conf
i ponowne uruchomieniednsmasq
wystarczyło, aby działał w środowisku liveCD.źródło
dns=dnsmasq
config do/etc/NetworkManager/NetworkManager.conf
Oprócz odpowiedzi @quixotic:
Upewnij się, że masz plik /etc/NetworkManager/NetworkManager.conf:
jeśli chcesz go dodać, uruchom ponownie NetworkManager w następujący sposób:
i
/etc/resolv.conf
musi być dowiązaniem symbolicznym do/var/run/NetworkManager/resolv.conf
. można to zrobić w ten sposóbźródło
dns=default
i działa dobrze, ponieważ mam wtedy serwery nazw zdefiniowane przez NetworkManager zamiast być zdefiniowane w dnsmasq; to działa dla mnie - NM pobiera serwery nazw z ustawień dokonanych w konfiguracji NM KDE za pomocą zasobnika systemowego. Używam stałego adresu IP w mojej domowej sieci FWIW.Zgodnie z instrukcją systemd-resolved systemd-resolved zapewnia usługi rozpoznawania nazw za pośrednictwem trzech różnych interfejsów:
Wygląda na to, że dwa pierwsze interfejsy nie będą zakłócały normalnej rozdzielczości DNS i dla mnie problem prawdopodobnie dotyczy trzeciego.
W instrukcji nss-resolver :
Potrzebne jest więc, aby „dns” poprzedza „resol” w linii „host:” w pliku /etc/nsswitch.conf . A następnie
getaddrinfo
powinien po prostu stosować się do /etc/resolv.conf .To rozwiązanie zapobiega jedynie obsłudze przez systemd wszystkich rozwiązań rozpoznawania nazw DNS i nie jest ograniczone do konkretnego menedżera sieci. Zapewnia to również, że usługi LLMNR i mDNS działają normalnie.
(Nie jestem do końca zaznajomiony z działaniem rozpoznawania nazw w systemie Linux, a także nie jestem pewien, co zrozumiałem z tych podręczników. Zarzuty wskazują, czy coś poszło nie tak.
źródło
Dla (X) Ubuntu 18.04 (patrz moja odpowiedź na stackexchange ).
Oto jego kopia (czy mam zrobić kopię?)
Oto rozwiązanie dla (X) Ubuntu 18.04 Bionic.
Zainstaluj dnsmasq
sudo apt install dnsmasq
Wyłącz nasłuchiwanie rozpoznane przez system na porcie 53 (nie dotykaj /etc/systemd/resolved.conf, ponieważ może zostać nadpisany podczas aktualizacji):
i uruchom go ponownie
(alternatywnie wyłącz to całkowicie przez
$ sudo systemctl disable systemd-resolved.service
)Usuń /etc/resolv.conf i utwórz ponownie. Jest to ważne, ponieważ resolv.conf jest domyślnie dowiązaniem symbolicznym do /run/systemd/resolve/stub-resolv.conf. Jeśli nie usuniesz dowiązania symbolicznego, plik zostanie zastąpiony przez systemd przy ponownym uruchomieniu (nawet jeśli wyłączono systemd-rozwiązany!). Również NetworkManager (NM) sprawdza, czy jest to dowiązanie symboliczne do wykrywania konfiguracji rozwiązanej przez system.
Wyłącz nadpisywanie pliku /etc/resolv.conf przez NM (istnieje również opcja rc-manager, ale nie działa, mimo że jest opisana w instrukcji):
i uruchom go ponownie:
Powiedz dnsmasq, aby używał resolv.conf z NM:
i uruchom go ponownie:
Użyj dnsmasq do rozwiązania:
źródło