Foros de daboweb

HARDWARE Y SISTEMAS OPERATIVOS, GNU/Linux, Windows, Mac => GNU/Linux, Unix, *BSD and Free Software, Android => Mensaje iniciado por: klondike en 16 de Febrero de 2006, 01:11:42 am

Título: DNSblemas (SOLUCIONADO)
Publicado por: klondike en 16 de Febrero de 2006, 01:11:42 am
La situación es la siguiente:
ME conecto a internet a través del ordenador de mi hermano que comparte la conexión a través de windows XP ¿Se puede hacer con linux?, el caso es que tengo que usar dhcp, y se me desconfiguran los servidores, por ahora la única solución que he encontrado es ejecutar este script, pero siempre se me gripoa:

Código: [Seleccionar]
#!/bin/bash

 while [ 1 ]
 do
 cp /etc/resolv2.conf /etc/resolv.conf
 done

A ver si me decis como hacer que el dhcp no me desconfigure los DNS
Título: Re: DNSblemas
Publicado por: Liamngls en 16 de Febrero de 2006, 01:16:02 am
¿ A que te refieres con que si se puede hacer con Linux ? ¿ Compartir la conexión ? ¿ De XP a Linux ? Instala Samba y dale caña al asunto , claro que se puede.
Título: Re: DNSblemas
Publicado por: klondike en 16 de Febrero de 2006, 01:29:24 am
Bueno, me refería a compartir teniendo por host un linux, y por cliente un winxp, pero me preocupa más lo de las DNS
Título: Re: DNSblemas
Publicado por: Liamngls en 16 de Febrero de 2006, 01:34:53 am
Si tienes el servidor montado en linux y necesitas conectarte a él para administrarlo puedes hacerlo desde SSH , con putty por ejemplo.

Título: Re: DNSblemas
Publicado por: Aj en 16 de Febrero de 2006, 08:15:25 am
Por lo del DHCP, mira a ver si tienes bien configuradas las DNS en el servidor de DHCP

Para compartir conexion, basta con un pequeño script y unas reglas para el IPTABLES

Mirate este link que explica como hacer el NAT desde linux:

http://bulma.net/body.phtml?nIdNoticia=1522 (http://bulma.net/body.phtml?nIdNoticia=1522)

o este tambien

http://www.experts-exchange.com/Security/Linux_Security/Q_21071935.html (http://www.experts-exchange.com/Security/Linux_Security/Q_21071935.html)

Es simple y divertido...

Despues puedes ir ampliando reglas para que no te accedan a la maquina.

En mis tiempos de conexion via telefonica, tenia un script super guay que estaba muy bien, pero lo perdi ya hace un tiempo...
Título: Re: DNSblemas
Publicado por: goldfinger en 16 de Febrero de 2006, 09:02:45 am
Hola, una GUI para configrar lo basico de iptables es Firestarter, yo lo usaba y esta muy bien, hay mas info aqui:
http://www.nautopia.net/archives/es/linux_cortafuegos_e_iptables/firestarter/firestarter.php (http://www.nautopia.net/archives/es/linux_cortafuegos_e_iptables/firestarter/firestarter.php)

respecto lo del DHCP, yo te diria que si puedes configurar todo con IP estaticas para mi gusto mucho mejor, y en el caso de server con linux, a la hora de configurar iptables todo mejor.
Título: Re: DNSblemas
Publicado por: Aj en 16 de Febrero de 2006, 09:05:33 am
Hola, una GUI para configrar lo basico de iptables es Firestarter, yo lo usaba y esta muy bien, hay mas info aqui:
http://www.nautopia.net/archives/es/linux_cortafuegos_e_iptables/firestarter/firestarter.php (http://www.nautopia.net/archives/es/linux_cortafuegos_e_iptables/firestarter/firestarter.php)

Anda la leche, lo que ha dicho!!!!!!!! configurar el iptables con un GUI!!!!!  Hereje!!!!! A la hoguera con el!!!!!!  :-D :-D :-D :-D :-D :-D :-D :-D :-D :-D

