Cyanogenmod 7 OpenVPN DNS no funciona

Quiero enrutar todo el tráfico de Internet de mi teléfono a través de mi VPN.

Configuré OpenVPN en mi htc Desire con Cyanogenmod 7.2.0.1-bravo a través del cuadro de diálogo de configuración de VPN integrado.

Cuando activo la opción Redirect-Gateway, la resolución de DNS (por ejemplo, google.com) ya no funciona. Así que no como otros donde la resolución de los nombres de host locales no funciona (eso no sería un problema para mí). El dispositivo todavía tiene una conexión a Internet (a través de la VPN) pero ya no puede resolver los nombres de dominio.

Los servidores de nombres parecen configurados correctamente (adb shell):

# cat /etc/resolv.conf
nameserver 8.8.8.8
nameserver 8.8.4.4

También probé la aplicación Configuración de OpenVPN, pero tan pronto como agregué 'redirect-gateway' al archivo de configuración de OpenVPN, tengo el mismo problema.

¿Qué podría causar este problema?

Respuestas (3)

Encontré ahora una solución yo mismo:

Primero, cat /etc/resolv.confno es una forma válida de mostrar los servidores DNS usados ​​en Android. Utilice getprop net.dns1en su lugar.

En mi caso, el servidor DNS no era el servidor de Google configurado /etc/resolv.conf, sino uno de mi ISP que solo acepta solicitudes de direcciones IP en su red, pero mi servidor OpenVPN está en otra red.

Para resolver este problema, acabo de modificar /system/etc/dhcpcd/dhcpcd-hooks/20-dns.confun poco:

# Set net.<iface>.dnsN properties that contain the
# DNS server addresses given by the DHCP server.

set_dns_props()
{
    case "${new_domain_name_servers}" in
    "")   return 0;;
    esac

    count=1
    for i in 1 2 3 4; do
        setprop dhcp.${interface}.dns${i} ""
    done

    count=1
    for dnsaddr in ${new_domain_name_servers}; do
        setprop dhcp.${interface}.dns${count} ${dnsaddr}
        count=$(($count + 1))
    done

    setprop net.dns1 8.8.8.8
    setprop net.dns2 8.8.4.4
}

case "${reason}" in
BOUND|INFORM|REBIND|REBOOT|RENEW|TIMEOUT)       set_dns_props;;
EXPIRE|FAIL|IPV4LL|RELEASE|STOP)                unset_dns_props;;
esac

Eso obligará al teléfono a usar siempre los servidores DNS de Google para todas las conexiones (por ejemplo, 3G, WiFi, OpenVPN, ...).

Lo he probado durante unas semanas y funciona perfecto.

Acabo de encontrarme con el mismo problema. Todo funciona menos dns.

Encontré antes que mi proveedor celular, Bell, bloquea UDP 53 a cualquier cosa menos a sus servidores.

Tal vez dns no esté pasando por openvpn en android, pero openvpn está cambiando los servidores.

Me di cuenta de que algunas otras aplicaciones no pasaban por openvpn, como Play Store.

Conseguí que funcionara perfectamente con la aplicación 'openvpn para Android' jugando con las opciones proporcionadas dentro de la aplicación y no jugando con otros... con 'openvpn connect', funcionó solo para aplicaciones que no son de mercado/sistema operativo después de configurar manualmente: setprop net .dns1 xxx cada vez que se conecta una VPN... Espero que ayude.