Próbuję skonfigurować dnsmasq(8)
system Debian GNU / Linux w DHCP
sieci prywatnej . Podczas lokalnej, ręcznej konfiguracji - po instalacji dnsmasq
istelf - można po prostu dołączyć linię
prepend domain-name-servers 127.0.0.1;
w /etc/dhcp/dhclient.conf
i restart sieci. Obejmie to lokalnego hosta /etc/resolv.conf
i jeden jest gotowy do pracy. (Zobacz także: http://wiki.debian.org/HowTo/dnsmasq#Local_Caching )
Jednak próby zrobienia tego samego zdalnie, szczególnie podczas pracy z oprogramowaniem do zarządzania konfiguracją , spowodowałyby utratę połączenia sieciowego. Cóż, ponieważ celem nie jest ponowne uruchomienie sieci, ale aktualizacja resolv.conf
..:
Jak można zmusić dhclient(8)
do aktualizacji resolv.conf
, utrzymując połączenia sieciowe w dobrym stanie?
[EDYTOWAĆ]
Poniżej znajduje się skrypt, który zadziałał dla mnie:
if grep '^\s*nameserver\>.\+\<127\.0\.0\.1\>' /etc/resolv.conf >/dev/null; then
: # do nothing
else
grep -v '^\s*nameserver\>' /etc/resolv.conf > /tmp/resolv.conf.new
echo "nameserver 127.0.0.1" >> /tmp/resolv.conf.new
grep '^\s*nameserver\>' /etc/resolv.conf >> /tmp/resolv.conf.new
mv -f /tmp/resolv.conf.new /etc/resolv.conf
fi
To trochę niezręczne - wciąż szukam lepszego rozwiązania.
dhclient(8)
podręcznika informuje, że obsługuje jakiś funky protokół o nazwie „Omapi”, który umożliwia zdalną konfigurację, i odnosi się doomshell
narzędzia, którego można użyć do ustawienia / rozbrojenia niektórych parametrów w kliencie i zaktualizowania go, a także do wyłączenia i ponownego uruchomienia. Czy odkryłeś tę trasę?resolv.conf
. Zauważ, że sam klient DHCP nie jest tutaj problemem, toresolv.conf
plik: jest rozpatrywany przezresolver(3)
C-API, a zatem wykorzystywany przez inne oprogramowanie. Zazwyczaj aktualizacja jest wykonywana przez jednądhclient(8)
alboresolvconf(8)
, ale pierwsze resetuje połączenie sieciowe, a drugi nie, aby zachować istniejącą konfigurację -Odpowiedzi:
Napotkałem ten sam problem podczas ustawiania dnsmasq przez ansible. W debian jessie możesz zaktualizować plik dhclient.conf i wykonać:
Lub jeśli wolisz:
Nie powoduje to utraty połączenia, chyba że wygasa umowa dzierżawy i nie otrzymasz innego adresu IP.
Wspominasz o zarządzaniu konfiguracją. Jeśli używasz ansible, oto odpowiednia część mojego poradnika:
Zauważ, że nie uruchamiam ponownie dhclient po jego zabiciu. Działa to dobrze w moim środowisku, ale YMMV. Możesz dodać kolejne zadanie, które kopiuje skrypt, aby obsłużyć dhclient stop / start i wywołać je z modułu obsługi (być może nawet używając
{{ansible_default_ipv4.interface}}
nazwy interfejsu).Mój
dhclient.conf
szablon jest mniej więcej taki:Tak więc głównie domyślny debian nie
dhclient.conf
zawiera dyrektyw związanych z dns.źródło