Estuve probando el firestarter hace tiempo, y no me termino de convencer.... prefiero tenerlo yo controlado, pero oye es otra opcion  :destroyer: :destroyer:
Título: Re: DNSblemas
Publicado por: goldfinger en 16 de Febrero de 2006, 09:49:03 am
xDDDDDDD
ya digo, no se puede sacar todo el jugo a iptables con firestarter pero lo basico si, ...y es muy bonico, no se porque no te gusto  :-D :-D
que conste que a mi tambien me gusta editarlo a pelo  :smoke:
salu2
Título: Re: DNSblemas
Publicado por: klondike en 17 de Febrero de 2006, 12:44:19 am
Bueno dejemos lo del iptables, no hay manero, quiero encontrar la forma de que el dhcp, no me configure el dns, bajo windows es fácil, pero bajo linux..., por favor, decidme como se hace que estoy por tirar el pc por la ventana
Título: Re: DNSblemas
Publicado por: goldfinger en 17 de Febrero de 2006, 08:52:46 am
quieres decir que has editado /etc/resolv.conf y despues el dhcp lo modifica?
Título: Re: DNSblemas
Publicado por: klondike en 19 de Febrero de 2006, 07:22:53 pm
de hecho tengo que tener el script de arriba activado para uqe no me lo modifique cada dos por 3
Título: Re: DNSblemas
Publicado por: goldfinger en 19 de Febrero de 2006, 08:13:50 pm
Prueba a editar /etc/dhcp3/dhclient.conf para forzar las DNS locales
Título: Re: DNSblemas
Publicado por: rnaveiras en 23 de Febrero de 2006, 12:43:24 am
buenas, al grano que ahi prisa :P

Tanto en dhcp3-client como en dhcp-client, tienes un script en /etc/dhclient-script (al menos en debian y ubuntu esta ahí) , que es el cabrón que te esta machacando el /etc/resolv.conf cada vez que el cliente dhcp considera oportuno.

El /etc/dhclient-script es un script en bash, la función que te jode es make_resolv_conf() , buscalá y cambia el código, pues hacer algo así

Código original

make_resolv_conf() {
  if [ "x$new_domain_name" != x ] && [ x"$new_domain_name_servers" != x ]; then
    echo search $new_domain_name >/etc/resolv.conf
    chmod 644 /etc/resolv.conf
    for nameserver in $new_domain_name_servers; do
      echo nameserver $nameserver >>/etc/resolv.conf
    done
  fi
}

Posible cambio, para solucionar tus problemas

make_resolv_conf() {
  if [ "x$new_domain_name" != x ] && [ x"$new_domain_name_servers" != x ]; then
    echo search $new_domain_name > /dev/null
    chmod 644 /etc/resolv.conf
    for nameserver in $new_domain_name_servers; do
      echo nameserver $nameserver >> /dev/null   
    done
  fi
}


Bueno, pos a disfrutarlo,  :dabo:

Un Saludo.
Título: Re: DNSblemas
Publicado por: klondike en 23 de Febrero de 2006, 12:50:17 am
probaré a ver.

