GNU/Linux >> Tutoriales Linux >  >> Linux

¿Qué sobrescribe /etc/resolv.conf en cada arranque?

Me dieron los archivos para un mini linux , que arranca directamente en firefox . Funciona para todo lo que debería estar haciendo, solo que no tengo conexión a Internet.

Tenemos 3 servidores DNS en la red, todos funcionan. Puedo hacer ping a ellos, también. Pero al intentar ping google.de o wget google.de Recibo una bad address error.

nslookup google.de funciona por alguna razón.

Rastreé el problema hasta mi resolv.conf en el sistema arrancado que no tiene el mismo contenido que el resolv.conf que puse en el .iso archivo.

Traté de comprender todos los factores que intervienen en la creación y modificación de resolv.conf . No estoy muy seguro de haberlo entendido todo, pero definitivamente no encontré la solución allí.

Entonces, como último esfuerzo, intenté hacer el resolv.conf archivo inmutable usando

:~# chattr +i /etc/resolv.conf

Al reconstruir y arrancar de nuevo, para mi sorpresa, mi archivo cambió de nombre a resolv.conf~ y en su lugar estaba el mismo archivo estándar que me ha estado persiguiendo.

El contenido del archivo me hace creer que obtiene la información de la propia red. Al iniciar el .iso en Virtualbox sin acceso a Internet, mi archivo se mantiene como está.

Intenté cambiar /etc/dhcp/dhclient.conf para no obtener la información de la red, eliminando domain-name-server y domain-name-search de la request parte del archivo.

Desafortunadamente no funcionó.

No tengo el NetworkManager instalado. La iso está basada en Ubuntu 14.04.

Probablemente falta información vital. Me complace proporcionarlo.

ACTUALIZAR:

Creo que encontré el archivo que borra resolv.conf .

Parece ser /usr/share/udhcpc/default.script

#!/bin/sh

# udhcpc script edited by Tim Riker <[email protected]>

[ -z "$1" ] && echo "Error: should be called from udhcpc" && exit 1

RESOLV_CONF="/etc/resolv.conf"
[ - n "$broadcast" ] && BROADCAST="broadcast $broadcast"
[ -n "$subnet" ] && NETMASK="netmask $subnet"

case "$1" in
    deconfig)
        /bin/ifconfig $interface 0.0.0.0
        for i in /etc/ipdown.d/*; do
            [ -e $i ] && . $i $interface
        done
        ;;

    renew|bound)
        /bin/ifconfig $interface $ip $BROADCAST $NETMASK

        if [ -n "$router" ] ; then
            echo "deleting routers"
            while route del default gw 0.0.0.0 dev $interface ; do
                :
            done

            metric=0
            for i in $router ; do
                route add default gw $i dev $interface metric $((metric++))
            done
        fi

        echo -n > $RESOLV_CONF # Start ----------------  
        [ -n "$domain" ] && echo search $domain >> $RESOLV_CONF
        for i in $dns ; do
            echo adding dns $i
            echo nameserver $i >> $RESOLV_CONF
        done
        for i in /etc/ipup.d/*; do
            [ -e $i ] && . $i $interface $ip $dns 
        done # End ------------------
        ;;
esac

exit 0

Es parte del udhcpc programa. Un pequeño cliente dhcp, que es parte de busybox

Investigará más a fondo.

ACTUALIZACIÓN2 Y SOLUCIÓN:

Comenté la parte (#Start to #End), que aparentemente sobrescribe el /etc/resolv.conf archivo y por supuesto. Ese fue el culpable. Así que un guión oscuro causó todo este problema.

Relacionado:¿Usando inotify para monitorear el acceso a un archivo?

Cambié la pregunta para reflejar lo que realmente se necesitaba saber para resolver mi problema, de modo que fuera más fácil de encontrar para las personas con el mismo problema y así pudiera aceptar una respuesta.

Gracias por la ayuda aquí para resolver las cosas.

Respuesta aceptada:

  1. No debe actualizar manualmente su resolv.conf , porque todos los cambios se sobrescribirán con los datos que proporciona su servidor DHCP local. Si desea que sea estático, ejecute sudo dpkg-reconfigure resolvconf y responda "no" a las actualizaciones dinámicas. Si desea agregar nuevas entradas allí, edite /etc/resolvconf/resolv.conf.d/base y ejecuta sudo resolvconf -u , agregará sus entradas y las entradas del servidor DHCP.

  2. Intenta editar tu /etc/network/interfaces y agregue sus entradas allí, como

     auto eth0 
     iface eth0 inet dhcp 
     dns-search google.com 
     dns-nameservers dnsserverip 
    

y luego reinicie /etc/init.d/networking restart o sudo ifdown -a y sudo ifup -a

  1. Su sistema utiliza udhcp, que es un programa de cliente DHCP muy pequeño. El cliente udhcp negocia una concesión con el servidor DHCP y notifica
    a un conjunto de scripts cuando se obtiene o se pierde una concesión. Puede leer sobre su uso aquí o simplemente editar este script (como lo hizo).

Linux
  1. En /etc/resolv.conf, ¿qué hace exactamente la opción de configuración de búsqueda?

  2. Ignorar /etc/logrotate.conf debido a un modo de archivo incorrecto

  3. ¿Cuál es el límite de tamaño de /etc/hosts?

  4. ¿Cuál es el beneficio de /etc/apt/sources.list.d sobre /etc/apt/sources.list?

  5. ¿Por qué /etc/resolv.conf apunta a 127.0.0.53?

¿Qué es Fstab en Linux? Una introducción al archivo Linux /etc/fstab

¿Qué es el archivo /etc/passwd en Linux?

Comprender los archivos /proc/mounts, /etc/mtab y /proc/partitions

host:el análisis de /etc/resolv.conf falló

¿Cómo hacer que la dirección del servidor de nombres sea permanente en /etc/resolv.conf?

¿Cuál es la conexión entre los directorios /etc/init.d y /etc/rcX.d en Linux?