Я настроил DNS-преобразователь и восходящий сервер nginx в качестве рабочего сервера «DNS over TLS». (и DNS через HTTPS, но Android использует TLS)
Пока это прекрасно работает, но я хочу сделать его приватным с какой-то аутентификацией.
Только определенные пользователи должны иметь возможность использовать его.
Проблема в том, что ... например, в устройствах Android можно ввести только один "частный DNS-сервер" - я не нашел подходящего метода аутентификации для этого сценария.
Кто-нибудь знает, как «сделать мой DNS через TLS-сервер частным с Android 9»?
возможное «почти решение»: настройте nginx так, чтобы разрешать соединения только с определенных IP-адресов. (сгенерируйте список разрешенных IP-адресов с помощью скрипта и включите)
Основная проблема заключается в том, что при изменении IP-адреса, возможно, ни клиент, ни провайдер DynDNS больше не в состоянии разрешить DoT.
Еще не проверено, но я думаю, что это не должно быть предпочтительным решением. Предложения приветствуются.
Ни DoT, ни DoH на самом деле не указаны и не реализованы с учетом аутентификации клиента.
Несмотря на то, что можно представить себе использование таких функций протокола, как клиентские сертификаты (либо), либо механизмы аутентификации HTTP (DoH), либо даже TSIG (оба), обычные обычные клиенты не реализуют их.
Однако для DoH у вас есть возможность просто указать секрет в компоненте пути URL-адреса. Итак, у вас есть простой вариант, который не требует, чтобы клиент даже знал, что он аутентифицируется.
Я думаю, вам придется прибегнуть к ограничению доступа по IP для DoT, кроме требований к клиентской функциональности, которой обычно нет.
(Теоретически я предполагаю, что вы можете проверить SNI, ожидая секрета в имени хоста, но это будет очень слабым, поскольку предполагаемый секрет не будет храниться в секрете. На самом деле не летает, но имя хоста является единственным параметром конфигурации, например, для Клиент Android, поэтому вариантов не так много.)