Actualizar automáticamente resolv.conf con OpenVPN – Debian 6 y 7

15 10 2013

Cuando se realiza una conexión mediante openvpn en linux (en windows y mac parece que sí funciona) los servidores de nombres no se actualizan automáticamente en nuestra máquina local, por lo que no tendremos la resolución de los nombres internos de nuestra red privada.

Para arreglarlo se debe colocar en:
/usr/share/openvpn/update-resolv-conf
el siguiente script:
#!/bin/bash
#
# Parses DHCP options from openvpn to update resolv.conf
# To use set as 'up' and 'down' script in your openvpn *.conf:
# up /etc/openvpn/update-resolv-conf
# down /etc/openvpn/update-resolv-conf
#
# Used snippets of resolvconf script by Thomas Hood
# and Chris Hanson
# Licensed under the GNU GPL. See /usr/share/common-licenses/GPL.
# 10/2013 rikr_@hotmail.com Fixed some problems with ud/down under debian systems
# 07/2013 colin@daedrum.net Fixed intet name
# 05/2006 chlauber@bnc.ch
#
# Example envs set from openvpn:
# foreign_option_1='dhcp-option DNS 193.43.27.132'
# foreign_option_2='dhcp-option DNS 193.43.27.133'
# foreign_option_3='dhcp-option DOMAIN be.bnc.ch'
#[ -x $(which resolvconf) ] || exit 0
[ -x /sbin/resolvconf ] || exit 0
case $script_type in
up)
for optionname in ${!foreign_option_*} ; do
option="${!optionname}"
echo $option
part1=$(echo "$option" | cut -d " " -f 1)
if [ "$part1" == "dhcp-option" ] ; then
part2=$(echo "$option" | cut -d " " -f 2)
part3=$(echo "$option" | cut -d " " -f 3)
if [ "$part2" == "DNS" ] ; then
IF_DNS_NAMESERVERS="$IF_DNS_NAMESERVERS $part3"
fi
if [ "$part2" == "DOMAIN" ] ; then
IF_DNS_SEARCH="$IF_DNS_SEARCH $part3"
fi
fi
done
R=""
if [ "$IF_DNS_SEARCH" ] ; then
R="${R}search $IF_DNS_SEARCH
"
fi
for NS in $IF_DNS_NAMESERVERS ; do
R="${R}nameserver $NS
"
done
#echo -n "$R" | resolvconf -p -a "${dev}"
echo -n "$R" | /sbin/resolvconf -a "${dev}.inet"
;;
down)
/sbin/resolvconf -d "${dev}.inet"
;;
esac

Se le deben dar permisos de ejecución:
# chmod ugo+x /usr/share/openvpn/update-resolv-conf

Instalar el siguiente paquete, si es que no lo tenemos ya:
# apt-get install resolvconf

Ahora, dentro de nuestro archivo de conexión, habitualmente llamado “client.ovpn” hay que incluir las siguientes líneas antes de la definición de los certificados:
script-security 2
up /usr/share/openvpn/update-resolv-conf
down /usr/share/openvpn/update-resolv-conf

Ya esta todo, al conectar debería actualizarse el archivo resolv.conf y al desconectar volver a quedar como estaba antes.

# openvpn --config client.ovpn

En el caso de tener el fichero /etc/resolv.conf editado a mano, seguramente los cambios se perderán al reiniciar, ya que resolvconf lo cambia por un enlace simbólico a su directorio. Pasa solucionarlo, añadir dentro de la interfaz que corresponda en /etc/network/interfaces la línea:

dns-nameservers 8.8.8.8
dns-nameservers 208.67.222
dns-nameservers 8.8.4.4

Más información: https://wiki.debian.org/NetworkConfiguration

Advertisements

Actions

Information

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s




%d bloggers like this: