Изменить DNS для мобильных данных без использования приложения

(Мой телефон рутирован и работает под управлением Android 5.1)

Как можно изменить DNS-адреса мобильных данных (и, если возможно, постоянно) без приложения?

Как изменить DNS мобильных подключений на Android KitKat? есть несколько ответов на этот вопрос — разные подходы, по крайней мере 2 из них не требуют приложения.

Ответы (4)

Я не нашел способ надежно сделать это без приложения.

Я часто использую OpenDNS Family Shield , но иногда он блокирует посещение какого-то конкретного хакерского сайта и тогда мне нужно быстро и легко сменить DNS-сервера.

Раньше я использовал Set DNS , но он перестал работать в Android 4.3 и более поздних версиях, поэтому я создал Override DNS , новое приложение, которое имитирует поведение Set DNS, но оно обновлено для работы даже в Lollipop. У него есть и другие приятные функции, такие как защита PIN-кодом и фильтр Wi-Fi SSID.

Единственный способ, который я вижу, чтобы сделать это без приложения, - это что-то вроде iptablesправила для перенаправления любого трафика, идущего на udp/53, на какой-то другой ip. Аналогичная процедура показана в ветке XDA .

Вставляю сюда iptablesправила для полноты (я их не проверял)

$IPTABLES -t nat -D OUTPUT -p tcp --dport 53 -j DNAT --to-destination 208.67.222.222:53 || true
$IPTABLES -t nat -D OUTPUT -p udp --dport 53 -j DNAT --to-destination 208.67.222.222:53 || true
$IPTABLES -t nat -I OUTPUT -p tcp --dport 53 -j DNAT --to-destination 208.67.222.222:53
$IPTABLES -t nat -I OUTPUT -p udp --dport 53 -j DNAT --to-destination 208.67.222.222:53

Все, что направляется с устройства Android на любой IP-адрес, порт UDP и TCP 53, перенаправляется на 208.67.222.222один из DNS-серверов OpenDNS.

Эти команды должны быть помещены в скрипт, который запускается при каждой загрузке устройства. Эта функциональность зависит от вашего конкретного ПЗУ. Я не знаю, можно ли сделать что-то подобное в стоковом ПЗУ без использования приложения. Override DNS решает и эту проблему.

Я пытаюсь использовать эти настройки, но получаю сообщение об ошибке «Неверный IP-адрес». Я пытаюсь использовать Google DNS 8.8.8.8 и 8.8.4.4.
Многие приложения утверждают, что дают те же возможности без рута. Есть ли какая-то «уловка» в этих приложениях?
@ mac9416 Я не знаю о каком-либо конкретном поведении, связанном с этими приложениями (все они создают фальшивую локальную VPN), но первоначальный вопрос был о том, как добиться этого без какого-либо конкретного приложения, поэтому я думаю, что мы идем OT.

Начиная с Android 9 Pie можно глобально изменить DNS, если они поддерживают TLS . Просто войдите

Settings → Network & internet → Advanced → Private DNS

У меня Redmi Note 9 Pro Max под управлением Android 10. Когда я ввожу IP-адрес в имя хоста частного DNS-провайдера, он отключает кнопку сохранения, как только я ввожу первый символ после 3-й точки. Разве IP-адреса не разрешены? Пытаюсь ввести 208.67.222.222 или 208.67.220.220
Есть ли вместо этого какой-либо домен, который указывает на эти IP-адреса Open DNS?
Это действительно работает в 2021 году. Для Cloudflare вам нужно добавить 1dot1dot1dot1.cloudflare-dns.com blog.cloudflare.com/…
@IsmailS: чтобы получить имя хоста для IP-адреса, вы можете использовать dig -x 208.67.222.222или dnschecker.org/reverse-dns.php
Некоторые сетевые провайдеры в некоторых странах блокируют разрешение этих частных DNS-серверов, поэтому функция частного DNS не всегда работает.

Эта информация от 2014 года. Но она все еще может работать. Я не в состоянии проверить это в данный момент, но так как вы укоренены. Вы можете попробовать добавить настройки DNS в файл build.prop и посмотреть, приживется ли он. Добавление следующего в файл build.prop должно добавить Google в качестве вашего DNS-сервера.

net.rmnet0.dns1=8.8.8.8
net.rmnet0.dns2=8.8.4.4
net.dns1=8.8.8.8
net.dns2=8.8.4.4

Взято из этого поста на форумах Nexus 5 на XDA. Этот пост можно найти здесь. Пункт №21 — это настройки DNS.

Я попробовал это для развлечения на своем Lenovo P2 под управлением Android 7.0, и это не сработало.

Это невозможно без приложения, это должно быть с приложением. Во-вторых, вам нужен root-доступ для изменения DNS 1G/2G/3G/4G.

« Это невозможно без приложения, это должно быть с приложением » — есть веская причина?
Потому что андроид не поддерживает его по умолчанию, поэтому вам нужно специальное приложение, чтобы возиться с ним.
Android поддерживает редактирование build.prop, вам просто нужен файловый менеджер с root-доступом.
@DanB +1, собирался прокомментировать это, сказав это. Смотрите мой ответ для метода build.prop. Если Вы заинтересованы.