kotlin 如何为Android或Flutter应用程序设置自定义DNS

qmelpv7a  于 2022-12-30  发布在  Kotlin
关注(0)|答案(1)|浏览(296)

我想在我的android或flutter应用程序中添加自定义IPV4 DNS(如1.1.1.1),这意味着我的应用程序(如firebase/glide/retrofit)的所有流量都必须从我的自定义DNS路由
我应该如何执行呢?
我已经尝试了一些方法在NDK设置DNS为整个Android设备,但我不想接触Android DNS,只是我的应用程序应该使用该DNS

mum43rcc

mum43rcc1#

你想要达到什么目标?

这看起来像一个XY problem。您可能正在尝试使用自定义DNS实现一些我们不知道的功能(例如将对某个主机的请求替换为不同的服务器),但我们无法确定,因为您认为将DNS服务器更改为您的应用将是一个更好的解决方案,无论您遇到什么问题,但事实是这非常困难。

虽然技术上可行,但极具挑战性。

不可能仅为一个应用程序更改DNS,因为DNS配置对于设备是全局性的,因此任何网络请求都将默认使用设备的DNS服务器。
实现这一目标的唯一可能途径是重新发明轮子:使用DnsResolver手动查询每个目标主机的DNS服务器,然后向特定IP地址发出请求。
但使用HTTP时,您会发现如果您向一个IP地址发出请求,该IP地址将成为源报头,而不是域名,唯一的解决方案是使用裸套接字并手动实现所有HTTP有效载荷和报头,以给予不同的源。
它也不适用于Firebase和其他闭源SDK,因为你不能修改它们,它只适用于你自己的代码发送的请求,或者允许你修改服务器地址的SDK。

相关问题