LINUX.ORG.RU
решено ФорумMobile

Андроид и DNS

 , , ,


0

2

А подскажите пожалуйста какого хрена...

Вот собираю я андроид, хоть JB, хоть Marshmallow, что по ethernet, что по wifi, получает DNS от DHCP и им пользуется, локальные сервисы видны, всё работает. А с готовых телефонов и планшетов ничто локальное не ресолвится. Разница в getprop|grep dns в том, что на своих сборках net.dns3 пустое, а на коммерческих - 8.8.8.8 tcpdump показывает отсутствие обращений к локальному DNS. Как бороть? Если прописывать всё статически, работает и на обычных телефонах, но не все приложения (хром не может ресолвить локальные ресурсы, а firefox и встроенный броузер может). Есть ли какой штатный способ помимо рутования и редактирования пропсов, побороть эту фигню? Надо в основном чтобы работал всякий ssh, броузеры пофиг (хотя jenkins тоже нужен). По IP народу очень сложно.

★★★★★

Развернуть 8.8.8.8 в локалке на свой DNS?

vodz ★★★★★
()

У тебя какой-то странный телефон. У меня на стоковой прошивке всё нормально.

Black_Shadow ★★★★★
()
Ответ на: комментарий от Black_Shadow

Кстати вариант. Хотя DNS слушает ipv6 и андроид имеет local-link адрес как net.dns2, но надо таки проверить что оно работает...

slapin ★★★★★
() автор топика
Ответ на: комментарий от Black_Shadow

Если бы это был один телефон, я бы не напрягался. 3 планшета с ICS (4.0) - работают нормально. Планшет с JB (4.4) - не видит локальных ресурсов Другой планшет с JB видит локальные ресурсы, но в нём не прописан гугловский DNS (net.dns3 = 0.0.0.0) Телефон с 5.1 - не видит локальных ресурсов Телефон с 6.0 - не видит локальных ресурсов.

Самосборы из AOSP на разных китах от производителей на 4.0, 4.4, 5.1, 6.0, 7.0 - видят локальные ресурсы. Телевизорный ящик на 5.1 через ethernet видит локальные ресурсы.

Я хочу понять в чем прикол. Попробую что там может быть с ipv6 (хотя странно, ipv4-е DNS'ы нормально ресолвят ipv6). Ноутбуки и стационарники на всех ОС работают и всё видят нормально, iOS ни одного не приносили, про них не знаю, MacOS работает. Что-то именно с андроидом. На андроидах где всё работает я вижу отсутствие 8.8.8.8 в качестве DNS сервера, там где не работает - прописан 3-м, но первые 2 свои правильные. DHCP 8.8.8.8 не отдает, только свои. В интерфейсах нигде ничего статически не прописано.

slapin ★★★★★
() автор топика

Мобильный хром использует только гугловский DNS, тут проблему решили. Вопрос теперь с остальным...

slapin ★★★★★
() автор топика
Ответ на: комментарий от slapin

хотя странно, ipv4-е DNS'ы нормально ресолвят ipv6

Проблема может быть в том, что ipv6 у тебя работает, но DNS'ов там нет. В этом случае Android не будет использовать IPv4 DNS, а будет использовать IPv6 DNS гугла.

Black_Shadow ★★★★★
()
Ответ на: комментарий от Black_Shadow

он его не использует только если заблочить все гуглоDNS'ы. Чтобы он это перестал делать, нужно убирать все плюшки, «акселерацию», «предложения» и тп. Он по идее должен его только для гуглосайтов использовать, но почему-то использует для всего.

slapin ★★★★★
() автор топика
Ответ на: комментарий от Black_Shadow

ipv6-й DNS гугла в пропсах не появляется, только 8.8.8.8. досупен только local-link адрес моего DNS.

slapin ★★★★★
() автор топика
Ответ на: комментарий от slapin

он его не использует только если заблочить все гуглоDNS'ы. Чтобы он это перестал делать, нужно убирать все плюшки, «акселерацию», «предложения» и тп. Он по идее должен его только для гуглосайтов использовать, но почему-то использует для всего.

Ты какие-то ужасы рассказываешь. У меня куча андроид девайсов, и везде работают внутренние ресурсы. Почему?

Black_Shadow ★★★★★
()
Ответ на: комментарий от Black_Shadow

Сам удивляюсь. Я бы понял если бы всё не работало, а не работает только андроид. С хромом я просто сделал - заблочил те DNS, на которые он ходил, и он стал ходить на мой. Понятное дело, что штатно так нельзя оставлять, но блин...

slapin ★★★★★
() автор топика

Решил проблему благодаря анонимным подсказчикам.

1. Андроид использует 3 DNS сервера - net.dns1, net.dns2, net.ds3.

2. По DHCP оно умеет брать только первых 2. Если передается только 1, второй подставляется от гугла.

3. IPv6 DNS оно не умеет получать по DHCP и вообще. Однако по RADV всё работает. То есть ipv4 передаем по dhcp option 6, а IPv6 через RADV RDNSS.

Вендоры подставляют дефолтные DNS в сборку, а андроид их не выкидывает пачкой, а по одному, и обращается к рандомному из них. То есть решение - прописывать 2 DNS. Третий всегда вытеснится multicast'ом. Альтернативно - порписывать ipv6 DNS вместе с ipv4, тогда они вытеснят гугловские DNS'ы из настроек. На рутованных девайсах можно выкинуть гугловские DNS'ы из пропсов.

slapin ★★★★★
() автор топика
Последнее исправление: slapin (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.