-
-
Notifications
You must be signed in to change notification settings - Fork 13.6k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
再次探讨 #633 安卓上运行ARM版本,不能使用域名,只能使用IP的问题 #700
Comments
你提到的四个解决方法中,方案三是可取的,我个人目前没有这方面的开发计划,如果有需求可以自行修改源码提 PR,尽量在最小的改动下实现这个功能,如果需要改动较多,可能暂不考虑在这个项目中实现。 考虑一种可能的简单修改: 通过修改 net.DefaultResolver 的 Dial 函数来将 dns 查询请求转发到用户指定的 ip 和 端口。 |
或者在frp里面所有Dail的地方,预先用 nslookup命令 解析好域名? |
@linkerlin 你提的这个方法,需要修改所有 Dial 调用的地方,如果可以通过修改 net.DefaultResolver 的 Dial 函数来实现,相当于只需要在初始化时全局修改一次,相对来说,改动更小。 |
我是提交#633事件的人。termux需要安卓5.0才能使用,不一定所有人都有。 |
go 上讨论跟这个应该是一个问题吧 |
用termux编译的方法如下
cd ~/.ssh
# 如果~/.ssh 目录下没有id_rsa.pub文件,执行命令 ssh-keygen 即可生成
php -S 0.0.0.0:5000
pkg install openssh curl
sshd
# http://xxxxxx/id_rsa.pub为你的电脑公钥
curl http://YOUR_IP_ADDRESS:5000/id_rsa.pub >> $HOME/.ssh/authorized_keys
ssh root@YOUR_IP_ADDRESS -p 8022
pkg install golang
go get github.com/fatedier/frp
cd $HOME/go/src/github.com/fatedier/frp/cmd/frpc
go build
cd $HOME/go/src/github.com/fatedier/frp/cmd/frps
go build |
@fei-ke 确实是同一个问题,上面讨论了三年多了,我不指望能在那边得到解决 |
其实还可以用第三方库,比如:https://github.com/miekg/dns 。这样就不用自己实现整个DNS的RFC了。 |
安卓终端模拟器,如果因dns变化导致连接失败,进程不会重启,有什么办法让进程守护吗 |
补充添加v0.21.0的已编译版本 |
赞。但问题是我服务器用的是0.20.有多个0.20的客户端在运行。真纠结 |
准备明天在我的耻辱机上试一下。不知道能不能跑起来。好纠结 |
没跑起来, |
嗯...试着在termux上执行一下termux-chroot,虚拟一个chroot,这样程序就应该可以找到正确的resolv.conf了,也不用自己编译了。 |
你们为啥不装一个linux deploy呢?我都部署了个网站在我机子上跑了。。。 |
已经2020了,还是不行 |
@svengong https://github.com/fatedier/frp/blob/master/conf/frpc_full.ini#L56 |
所以这个问题依然是无解吗。。。 |
源问题在 #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
The text was updated successfully, but these errors were encountered: