Cyanogenmod 7 OpenVPN DNS не работает

Я хочу направить весь интернет-трафик моего телефона через VPN.

Я настроил OpenVPN на своем htc Desire с помощью Cyanogenmod 7.2.0.1-bravo через встроенный диалог настроек VPN.

Когда я активирую опцию Redirect-Gateway, разрешение DNS (например, google.com) больше не работает. Так что не так, как другие, где разрешение локальных имен хостов не работает (для меня это не было бы проблемой). Устройство по-прежнему подключено к Интернету (через VPN), но оно больше не может разрешать доменные имена.

Сервера имен выглядят правильно настроенными (оболочка adb):

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

Я также протестировал приложение «Настройки OpenVPN», но как только я добавлю «redirect-gateway» в файл конфигурации openvpn, у меня возникает та же проблема.

Что может вызвать эту проблему?

Ответы (3)

Теперь я нашел решение сам:

Во-первых, cat /etc/resolv.confэто недопустимый способ отображения используемых DNS-серверов под Android. Используйте getprop net.dns1вместо этого.

В моем случае DNS-сервером был не сервер Google, как указано в /etc/resolv.conf, а один из моих интернет-провайдеров, который принимает запросы только от IP-адресов в своей сети, но мой сервер OpenVPN находится в другой сети.

Чтобы решить эту проблему, я /system/etc/dhcpcd/dhcpcd-hooks/20-dns.confнемного изменил:

# 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

Это заставит телефон всегда использовать DNS-серверы Google для всех подключений (например, 3G, WiFi, OpenVPN, ...).

Я тестировал это в течение нескольких недель, и он работает отлично.

Я только что столкнулся с той же проблемой. Все работает, кроме днс.

Ранее я обнаружил, что мой сотовый провайдер Bell блокирует udp 53 для всего, кроме их серверов.

Возможно, DNS не проходит через openvpn на Android, но openvpn меняет серверы.

Я заметил, что некоторые другие приложения не проходят через openvpn, например, магазин игр.

Я заставил его отлично работать с приложением «openvpn для Android», играя с предоставленными параметрами в приложении, а не с другими вознями ... с «openvpn connect» он работал только для приложений, не являющихся рынком / ОС после ручной настройки: setprop net .dns1 xxx каждый раз после подключения к VPN... Надеюсь, это поможет.