You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android端通过Shadowsocks无法访问本地域名的问题排查

让我来帮你分析一下这个问题——从你描述的情况来看,问题大概率出在Android手机端,而不是服务器端,毕竟服务器的DNS日志已经确认返回了正确结果,而且Linux端完全正常。下面是具体的排查和解决思路:

1. 检查Shadowsocks客户端的DNS配置

你使用的Shadowsocks 4.8.4是比较旧的Android版本,它的默认DNS处理逻辑可能存在疏漏:

  • 打开SS客户端的设置,找到「DNS设置」选项:尝试切换为「使用远程DNS」或「使用SOCKS5 DNS」(不同版本措辞可能略有不同),而非默认的「系统DNS」。因为如果用系统DNS,手机本地的DNS缓存或系统DNS服务可能没走SS代理,导致虽然IP Tools能查到正确结果,但Firefox访问时用的是未代理的系统DNS,没触发服务器端的dnsmasq规则。
  • 也可以手动在SS客户端填写自定义DNS服务器(比如服务器的公网IP),强制DNS请求走SS隧道到服务器端的dnsmasq处理。

2. 检查Firefox for Android的代理与DNS设置

  • 确认Firefox已正确使用SS代理:进入Firefox设置→「网络设置」,选择「使用系统代理设置」,或手动配置SOCKS5代理(地址填127.0.0.1,端口填你SS客户端设置的本地端口)。
  • 关闭Firefox的「DNS over HTTPS」功能:如果开启了DoH,Firefox会绕过系统/SS的DNS设置,直接用自身的DNS服务器查询。你可以在Firefox设置里搜索「DNS over HTTPS」,将其关闭后再尝试访问。

3. 清理Android系统DNS缓存并检查ROM代理规则

  • Android 5.1.1的系统DNS缓存可能干扰解析,你可以先重启手机清除缓存;如果有ADB权限,也可以用命令手动清除:adb shell ndc resolver flushdefaultif。
  • 你使用的Resurrection Remix定制ROM可能自带网络优化或代理优先级设置,导致SS代理没有完全覆盖所有APP的网络请求。可以检查ROM的「网络设置」或「开发者选项」,确认是否有强制所有APP走代理的开关,开启后再测试。

4. 用IP直接访问验证Nginx配置

你可以尝试绕开域名解析,直接验证Nginx的配置是否能被手机端访问:

  • 用Termux等终端工具执行curl命令测试:curl -x socks5://127.0.0.1:本地SS端口 -H "Host: my.domain" http://服务器公网IP
  • 如果这条命令能正常返回页面内容,就进一步确认是DNS解析环节没有在Firefox中正确触发SS代理的DNS处理。

内容的提问来源于stack exchange,提问作者petrikoz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 07:40:01