手机不 root 的话有什么办法可以为域名指定 IP 吗?

2023-02-05 07:39:21 +08:00
 LeeReamond

需求是近日搭了个家用 NAS ,需要解决手机和电脑平台指定到 NAS 上的数据同步问题。

NAS 上搭好了 web 服务,希望可以外网和内网都能访问。服务用 nginx 绑定了域名,这样确实比 ip 方便很多,但是折腾到外网的时候,因为我没有和联通交涉的经验,觉得无论是开 ipv6 还是软路由动态 ipv4 打洞不确定性都比较大,于是用了最简单的方案是接了台云机器中转的内网穿透暴露到公网。但是考虑到速度和云流量的问题,最理想的情况是在家里时直接走内网,出门了再转到公网。

电脑上这个情况很好解决,改一下 hosts 文件直接把域名定到内网 ip 就万事大吉。但是手机上怎么解决呢,不是很熟悉安卓也没有 root 经验,有什么第三方软件可以完成这个操作吗?

最好不要 root ,有没有衍生问题还两说,主要我总不可能把我几台手机和我家里人手机全都 root 了吧,那也太麻烦了

3265 次点击
所在节点    程序员
29 条回复
Archeb
2023-02-05 07:49:06 +08:00
如果客户端使用路由器 DNS 的话,可以在路由器 DNS 那里设置一下 hosts 。
mgrddsj
2023-02-05 07:51:28 +08:00
完全符合你的需求的 app:
https://play.google.com/store/apps/details?id=dns.hosts.server.change

Clash For Android 其实也有这个功能,在 Settings - Override - Hosts

但是个人建议换个思路,直接在家里路由器的 DNS 上解决问题。如果是 openwrt 的路由器,那可以直接改 dnsmasq 的配置文件来实现重定向。

如果路由器不能修改 dnsmasq 的配置或者没有 “hosts” 设置,那可以在 NAS 上搭个 dnsmasq ,或者更进一步用 AdGuard Home/Pi Hole 这样的 DNS 服务器,里面配置好域名指定 IP ,再把路由器的 DNS 设置为 NAS 上的 DNS 服务器就好了。这样,局域网内所有使用路由器分配的 DNS 的设备都会通过自建的 DNS 服务器进行 DNS 检索。
bjzhush
2023-02-05 07:53:33 +08:00
你不熟悉的是 Google ,这种问题一搜就解决了
ohmyself
2023-02-05 08:12:46 +08:00
ipv6 公网默认开的,打啥交道。就这个最简单了,nas 里安装个 ddns-go ;直接 ipv6 绑定域名
abc8678
2023-02-05 08:29:53 +08:00
手机上创建个 VPN?或者路由器劫持一下主机名什么的
fantasticlw
2023-02-05 08:40:26 +08:00
一个方法是 NAS 上部署一个 DNS 服务器,为你需要的域名指向内网 IP ,然后家里路由器的首选 DNS 服务器填你的 NAS IP 地址。
目前我采用的方式是部署 Nas 部署 Adguard Home 来解决这个问题的,还能进行一些广告过滤和 DoH
datocp
2023-02-05 09:13:55 +08:00
使用 linux 类路由,像 openwrt 。dnsmasq 参数,address=/time.windows.com/192.168.1.1 。就这么简单。
xuangoer666
2023-02-05 10:24:34 +08:00
我是移动的,用 ddns 解析 ipv6 后发现域名只能在内网访问。。。
duke807
2023-02-05 10:31:49 +08:00
我宁愿用两个子域名,手动选择,方便在家测试外网访问是否通畅
fantasticlw
2023-02-05 10:51:50 +08:00
@xuangoer666 可能是光猫和路由器的 v6 防火墙打开了
LeeReamond
2023-02-05 11:31:41 +08:00
@ohmyself 然而我上那些 ipv6 监测网站最后说我这个只支持 v4 不支持 v6 啊
Joshuahui
2023-02-05 12:01:32 +08:00
adaway 有免 root 模式,还可以屏蔽广告😆
ShineyWang
2023-02-05 13:18:36 +08:00
@mgrddsj 你说 clash 可以
我想了解一下,如果想要修改 localhost 的 ip 地址
应该怎么设置?
Shiroka
2023-02-05 13:20:13 +08:00
DNSPod 公共解析 -> 我的配置 -> 自定义解析,为你的域名指定 IP

rev1si0n
2023-02-05 13:49:23 +08:00
自建一个 dnsmasq ,然后所有手机都设置使用这个 DNS ,配置一下让 dnsmasq 读取 /etc/hosts ,在 hosts 改掉响应地址。缺点是你需要购买公网服务器。
rev1si0n
2023-02-05 13:53:17 +08:00
没看清楚,家里用高级一点的路由器配置一下覆写掉原来的解析结果应该就可以了吧。或者你的 NAS 应该可以跑 dnsmasq ,跑一个然后把所有手机配置一下 DNS 呗
flush9f
2023-02-05 13:57:10 +08:00
最简单的方法,在内网路由器上 NAT 一次,DNS 搞的话容易有各种问题,反正你的公网 IP 固定的,LAN 口 NAT 一次比 DNS 简单多了
qiaoyurensheng
2023-02-05 14:13:10 +08:00
我是通过一个中转网页(仅一个 html )实现的,中转网页部署在 cloudflare page 中,由中转网页判断当前设备在内网还是在外网,然后跳转到不同的域名实现内外网访问。https://github.com/qiaoyukeji/go_lan_or_wan
jeesk
2023-02-05 14:57:23 +08:00
路由器可以指定 dns 吧? a/4a 记录可以吧?
mgrddsj
2023-02-05 15:06:40 +08:00
@ShineyWang #13 这个…应该是实现不了的吧,至少我没试过,也没有过这样的需求。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/913260

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX