Использование DNS-сервера на базе Android для фильтрации запросов веб-сайтов
Я разрабатываю приложение с системными привилегиями на рутированном устройстве. Мне удалось изменить настройки DNS программно для соединения WIFI, к которому я подключен. Для проверки запускаю приложение, подключаю устройство через USB и запускаю команду "getprop" из "adb shell". Приложение успешно изменяет DNS для сеанса, и браузеры блокируются от подключения к любому веб-сайту с использованием доменов.
Я установил приложение под названием DNS-сервер, которое будет запускать DNS-сервер с моего устройства Android. Я установил DNS-сервер, чтобы блокировать запросы к определенным теневым веб-сайтам и перенаправлять все остальные запросы на исходный DNS-сервер, чей IP-адрес извлекается из настроек подключения WIFI.
Мое приложение, с другой стороны, изменит настройки DNS устройства и укажет на открытый IP-адрес устройства. Таким образом, каждый запрос будет проходить через приложение DNS-сервера, которое, в свою очередь, будет отфильтровывать заблокированные веб-сайты и перенаправлять запросы на исходный DNS-сервер.
Проблема заключается в связи между каждым запросом браузера / приложения и приложением DNS-сервера. Из журналов DNS-сервер прослушивает соединения, но не получает никаких запросов. Есть ли другой способ добиться этого или, может быть, кто-то может просветить меня, если я что-то не так?
Из моего приложения я попытался установить DNS-сервер устройства на 127.0.0.1 (loopback), IP-адрес самого устройства (как общего, так и частного), но безуспешно. Соединение не может быть установлено.
Дополнительная информация: DNS-серверу требуется порт для прослушивания, но я не могу установить этот порт глобально (я предполагаю, что порт DNS по умолчанию 53 используется для каждого запроса).