GNU/Linux >> Tutoriales Linux >  >> Ubuntu

¿El cliente de Openvpn no obtiene información de DNS?

Estoy usando un servidor OpenVPN que se ejecuta en un enrutador instalado con DD-WRT y lo estoy usando para enrutar todo el tráfico a través del servidor VPN. Me estoy conectando desde varios dispositivos:computadora portátil con Windows, dispositivos Android y máquinas Linux. El problema que tengo ahora es reciente y antes todo funcionaba bien. Este problema ocurre solo en las máquinas cliente con Linux (ubuntu 16.04). El cliente de ubuntu no obtiene las direcciones del servidor DNS automáticamente. Después de investigar un poco, descubrí que debo agregar lo siguiente al final de la configuración del cliente:

script-security 2
up /etc/openvpn/update-resolv-conf
down /etc/openvpn/update-resolv-conf

Esto no ayudó, así que también agregué:

dhcp-option DNS a.b.c.d
dhcp-option DNS e.f.g.h

Las IP se toman del enrutador y hace que todo funcione. Hasta ahora era suficiente tener "redirect-gateway def1" en la configuración del cliente.

No me gusta esta solución de agregar los comandos "dhcp-option DNS" porque tengo que estar atento a cualquier cambio en el servidor DNS. ¿Hay alguna forma de deshacerse de agregar la opción "dhcp-option DNS"?

Respuesta aceptada:

Tuve el mismo problema pero logré resolverlo usando el siguiente truco:
En lugar de up /etc/openvpn/update-resolv-conf Creé un archivo llamado up.sh en /etc/openvpn.
Ejecute el comando sudo gedit /etc/openvpn/up.sh y pega lo siguiente:

#! /bin/bash
DEV=$1

if [ ! -d /tmp/openvpn ]; then
mkdir /tmp/openvpn
fi
CACHE_NAMESERVER="/tmp/openvpn/$DEV.nameserver"
echo -n "" > $CACHE_NAMESERVER

dns=dns
for opt in ${!foreign_option_*}
do
eval "dns=${$opt#dhcp-option DNS }"
if [[ $dns =~ [0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3} ]]; then
if [ ! -f /etc/resolv.conf.default ]; then
cp /etc/resolv.conf /etc/resolv.conf.default
fi

cat /etc/resolv.conf | grep -v ^# | grep -v ^nameserver > /tmp/resolv.conf
echo "nameserver $dns" >> /tmp/resolv.conf
echo $dns >> $CACHE_NAMESERVER
cat /etc/resolv.conf | grep -v ^# | grep -v "nameserver $dns" | grep nameserver >> /tmp/resolv.conf
mv /tmp/resolv.conf /etc/resolv.conf

fi
done

Guárdelo y ejecute sudo chmod +x /etc/openvpn/up.sh Luego crea otro archivo /etc/openvpn/down.sh y pega lo siguiente en él

#! /bin/bash
echo "Restoring original nameservers"
rm -f /etc/resolv.conf
ln -s /run/resolvconf/resolv.conf /etc/resolv.conf 
echo "Done restoring nameservers cheers"

Guárdelo y ejecute sudo chmod +x /etc/openvpn/down.sh

Ahora elimina las líneas:

script-security 2
up /etc/openvpn/update-resolv-conf
down /etc/openvpn/update-resolv-conf

Y reemplácelos con:

 script-security 2
    up /etc/openvpn/up.sh
    down /etc/openvpn/down.sh

Ubuntu
  1. ¿Cómo maneja Linux múltiples separadores de rutas consecutivas (/home////username///file)?

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

  3. /etc/x11/xorg.conf no existe??

  4. ¿Por qué /bin/sh apunta a /bin/dash y no a /bin/bash?

  5. Administrador de red:¿Cómo detener la actualización de Nm /etc/resolv.conf?

Ejemplo de archivo /etc/multipath.conf

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?

/etc/passwd muestra al usuario en un grupo, pero /etc/group no

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

Diferencia entre /etc/hosts y /etc/resolv.conf