Que la prisa sea pasajera ;-)
Título: Re: DNSblemas
Publicado por: klondike en 12 de Marzo de 2006, 04:19:20 pm
Pues na que no hay manera, os dejo el script porque yo no lo entiendo  :-(

Código: [Seleccionar]
#!/bin/bash

# dhclient-script for Linux. Dan Halbert, March, 1997.
# Updated for Linux 2.[12] by Brian J. Murrell, January 1999.
# Modified for Debian.  Matt Zimmerman and Eloy Paris, December 2003
# Modified to remove useless tests for antiquated kernel versions that
# this doesn't even work with anyway, and introduces a dependency on /usr
# being mounted, which causes cosmetic errors on hosts that NFS mount /usr
# Andrew Pollock, February 2005
# Modified to work on point-to-point links. Andrew Pollock, June 2005

# The alias handling in here probably still sucks. -mdz

if [ -n "${dhc_dbus}" ]; then
   /usr/bin/dbus-send \
       --system \
       --dest=com.redhat.dhcp \
       --type=method_call \
       /com/redhat/dhcp/$interface \
       com.redhat.dhcp.set \
       'string:'"`env | /bin/egrep -v '^(PATH|SHLVL|_|PWD|dhc_dbus)\='`";
       if (( ( dhc_dbus & 31 ) == 31 )); then
           exit 0;
       fi;
fi;

make_resolv_conf() {
    if [ -n "$new_domain_name" -o -n "$new_domain_name_servers" ]; then
        local new_resolv_conf=/etc/resolv.conf.dhclient-new
        rm -f $new_resolv_conf

        if [ -n "$new_domain_name" ]; then
            echo search $new_domain_name >> $new_resolv_conf
        else # keep 'old' search/domain scope
            egrep -i '^ *[:space:]*(search|domain)' /etc/resolv.conf >> \
                  $new_resolv_conf
        fi
       
        if [ -n "$new_domain_name_servers" ]; then
            for nameserver in $new_domain_name_servers; do
                echo nameserver $nameserver >>$new_resolv_conf
            done
        else # keep 'old' nameservers
            egrep -i '^ *[:space:]*nameserver' /etc/resolv.conf >> \
                  $new_resolv_conf
        fi

        chown --reference=/etc/resolv.conf $new_resolv_conf
        chmod --reference=/etc/resolv.conf $new_resolv_conf
        mv $new_resolv_conf /etc/resolv.conf
    fi
}

run_hook() {
    local script="$1"
    local exit_status

    if [ -f $script ]; then
        . $script
    fi


    if [ -n "$exit_status" ] && [ "$exit_status" -ne 0 ]; then
        logger -p daemon.err "$script returned non-zero exit status $exit_status"
        save_exit_status=$exit_status
    fi

    return $exit_status
}

run_hookdir() {
    local dir="$1"
    local exit_status

    if [ -d "$dir" ]; then
        for script in $(run-parts --list $dir); do
            run_hook $script || true
            exit_status=$?
        done
    fi

    return $exit_status
}

# Must be used on exit.   Invokes the local dhcp client exit hooks, if any.
exit_with_hooks() {
    exit_status=$1

    # Source the documented exit-hook script, if it exists
    if ! run_hook /etc/dhcp3/dhclient-exit-hooks; then
        exit_status=$?
    fi

    # Now run scripts in the Debian-specific directory.
    if ! run_hookdir /etc/dhcp3/dhclient-exit-hooks.d; then
        exit_status=$?
    fi

    exit $exit_status
}

set_hostname() {
    local current_hostname=$(hostname)
    if [ -z "$current_hostname" -o "$current_hostname" = "(none)" ]; then
        hostname "$new_host_name"
    fi
}

if [ -n "$new_broadcast_address" ]; then
    new_broadcast_arg="broadcast $new_broadcast_address"
fi
if [ -n "$old_broadcast_address" ]; then
    old_broadcast_arg="broadcast $old_broadcast_address"
fi
if [ -n "$new_subnet_mask" ]; then
    new_subnet_arg="netmask $new_subnet_mask"
fi
if [ -n "$old_subnet_mask" ]; then
    old_subnet_arg="netmask $old_subnet_mask"
fi
if [ -n "$alias_subnet_mask" ]; then
    alias_subnet_arg="netmask $alias_subnet_mask"
fi
if [ -n "$new_interface_mtu" ]; then
    mtu_arg="mtu $new_interface_mtu"
fi
if [ -n "$IF_METRIC" ]; then
    metric_arg="metric $IF_METRIC" # interfaces(5), "metric" option
fi


# The action starts here

# Invoke the local dhcp client enter hooks, if they exist.
run_hook /etc/dhcp3/dhclient-enter-hooks
run_hookdir /etc/dhcp3/dhclient-enter-hooks.d

# Execute the operation
case "$reason" in
    MEDIUM|ARPCHECK|ARPSEND)
        # Do nothing
        ;;
    PREINIT)
        # The DHCP client is requesting that an interface be
        # configured as required in order to send packets prior to
        # receiving an actual address. - dhclient-script(8)

        if [ -z "${dhc_dbus}" ] || (( ( dhc_dbus & 2 ) != 2 )); then
         if [ -n "$alias_ip_address" ]; then
            # Bring down alias interface. Its routes will disappear too.
            ifconfig $interface:0- inet 0
         fi
         ifconfig $interface 0 up
        fi
        ;;
    BOUND|RENEW|REBIND|REBOOT)

        set_hostname
       
        if [ -z "${dhc_dbus}" ] || (( ( dhc_dbus & 2 ) != 2 )); then
         if [ -n "$old_ip_address" -a -n "$alias_ip_address" -a \
             "$alias_ip_address" != "$old_ip_address" ]; then
            # Possible new alias. Remove old alias.
            ifconfig $interface:0- inet 0
         fi

         if [ -n "$old_ip_address" -a \
             "$old_ip_address" != "$new_ip_address" ]; then
            # IP address changed. Bringing down the interface will delete all routes,
            # and clear the ARP cache.
            ifconfig $interface inet 0 down

         fi
        fi

        if [ -z "$old_ip_address" -o "$old_ip_address" != "$new_ip_address" -o \
            "$reason" = "BOUND" -o "$reason" = "REBOOT" ]; then
          if [ -z "${dhc_dbus}" ] || (( ( dhc_dbus & 2 ) != 2 )); then
            ifconfig $interface inet $new_ip_address $new_subnet_arg \
                $new_broadcast_arg $mtu_arg
          fi
         
          if [ -z "${dhc_dbus}" ] || (( ( dhc_dbus & 4 ) != 4 )); then
            for router in $new_routers; do
                route add default dev $interface gw $router $metric_arg
            done
          fi
        fi

       
       if [ -z "${dhc_dbus}" ] || (( ( dhc_dbus & 2 ) != 2 )); then
        if [ "$new_ip_address" != "$alias_ip_address" -a -n "$alias_ip_address" ];
            then
            ifconfig $interface:0- inet 0
            ifconfig $interface:0 inet $alias_ip_address $alias_subnet_arg
            route add -host $alias_ip_address $interface:0
         fi
        fi
       
       if [ -z "${dhc_dbus}" ] || (( ( dhc_dbus & 1 ) != 1 )); then
        make_resolv_conf
       fi

        ;;

    EXPIRE|FAIL|RELEASE|STOP)
        if [ -n "$alias_ip_address" ]; then
            # Turn off alias interface.
            ifconfig $interface:0- inet 0
        fi

        if [ -n "$old_ip_address" ]; then
            # Shut down interface, which will delete routes and clear arp cache.
            ifconfig $interface inet 0 down
        fi

        if [ -n "$alias_ip_address" ]; then
            ifconfig $interface:0 inet $alias_ip_address $alias_subnet_arg
            route add -host $alias_ip_address $interface:0
        fi

        ;;

    TIMEOUT)
       if [ -z "${dhc_dbus}" ] || (( ( dhc_dbus & 2 ) != 2 )); then
        if [ -n "$alias_ip_address" ]; then
            ifconfig $interface:0- inet 0
        fi

        ifconfig $interface inet $new_ip_address $new_subnet_arg \
            $new_broadcast_arg $mtu_arg
       fi

        set -- $new_routers
        first_router="$1"

        if ping -q -c 1 $first_router; then
         if [ -z "${dhc_dbus}" ] || (( ( dhc_dbus & 2 ) != 2 )); then
            if [ "$new_ip_address" != "$alias_ip_address" -a \
                -n "$alias_ip_address" ]; then
                ifconfig $interface:0 inet $alias_ip_address $alias_subnet_arg
                route add -host $alias_ip_address dev $interface:0
            fi
         fi

         # point to point
         if [ "$new_subnet_mask" == "255.255.255.255" ]; then
             for router in $new_routers; do
                 route add -host $router dev $interface
             done
         fi

         if [ -z "${dhc_dbus}" ] || (( ( dhc_dbus & 4 ) != 4 )); then
            for router in $new_routers; do
                route add default dev $interface gw $router $metric_arg
            done
         fi

         if [ -z "${dhc_dbus}" ] || (( ( dhc_dbus & 1 ) != 1 )); then
            make_resolv_conf
         fi
        else
            # Changed from 'ifconfig $interface inet 0 down' - see Debian bug #144666
          if [ -z "${dhc_dbus}" ] || (( ( dhc_dbus & 2 ) != 2 )); then
            ifconfig $interface inet 0
          fi
            exit_with_hooks 2
        fi

        ;;
