Istnieją dwa sposoby networkmanager
:
- aktualizacja
/etc/resolv.conf
- nie Aktualizuj
/etc/resolv.conf
w ogóle
Oba rozwiązania nie są odpowiednie po mojej stronie, ponieważ po mojej stronie potrzebuję /etc/resolv.conf
do obsługi przez resolvconf
tak, że można go zregenerować w dowolnym momencie resolvconf -u
.
Potrzebowałbym skryptów /etc/NetworkManager/dispatcher.d/
które poprawnie współpracują z resolvconf
.
Nie udało mi się jednak znaleźć odpowiednich skryptów do tego, co moim zdaniem jest dość podstawowym standardowym przypadkiem.
Czy jest w tym celu jakieś standardowe rozwiązanie (proszę podać tutaj zasadniczą część skryptów), czy też wszyscy naprawdę muszą wymyślać koło za każdym razem?
Uwagi:
Najwyraźniej jest coś, ale to nie działa poprawnie.
W moim przypadku mam dnsmasq
, VPN i więcej, wszystkie bawią się DNS.
jednak resolvconf -u
nie regeneruje się /etc/resolv.conf
poprawnie, więc domyślnie brakuje czegoś.
Aby być bardziej rozbudowanym:
/etc/NetworkManager/dispatcher.d/01ifupdown
połączeniarun-parts /etc/network/if-up.d
/etc/network/if-up.d/000resolvconf
następnie sprawdza$IF_DNS_NAMESERVER
i$IF_DNS_NAMESERVERS
alenetworkmanager
nie dostarcza tych i zestawówIP4_NAMESERVERS
zamiast tego (zgodnie z instrukcją)
Stąd gdzieś jest brakujące ogniwo. Oto kopia tego, co znajduje się w /etc/NetworkManager/dispatcher.d/01ifupdown
:
#!/bin/sh -e
# Script to dispatch NetworkManager events
#
# Runs ifupdown scripts when NetworkManager fiddles with interfaces.
# See NetworkManager(8) for further documentation of the dispatcher events.
if [ -z "$1" ]; then
echo "$0: called with no interface" 1>&2
exit 1;
fi
# Fake ifupdown environment
export IFACE="$1"
export LOGICAL="$1"
export ADDRFAM="NetworkManager"
export METHOD="NetworkManager"
export VERBOSITY="0"
# Run the right scripts
case "$2" in
up|vpn-up)
export MODE="start"
export PHASE="post-up"
exec run-parts /etc/network/if-up.d
;;
down|vpn-down)
export MODE="stop"
export PHASE="post-down"
exec run-parts /etc/network/if-post-down.d
;;
# pre-up/pre-down not implemented. See
# https://bugzilla.gnome.org/show_bug.cgi?id=387832
# pre-up)
# export MODE="start"
# export PHASE="pre-up"
# exec run-parts /etc/network/if-pre-up.d
# ;;
# pre-down)
# export MODE="stop"
# export PHASE="pre-down"
# exec run-parts /etc/network/if-down.d
# ;;
hostname|dhcp4-change|dhcp6-change)
# Do nothing
;;
*)
echo "$0: called with unknown action \`$2'" 1>&2
exit 1
;;
esac
Oto, co znajduje się w /etc/network/if-up.d/000resolvconf
#!/bin/sh
#
# ifup hook script for resolvconf
#
# This file is part of the resolvconf package.
#
[ -x /sbin/resolvconf ] || exit 0
case "$ADDRFAM" in
inet|inet6) : ;;
*) exit 0 ;;
esac
R=""
if [ "$IF_DNS_DOMAIN" ] ; then
R="${R}domain $IF_DNS_DOMAIN
"
fi
if [ "$IF_DNS_SEARCH" ] ; then
R="${R}search $IF_DNS_SEARCH
"
fi
if [ "$IF_DNS_SORTLIST" ] ; then
R="${R}sortlist $IF_DNS_SORTLIST
"
fi
for NS in $IF_DNS_NAMESERVER $IF_DNS_NAMESERVERS ; do
R="${R}nameserver $NS
"
done
echo -n "$R" | /sbin/resolvconf -a "${IFACE}.${ADDRFAM}" || :
FYI to z Ubuntu 14.04
Odpowiedzi:
Skrypty? NetworkManager obsługuje natywną / bin / resolvconf od 2008 r. ( wersja 0.7.0 ). Twoja dystrybucja musi włączyć ją w czasie kompilacji przy użyciu
./configure --with-resolvconf=…
( na przykład ). Nie ma potrzeby stosowania oddzielnych skryptów dispatcher.d - masz tylko kilka efektów ubocznych swojej dystrybucji próbujących zintegrować NM z ifupdown.Jeśli to nie działa, sprawdź, czy twój
NetworkManager.conf
wspomina strona podręcznikadns
irc-manager
ustawienia (różnią się w zależności od wersji). Normalnie resolvconf działa domyślnie, ale może być konieczne ręczne ustawieniedns=default
lubrc-manager=resolvconf
lub obie.źródło
/etc/network/if-up.d/000resolvconf
używa tych zmiennych, które pochodzą zresolvconf
dispatcher.d/01ifupdown
aby poprawnie przetłumaczyć środowisko ze zmiennych NM na zmienne ifupdown.if-up.d/000resolvconf
i użyć wbudowanej obsługi NM w resolvconf? Widzę, że Debian włącza go w czasie kompilacji, nie będąc pewnym innych dystrybucji.