簡體   English   中英

如何為 Android 或 Flutter 應用程序設置自定義 DNS

[英]How to set Custom DNS for Android or Flutter app

我想在我的 android 或 flutter 應用程序中添加自定義 IPV4 dns,例如 1.1.1.1,這意味着我的應用程序(例如 firebase/glide/retrofit)的所有流量都必須從我的自定義 dns 路由

我應該如何實施?

我已經在 NDK 中嘗試了一些方法來為整個 android 設備設置 DNS 但我不想觸摸 android DNS,只是我的應用程序應該使用 dns

你想達到什么目的?

這看起來像一個XY 問題 您可能正在嘗試通過您的自定義 DNS 實現一些我們不知道的事情(比如用不同的服務器替換對特定主機的請求),但我們不確定,因為您認為將 DNS 服務器更改為您的應用程序會無論遇到什么問題,它都是一個更好的解決方案,但事實是這很難。

雖然技術上可行,但極具挑戰性。

DNS 是不可能只為一個應用程序更改的,因為 DNS 配置對設備是全局的,所以任何網絡請求將默認使用設備的 DNS 服務器。

實現這一點的唯一可能方法是重新發明輪子:使用DnsResolver手動查詢每個目標主機的 DNS 服務器,然后向特定的 IP 地址發出請求。

但是對於 HTTP 你會發現,如果你向 IP 地址發出請求,該 IP 地址將是原始 header 而不是域名,唯一的解決方案是使用裸 sockets 並實現所有 8827186872115 有效載荷和手動標頭以提供不同的來源。

它也不適用於 Firebase 和其他閉源 SDK,因為您無法修改它們。 它僅適用於由您自己的代碼或允許您更改服務器地址的 SDK 發送的請求。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM