Powszechnie wiadomo, że NetworkManager nie działa dobrze dnsmasq
(patrz: tutaj ). Przeszedłem przez długą dyskusję tutaj, ale wciąż nie jestem pewien, jaki jest zalecany sposób radzenia sobie z sytuacją.
Wszystko, co chcę, to użyć dnsmasq
do zapewnienia DNS i DHCP mojej sieci lokalnej. Jaki byłby zalecany sposób w tym przypadku?
Wygląda na to, że problem występuje nawet w Ubuntu 14.04, nawet błąd został rzekomo naprawiony.
Podczas obejścia ludzie wyłączają zniewolony przez NM dnsmasq-base
z następujących powodów:
Zniewolony przez NM dnsmasq
wykorzystuje zakodowane opcje (w C), które zapewniają wyjątkowo ograniczoną funkcjonalność.
- Nie nasłuchuje na ethX (
--listen-address=127.0.0.1
). Dlatego nie możemy używać naszych serwerów jako serwerów DNS dla naszych komputerów w sieci lokalnej, tzn. Jest to całkowicie bezużyteczne dla sieci LAN. - Nie buforuje żądań (
--cache-size=0
). Brak buforowania ==> brak przyspieszenia zapytań DNS. To znowu jest bardzo istotne dla sieci LAN, ponieważ jest wielu współbieżnych użytkowników. - Wreszcie potrzebujemy również funkcji DHCP i TFTP dnsmasq, więc nawet jeśli NM + dnsmasq zawiera prawdziwy serwer DNS, musielibyśmy uruchomić kolejny dnsmasq
Ale nie jestem pewien, czy nadal występują i / lub jak poprawka rozwiązuje problem (y). Co więcej, żadne z nich nie jest bardzo jasne, co dokładnie zrobili i jak zrobili, aby rozwiązać swój problem. Tj. W długiej dyskusji brakuje części dotyczącej rozwiązania . Czy ktoś może wypełnić puste pola? To znaczy,
dnsmasq
Pod warunkiem, out-of-box przez Ubuntu nie działa, po stronie serwera, z powyższych powodów. Ponadto po stronie klienta „dnsmasq zainstalowany na tych laptopach Ubuntu nie może wykonywać zapytań DNS LAN z mojego serwera DNS” , ponieważ „NetworkManager (laptopy Ubuntu) powoduje, że mają dziwne ustawienie serwera nazw 127.0.1.1” ( ref: rozwiązanie DNS dla LAN lub lokalnej sieci domowej )
Jak sprawić, by dnsmasq działał płynnie z NetworkManagerem, aby zapewnić DNS i DHCP (i TFTP) mojej sieci lokalnej, zarówno po stronie serwera, jak i klienta?
TL'dr
dla tych, którzy szukają odpowiedzi. Ze wszystkich poniższych odpowiedzi znalazłem najprostsze rozwiązanie @ brada, po stronie serwera (wciąż nie ma dobrej odpowiedzi po stronie klienta):
jedynym rozwiązaniem tego problemu jest wyłączenie napędu dnsmasq ... i zainstalowanie „standardowego” dnsmasq, a następnie skonfigurowanie go za pomocą standardowego
/etc/dnsmasq.conf
pliku konfiguracyjnego.
Odpowiedzi:
Mam też twoje problemy.
Zasadniczo po wiki.archlinux wydaje się, że włączenie buforowania powinno wystarczyć do utworzenia pliku
/etc/NetworkManager/dnsmasq.d/cache
zawierającego po prostuPróbowałem tego, ale po ponownym uruchomieniu NM nadal nie mam pamięci podręcznej:
Zauważ, że cytowany plik conf jest zawsze pusty: nie byłem w stanie skonfigurować żadnej opcji przy użyciu tej procedury.
Podsumowując, wydaje się, że maska dnsmask zniewolona przez NM w 14.04 (która jest dostarczana przez pakiet dnsmasq-base) jest całkowicie zablokowana, więc nie jest możliwe włączenie buforowania ani nic innego (dhcp, tftp).
Jeśli jest to słuszne, myślę, że jak mówisz, jedynym rozwiązaniem tego problemu jest wyłączenie dnsmasq z napędem NM, komentując linię
w pliku
/etc/NetworkManager/NetworkManager.conf
i zainstaluj „standardowy” dnsmasq, a następnie skonfiguruj go za pomocą standardowego/etc/dnsmasq.conf
pliku konfiguracyjnego.źródło
--conf-dir=/etc/NetworkManager/dnsmasq.d
,cache-size
używana jest określona w utworzonym pliku. Możesz zobaczyć różnicę, używającdig
Można zastąpić ustawienia, wprowadzając je
/etc/NetworkManager/dnsmasq.d/*.conf
. Ustawienia pliku konfiguracyjnego mają pierwszeństwo przed flagami wiersza poleceń. Są one stosowane, gdy NetworkManager uruchamia dnsmasq. Uruchom,sudo service network-manager restart
aby ponownie zastosować. (W razie wątpliwości: w odpowiedzi brada pominięto fakt, któryps ax | grep dns
pokazuje--conf-dir
argument)Na przykład:
O ile pamiętam, NetworkManager domyślnie wyłącza buforowanie dnsmasq z powodu obaw związanych z zatruciem pamięci podręcznej. W przypadku komputera, na którym wszyscy użytkownicy są zaufani, może to nie stanowić problemu.
NetworkManager nie integruje się
resolvconf
, a serwer NM127.0.1.1
nie będzie używany lokalnie, jeśli zainstalowany jest pakiet resolvconf. resolvconf jest częścią minimalnych i standardowych instalacji Debiana; NetworkManager przywraca tę funkcjonalność w sposób bardziej zintegrowany, mniej oparty na skryptach.NetworkManager upewnia się, aby nie zakłócać globalnej instancji dnsmasq (wiązanie z wtórnym IP pętli zwrotnej i konfigurowanie
bind-interfaces
przez/etc/dnsmasq.d/network-manager
). Jeśli zainstalujesz globalną instancję dnsmasq i zachowasz instancję NM, dwukrotnie sprawdź,/etc/resolv.conf
z której host będzie domyślnie korzystał.Chociaż możesz dostosować instancję dnsmasq NetworkManagera, jak pokazano powyżej, jeśli chcesz, aby serwer DNS łączył się z interfejsami publicznymi, powinieneś zainstalować
dnsmasq
pakiet (tylko NetworkManager używadnsmasq-base
, który nie konfiguruje instancji globalnej) i wprowadzić swoją konfigurację/etc/dnsmasq.d/*.conf
. Instancja slave NetworkManagera służy wyłącznie do wiązania się z interfejsem sprzężenia zwrotnego, a skonfigurowanie go poza tym zakresem może spowodować jego uszkodzenie.Podsumowując, dla kogoś, kto chce tylko lokalnego buforowania DNS:
W przypadku prostej sieci LAN współdzielenie połączenia przez NetworkManager powinno nadal wystarczyć. Ale w przypadku niestandardowej sieci LAN z TFTP i tak dalej:
źródło
dnsmasq
pakiet. to po co jest następneecho
polecenie? od kiedydnsmasq
zniknie.dnsmasq
, ale nadal powinieneś miećdnsmasq-base
zainstalowany ze względu na NM.Chciałem przypisać konkretny adres MAC do określonego adresu IP i dla celów stabilności trzymać się domyślnego Network Managera / dnsmasq w jak największym stopniu.
https://cgit.freedesktop.org/NetworkManager/NetworkManager/tree/src/dnsmasq/nm-dnsmasq-manager.c ma komentarz na temat używania pliku --conf do ignorowania konfiguracji, ale później w pliku mamy
W systemie Ubuntu 16.04 LTS po skonfigurowaniu hotspotu Wi-Fi i współużytkowaniu innego połączenia
ps auxgww | grep dnsmasq
pokazuje, że ostatnim argumentem wiersza poleceń każdego z procesów dnsmasq jest:W ten sposób można tworzyć pliki konfiguracyjne w tym katalogu, które są współużytkowane przez wszystkie wywołania dnsmasq uruchamiane przez Network Managera.
Stworzyłem /etc/NetworkManager/dnsmasq-shared.d/Hue
i zrestartował się, choć działał
działałby.
Spowodowało to, że moje urządzenie uzyskało odpowiedni adres IP.
Tak, jest to błędne, ponieważ oznacza, że wszystkie wywołania dnsmasq przez NetworkManager otrzymają tę deklarację, ale w tym przypadku jest nieszkodliwe, ponieważ ma znaczenie tylko, jeśli MAC pojawi się w danej sieci. Jeśli sieć nie jest 192.168.1, wystąpią problemy.
Jest to bardziej niezawodne niż zastąpienie / usr / sbin / dnsmasq skryptem zaproponowanym na https://gist.github.com/magnetikonline/6236150
Właściwym rozwiązaniem byłoby zmodyfikowanie sposobu wywoływania dnsmasq w celu prawidłowego korzystania z plików konfiguracyjnych dnsmasq. Rozumiem pragnienie, aby Network Manager „po prostu działał”, ale tworzenie odpornych na idiotyzacje narzędzi oznacza, że tylko idioci mogą z nich korzystać.
źródło
Moje rozwiązanie może zepsuć Menedżera sieci i utrzymanie w nim wszystkiego prostego sposobu robienia rzeczy. Z powodu zepsutego sposobu radzenia sobie z dnsmasq przez NM, po prostu zastąpiłem go moją metodą poniżej.
Obejściem problemu było po prostu wykonanie następujących czynności:
Zmodyfikuj
~/dnsmasq.conf
plik w katalogu użytkownika, tak jak chcesz, i zapisz go.Zrobiłem prosty alias bash i umieściłem go na dole mojego pliku ~ / .bash_aliases, aby ułatwić edycję pliku dnsmasq.conf. Oto alias:
Oczywiście możesz wybrać dowolny edytor według własnego uznania dla drugiego polecenia sudo w aliasie, ale dla ułatwienia użyłem nano. Zapisz plik, zamknij i ponownie otwórz kartę / okno terminala poleceń. Powinno to umożliwić dostęp do aliasu dla nowo otwieranych kart / okien terminali.
Po prostu uruchom
eddmc
z konta użytkownika, a poprosi Cię o podanie hasła w celu wykonania podniesionych poleceń.Zauważ, że zawsze mam
chattr +i
plik. Dzieje się tak, aby Network Manager nie nadpisał twojej konfiguracji własną.Na przewodowych połączeniach Ethernet nie powinno być żadnych problemów. Odkąd używam dnsmasq do buforowania DNS na laptopach z bezprzewodowym dostępem, muszę ręcznie zrestartować usługę dnsmasq po podłączeniu do punktu dostępowego. Myślę, że Network Manager może wykonywać takie zadania, jak ponowne uruchamianie usług podczas łączenia, ale jeszcze tego nie analizowałem.
źródło
Pomimo twierdzeń przeciwnych, NetworkManager całkowicie ignoruje wszystkie pliki konfiguracyjne dmsmasq - nawet te we własnym katalogu
/etc/NetworkManager/dnsmasq-shared.d
. Dowód znajduje się w kodzie źródłowym programu NetworkManager ... Oto odpowiedni komentarz:Oto link do odpowiedniego kodu źródłowego (wiersze 139-144).
źródło