mirror of
https://github.com/fatedier/frp.git
synced 2026-05-15 16:15:49 -06:00
Labels
No labels
In Progress
WIP
WaitingForInfo
bug
doc
duplicate
easy
enhancement
future
help wanted
invalid
lifecycle/stale
need-issue-template
need-usage-help
no plan
proposal
pull-request
question
todo
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: github-starred/frp#548
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @iineva on GitHub (Apr 9, 2018).
Original GitHub issue: https://github.com/fatedier/frp/issues/700
源问题在 #633 后来算是不了了之了。
另外补充一个问题,因为下面提及的相同原因,socks5模式下,也是不能通过域名上网的。
我进过深入研究,已经排查到原因,因为Android下不是标准的Linux系统,没有
/etc/resolv.conf文件。而
golang标准库中的net模块是通过解析/etc/resolv.conf文件获取到DNS服务器地址的。由于不能获取到,会使用默认值127.0.0.1:53,而本地又没有开启DNS服务所以就报错了。解决办法有5个(前两个都需要
root权限):/etc/resolv.conf文件,文件内容nameserver 114.114.114.114,优点是最简单粗暴,缺点是不够灵活,而且小米手机官方root是权限不足够的;getprop net.dns1可以获取到Android系统下正确的DNS,由于需要占用53号端口,所以需要root权限;frp中代码中自行解析DNS,个人认为这个是比较的解决办法,并且便于交叉编译,希望能完成;golang源码中的net模块,用定制版编译器编译frp;https://golang.org/src/net/dnsclient_unix.go#L169
@fatedier commented on GitHub (Apr 9, 2018):
你提到的四个解决方法中,方案三是可取的,我个人目前没有这方面的开发计划,如果有需求可以自行修改源码提 PR,尽量在最小的改动下实现这个功能,如果需要改动较多,可能暂不考虑在这个项目中实现。
考虑一种可能的简单修改: 通过修改 net.DefaultResolver 的 Dial 函数来将 dns 查询请求转发到用户指定的 ip 和 端口。
@linkerlin commented on GitHub (Apr 9, 2018):
或者在frp里面所有Dail的地方,预先用 nslookup命令 解析好域名?
@fatedier commented on GitHub (Apr 9, 2018):
@linkerlin 你提的这个方法,需要修改所有 Dial 调用的地方,如果可以通过修改 net.DefaultResolver 的 Dial 函数来实现,相当于只需要在初始化时全局修改一次,相对来说,改动更小。
@zhoujun2 commented on GitHub (Apr 10, 2018):
我是提交#633事件的人。termux需要安卓5.0才能使用,不一定所有人都有。
你能不能发一个文档,如何在termux上编译,给不会开发的人阅读
@fei-ke commented on GitHub (Apr 10, 2018):
https://github.com/golang/go/issues/8877
go 上讨论跟这个应该是一个问题吧
@iineva commented on GitHub (Apr 10, 2018):
用termux编译的方法如下
如果不想自己编译,可以直接下载我编译好的二进制文件即可,后面的一大堆东西可以不用看了
frps.zip
frpc.zip
安装 com.termux.apk.zip, com.termux.boot.apk.zip(可选,这个是用来执行自启动脚本的),然后打开
termuxAPP安装并启动
openssh,由于手机端不方便输入命令,使用电脑ssh到手机,方便操作(可选)golangfrp源码frps和frpc@iineva commented on GitHub (Apr 10, 2018):
@fei-ke 确实是同一个问题,上面讨论了三年多了,我不指望能在那边得到解决
@nirui commented on GitHub (Apr 10, 2018):
其实还可以用第三方库,比如:https://github.com/miekg/dns 。这样就不用自己实现整个DNS的RFC了。
@zhoujun2 commented on GitHub (Apr 11, 2018):
安卓终端模拟器,如果因dns变化导致连接失败,进程不会重启,有什么办法让进程守护吗
@iineva commented on GitHub (Aug 12, 2018):
补充添加v0.21.0的已编译版本
frpc-0.21.0.zip
frps-0.21.0.zip
@neatstudio commented on GitHub (Sep 16, 2018):
赞。但问题是我服务器用的是0.20.有多个0.20的客户端在运行。真纠结
@neatstudio commented on GitHub (Sep 16, 2018):
准备明天在我的耻辱机上试一下。不知道能不能跑起来。好纠结
@neatstudio commented on GitHub (Sep 17, 2018):
没跑起来,
cannot link executable "./frpc-0.21.0" "/data/data/com.termux/files/usr/lib/libtermux-exec.so" is 64-bit instead of 32-bit....
@Sak94664 commented on GitHub (Jan 20, 2019):
嗯...试着在termux上执行一下termux-chroot,虚拟一个chroot,这样程序就应该可以找到正确的resolv.conf了,也不用自己编译了。
@obetame commented on GitHub (Mar 19, 2019):
你们为啥不装一个linux deploy呢?我都部署了个网站在我机子上跑了。。。
@svengong commented on GitHub (Jun 5, 2020):
已经2020了,还是不行
@fatedier commented on GitHub (Jun 5, 2020):
@svengong https://github.com/fatedier/frp/blob/master/conf/frpc_full.ini#L56
上面的 history 中有对应 commit。
@jonozw commented on GitHub (Jan 6, 2023):
所以这个问题依然是无解吗。。。
@donmor commented on GitHub (Jul 4, 2025):
在搓安卓客户端中(研究一下前台服务),查资料有提到过启用CGO并设置变量CC=/path/to/ndk_clang可以启用交叉编译,据说可以解决dns问题(以及解决安卓api36+的amd64系统下因为没有对齐16k分页而无法启动的问题)