V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
LeeReamond
V2EX  ›  程序员

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

  •  
  •   LeeReamond · 2023-02-05 07:39:21 +08:00 via Android · 3276 次点击
    这是一个创建于 658 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

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

    rev1si0n
        15
    rev1si0n  
       2023-02-05 13:49:23 +08:00
    自建一个 dnsmasq ,然后所有手机都设置使用这个 DNS ,配置一下让 dnsmasq 读取 /etc/hosts ,在 hosts 改掉响应地址。缺点是你需要购买公网服务器。
    rev1si0n
        16
    rev1si0n  
       2023-02-05 13:53:17 +08:00
    没看清楚,家里用高级一点的路由器配置一下覆写掉原来的解析结果应该就可以了吧。或者你的 NAS 应该可以跑 dnsmasq ,跑一个然后把所有手机配置一下 DNS 呗
    flush9f
        17
    flush9f  
       2023-02-05 13:57:10 +08:00
    最简单的方法,在内网路由器上 NAT 一次,DNS 搞的话容易有各种问题,反正你的公网 IP 固定的,LAN 口 NAT 一次比 DNS 简单多了
    qiaoyurensheng
        18
    qiaoyurensheng  
       2023-02-05 14:13:10 +08:00
    我是通过一个中转网页(仅一个 html )实现的,中转网页部署在 cloudflare page 中,由中转网页判断当前设备在内网还是在外网,然后跳转到不同的域名实现内外网访问。https://github.com/qiaoyukeji/go_lan_or_wan
    jeesk
        19
    jeesk  
       2023-02-05 14:57:23 +08:00
    路由器可以指定 dns 吧? a/4a 记录可以吧?
    mgrddsj
        20
    mgrddsj  
       2023-02-05 15:06:40 +08:00
    @ShineyWang #13 这个…应该是实现不了的吧,至少我没试过,也没有过这样的需求。
    stonesirsir
        21
    stonesirsir  
       2023-02-05 19:50:31 +08:00
    用 vpn 吧
    yzkos
        22
    yzkos  
       2023-02-05 20:41:49 +08:00   ❤️ 1
    我和楼主一样的情况
    方案一(最方便):如果路由器支持自定义 hosts 设置给内网穿透的域名设置一下;
    方案二:路由器不支持自定义 hosts ,把路由器首选 DNS 修改为群晖的 IP ,群晖自带一个 DNS Server 在里面把内网穿透域名设置一下解析到 NAS 。
    以上两种方案只要连接家里 WiFi ,域名就走内网,不需要切换
    learningman
        23
    learningman  
       2023-02-05 22:28:49 +08:00
    高版本的安卓可以自己设置安全 dns ,你自己搭一个想怎么劫持怎么劫持。
    比如说,从家庭 ip 来的请求给内网 IP ,其他的给公网反代。
    LnTrx
        24
    LnTrx  
       2023-02-05 23:01:53 +08:00
    个人还是建议直接解析公网 IP 或者用两个域名。即使路由支持 hosts ,也可能会被 DoT/DoH 绕过,总之还是不太彻底。
    mscsky
        25
    mscsky  
       2023-02-06 09:17:35 +08:00
    搜 virtualhosts app
    xiang0818
        26
    xiang0818  
       2023-02-06 10:33:53 +08:00
    内网的话,直接买一个可以修改 host 的路由器就好了.发骚小米路由器 app 家里的 host ,其他牌子不清楚。
    ColinLi
        27
    ColinLi  
       2023-02-06 11:35:07 +08:00
    内网的话路由器上设置 host 就行,外网使用 ddns ,然后路由端口映射内网服务,最好再在外网搞个云服务器搞个 nginx 进行重定向,这样外网访问不用写端口号比较方便
    dsgdsfh
        28
    dsgdsfh  
       2023-02-06 13:49:06 +08:00
    我之前的方案是内网树莓派搭建一个 DNS ,现成方案用的 AdGuard Home ,可以 NAS 的 Docker 安装,然后设备设置这个 DNS 服务器 ip 就好,我是直接改了路由器 DHCP 分配的 DNS 。或者买个便宜域名解析内网地址也可
    dismonster
        29
    dismonster  
       2023-02-06 17:23:59 +08:00
    直接给你个方案吧,目前我就在用
    主要就是直接上 ipv6 +ddns-go 解决 90%以上问题(如果家里网络和客户端所在网络都支持 ipv6,那就是 100%)
    手机使用不使用 wifi 的情况下,各大运营商应该都是直接支持 ipv6 的,在户外同步备份文件或者照片什么的一点问题没有
    如果连入其它 wifi 网络的情况下,要看你连接的网络是否支持 ipv6
    公司如果支持 Ipv6,直接可以访问到家里 nas
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2255 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 00:19 · PVG 08:19 · LAX 16:19 · JFK 19:19
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.