esac

exit_with_hooks 0
Título: Re: DNSblemas
Publicado por: rnaveiras en 12 de Marzo de 2006, 04:49:51 pm
Bueno el script de tu dhclient es distinto al de debian o ubuntu, pero básicamente es el mismo problema.

Si te fijas en la función make_resolv_conf() ,  en la variable new_resolv_conf, se crea  lo que será el futuro nuevo fichero resolv.conf y luego al final se sobrescribe tu fichero /etc/resolv.conf con el nuevo. Para evitar esto solo tienes que cambiar la siguiente linea.

Código original
 mv $new_resolv_conf /etc/resolv.conf

Código nuevo
 mv $new_resolv_conf /etc/resolv.conf.dhcp

De esta forma, simplemente, tu cliente dchp te crear el fichero /etc/resolv.conf.dhcp y en tu fichero /etc/resolv.conf tendrás la información estática que tu configures y no sera reescrito por el cliente dhcp.

Un Saludo.. :)

Título: Re: DNSblemas
Publicado por: klondike en 05 de Abril de 2006, 10:05:55 pm
Al fin, muchas gracias Raúl.

El retraso  tiene una justificación; sólo puedo trabajar con Linux cuando tengo un poco de tiempo.
Título: Re: DNSblemas (SOLUCIONADO)
Publicado por: Liamngls en 05 de Abril de 2006, 10:15:02 pm
Así se hace monstruo , damos el tema por solucionado :-)
Título: Re: DNSblemas (SOLUCIONADO)
Publicado por: klondike en 05 de Abril de 2006, 10:35:54 pm
De acuerdo, que ya iba siendo siglo...
(al fin puedo conectarme desde mi Linux :-) )
Título: Re: DNSblemas (SOLUCIONADO)
Publicado por: Aj en 06 de Abril de 2006, 07:03:18 am
Veennnga pues....

Cierro tema
Título: Re: DNSblemas (SOLUCIONADO)
Publicado por: Dabo en 06 de Abril de 2006, 04:13:20 pm
Bien, por fin !  :destroyer: