Я хочу направить весь интернет-трафик моего телефона через 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, у меня возникает та же проблема.
Что может вызвать эту проблему?
Теперь я нашел решение сам:
Во-первых, 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... Надеюсь, это поможет.