需求是近日搭了个家用 NAS ,需要解决手机和电脑平台指定到 NAS 上的数据同步问题。
NAS 上搭好了 web 服务,希望可以外网和内网都能访问。服务用 nginx 绑定了域名,这样确实比 ip 方便很多,但是折腾到外网的时候,因为我没有和联通交涉的经验,觉得无论是开 ipv6 还是软路由动态 ipv4 打洞不确定性都比较大,于是用了最简单的方案是接了台云机器中转的内网穿透暴露到公网。但是考虑到速度和云流量的问题,最理想的情况是在家里时直接走内网,出门了再转到公网。
电脑上这个情况很好解决,改一下 hosts 文件直接把域名定到内网 ip 就万事大吉。但是手机上怎么解决呢,不是很熟悉安卓也没有 root 经验,有什么第三方软件可以完成这个操作吗?
最好不要 root ,有没有衍生问题还两说,主要我总不可能把我几台手机和我家里人手机全都 root 了吧,那也太麻烦了
1 Archeb 2023-02-05 07:49:06 +08:00 ![]() 如果客户端使用路由器 DNS 的话,可以在路由器 DNS 那里设置一下 hosts 。 |
![]() | 2 mgrddsj 2023-02-05 07:51:28 +08:00 via Android 完全符合你的需求的 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 检索。 |
![]() | 3 bjzhush 2023-02-05 07:53:33 +08:00 via iPhone 你不熟悉的是 Google ,这种问题一搜就解决了 |
![]() | 4 ohmyself 2023-02-05 08:12:46 +08:00 via iPhone ipv6 公网默认开的,打啥交道。就这个最简单了,nas 里安装个 ddns-go ;直接 ipv6 绑定域名 |
5 abc8678 2023-02-05 08:29:53 +08:00 via Android 手机上创建个 VPN?或者路由器劫持一下主机名什么的 |
6 fantasticlw 2023-02-05 08:40:26 +08:00 via iPhone 一个方法是 NAS 上部署一个 DNS 服务器,为你需要的域名指向内网 IP ,然后家里路由器的首选 DNS 服务器填你的 NAS IP 地址。 目前我采用的方式是部署 Nas 部署 Adguard Home 来解决这个问题的,还能进行一些广告过滤和 DoH |
7 datocp 2023-02-05 09:13:55 +08:00 via Android 使用 linux 类路由,像 openwrt 。dnsmasq 参数,address=/time.windows.com/192.168.1.1 。就这么简单。 |
![]() | 8 xuangoer666 2023-02-05 10:24:34 +08:00 via Android 我是移动的,用 ddns 解析 ipv6 后发现域名只能在内网访问。。。 |
9 duke807 2023-02-05 10:31:49 +08:00 via Android 我宁愿用两个子域名,手动选择,方便在家测试外网访问是否通畅 |
10 fantasticlw 2023-02-05 10:51:50 +08:00 ![]() @xuangoer666 可能是光猫和路由器的 v6 防火墙打开了 |
![]() | 11 LeeReamond OP @ohmyself 然而我上那些 ipv6 监测网站最后说我这个只支持 v4 不支持 v6 啊 |
![]() | 12 Joshuahui 2023-02-05 12:01:32 +08:00 via Android adaway 有免 root 模式,还可以屏蔽广告 |
![]() | 13 ShineyWang 2023-02-05 13:18:36 +08:00 via Android |
![]() | 14 Shiroka 2023-02-05 13:20:13 +08:00 |
15 rev1si0n 2023-02-05 13:49:23 +08:00 自建一个 dnsmasq ,然后所有手机都设置使用这个 DNS ,配置一下让 dnsmasq 读取 /etc/hosts ,在 hosts 改掉响应地址。缺点是你需要购买公网服务器。 |
16 rev1si0n 2023-02-05 13:53:17 +08:00 没看清楚,家里用高级一点的路由器配置一下覆写掉原来的解析结果应该就可以了吧。或者你的 NAS 应该可以跑 dnsmasq ,跑一个然后把所有手机配置一下 DNS 呗 |
17 flush9f 2023-02-05 13:57:10 +08:00 最简单的方法,在内网路由器上 NAT 一次,DNS 搞的话容易有各种问题,反正你的公网 IP 固定的,LAN 口 NAT 一次比 DNS 简单多了 |
![]() | 18 qiaoyurensheng 2023-02-05 14:13:10 +08:00 我是通过一个中转网页(仅一个 html )实现的,中转网页部署在 cloudflare page 中,由中转网页判断当前设备在内网还是在外网,然后跳转到不同的域名实现内外网访问。https://github.com/qiaoyukeji/go_lan_or_wan |
19 jeesk 2023-02-05 14:57:23 +08:00 路由器可以指定 dns 吧? a/4a 记录可以吧? |
![]() | 20 mgrddsj 2023-02-05 15:06:40 +08:00 @ShineyWang #13 这个…应该是实现不了的吧,至少我没试过,也没有过这样的需求。 |
21 stonesirsir 2023-02-05 19:50:31 +08:00 用 vpn 吧 |
![]() | 22 yzkos 2023-02-05 20:41:49 +08:00 ![]() 我和楼主一样的情况 方案一(最方便):如果路由器支持自定义 hosts 设置给内网穿透的域名设置一下; 方案二:路由器不支持自定义 hosts ,把路由器首选 DNS 修改为群晖的 IP ,群晖自带一个 DNS Server 在里面把内网穿透域名设置一下解析到 NAS 。 以上两种方案只要连接家里 WiFi ,域名就走内网,不需要切换 |
![]() | 23 learningman 2023-02-05 22:28:49 +08:00 高版本的安卓可以自己设置安全 dns ,你自己搭一个想怎么劫持怎么劫持。 比如说,从家庭 ip 来的请求给内网 IP ,其他的给公网反代。 |
![]() | 24 LnTrx 2023-02-05 23:01:53 +08:00 个人还是建议直接解析公网 IP 或者用两个域名。即使路由支持 hosts ,也可能会被 DoT/DoH 绕过,总之还是不太彻底。 |
25 mscsky 2023-02-06 09:17:35 +08:00 搜 virtualhosts app |
![]() | 26 xiang0818 2023-02-06 10:33:53 +08:00 内网的话,直接买一个可以修改 host 的路由器就好了.发骚小米路由器 app 家里的 host ,其他牌子不清楚。 |
![]() | 27 ColinLi 2023-02-06 11:35:07 +08:00 内网的话路由器上设置 host 就行,外网使用 ddns ,然后路由端口映射内网服务,最好再在外网搞个云服务器搞个 nginx 进行重定向,这样外网访问不用写端口号比较方便 |
28 18xlX5iTe9mdoau0 我之前的方案是内网树莓派搭建一个 DNS ,现成方案用的 AdGuard Home ,可以 NAS 的 Docker 安装,然后设备设置这个 DNS 服务器 ip 就好,我是直接改了路由器 DHCP 分配的 DNS 。或者买个便宜域名解析内网地址也可 |
29 dismonster 2023-02-06 17:23:59 +08:00 直接给你个方案吧,目前我就在用 主要就是直接上 ipv6 +ddns-go 解决 90%以上问题(如果家里网络和客户端所在网络都支持 ipv6,那就是 100%) 手机使用不使用 wifi 的情况下,各大运营商应该都是直接支持 ipv6 的,在户外同步备份文件或者照片什么的一点问题没有 如果连入其它 wifi 网络的情况下,要看你连接的网络是否支持 ipv6 公司如果支持 Ipv6,直接可以访问到家里 nas |