p4gefau1t / trojan-go

Go实现的Trojan代理,支持多路复用/路由功能/CDN中转/Shadowsocks混淆插件,多平台,无依赖。A Trojan proxy written in Go. An unidentifiable mechanism that helps you bypass GFW. https://p4gefau1t.github.io/trojan-go/
GNU General Public License v3.0
7.54k stars 1.64k forks source link

[BUG]无法通过ipv6建立连接 #504

Closed qq565425677 closed 1 year ago

qq565425677 commented 1 year ago

系统ubuntu 22.04LTS,docker最新版镜像,trojan-go -version信息如下

Trojan-Go v0.10.6
Go Version: go1.17.1
OS/Arch: linux/amd64
Git Commit: 2dc60f52e79ff8b910e78e444f1e80678e936450

我按照如下配置使用host模式部署docker镜像,端口14433用来测试,当防火墙允许ipv4和ipv6时,可以建立连接,但是在docker logs -f trojan-go中只能看到本地ipv4地址。在防火墙中禁用ipv4后就无法和服务器建立连接了,查看日志没有新的显示。另一台不同服务商的vps上也是同样的情况,请问下是本来就不支持ipv6建立连接吗?

{
    "run_type": "server",
    "local_addr": "0.0.0.0",
    "local_port": 14433,
    "remote_addr": "a_certain_web.com",
    "remote_port": 80,
    "password": [
        "a_certain_password"
    ],
    "ssl": {
        "cert": "/fullchain.pem",
        "key": "/privkey.pem"
    }
}
pfangzhi commented 1 year ago
"local_addr": "0.0.0.0",

你指定了仅ipv4,这行删掉试试。

pfangzhi commented 1 year ago

最讨厌你这种自己啥都没弄明白就bugbugbug 都是别人的错。自己不会多看看文档说明吗。

qq565425677 commented 1 year ago

@pfangzhi > 最讨厌你这种自己啥都没弄明白就bugbugbug 都是别人的错。自己不会多看看文档说明吗。

首先,我已经看过很多遍官方文档,里面配置中并没有提到ipv6的事情,如果你在哪个文档中看到,还请发出来,我也很想看看官方文档是怎么说的。

其次,根据官方文档-完整的配置文件,"local_addr": "0.0.0.0,"是required项不能删,最讨厌你这种自己啥都没弄明白就乱喷的人。

最后还是感谢你看过文档说明的建议,虽然删了还是不行。

qq565425677 commented 1 year ago

补充一下,虽然指定了监听"0.0.0.0",但是sudo netstat -anp | grep trojan-go可以看到也监听了ipv6的,如下:

tcp6       0      0 :::14433                :::*                    LISTEN      131826/trojan-go
tcp6       0      0 :::14433                :::*                    LISTEN      71113/trojan-go

另外想借问下客户端和服务端的"local_addr"可不可以监听多个地址?我自己试了像"password"那样用列表表示不行

pfangzhi commented 1 year ago

gh.yaml.txt

这个是可以部署的,v4 v6 cf套用,多用户,要是很多用户的上mysql

qq565425677 commented 1 year ago

@pfangzhi 谢谢兄弟的配置文件!刚才说话冲了点不好意思,不过我按你说的做了还是不行,不同的是我没用websocket也没套cf,你是不是cf提供的v6访问能力?要不是这个原因,那可能是我自己的别的什么问题了,但是我只是用了docker和ufw,再没别的了。。。另外还想确认下,如果你也没套cf,你确定是host模式下用ufw禁用ipv4也可以访问吗?因为如果没有特殊设置,ufw无法禁用docker -p映射的端口,这样即使封了v4实际也可以通过v4访问

pfangzhi commented 1 year ago

@pfangzhi 谢谢兄弟的配置文件!刚才说话冲了点不好意思,不过我按你说的做了还是不行,不同的是我没用websocket也没套cf,你是不是cf提供的v6访问能力?要不是这个原因,那可能是我自己的别的什么问题了,但是我只是用了docker和ufw,再没别的了。。。另外还想确认下,如果你也没套cf,你确定是host模式下用ufw禁用ipv4也可以访问吗?因为如果没有特殊设置,ufw无法禁用docker -p映射的端口,这样即使封了v4实际也可以通过v4访问

按我的配置v4和v6直连连接绝对没问题。你需要考虑下你的环境问题,其实测试很简单呀,直接浏览器https://打开你的服务器端口,能有数据出来就说明网络正常,没数据就考虑中间环节问题。

qq565425677 commented 1 year ago

@pfangzhi 谢谢兄弟的回复,之前只是用连接测试了,没想到直接https的方法测试,现在的情况是https可以ipv6访问,docker logs -f trojan-go有日志输出,信息如下。但是客户端(android 手机(流量)和debian(校园网))就是死活连接不上,也没有任何log信息...我也会再好好想想究竟是中间哪个过程出了差错。

docker logs -f trojan_go
[INFO]  2023/05/05 20:17:57 trojan-go v0.10.6 initializing
[WARN]  2023/05/05 20:17:57 empty tls fallback port
[WARN]  2023/05/05 20:17:57 empty tls http response
[INFO]  2023/05/05 20:18:44 tcp connection from [::1]:45952
[INFO]  2023/05/05 20:18:44 tcp connection from 127.0.0.1:45616
[INFO]  2023/05/05 20:18:44 tls connection from [::1]:45952
[ERROR] 2023/05/05 20:18:44 github.com/p4gefau1t/trojan-go/tunnel/trojan.(*Server).acceptLoop:server.go:130 trojan failed to accept conn | websocket is disabled. redirecting http request from [::1]:45952
[WARN]  2023/05/05 20:18:44 redirecting connection from [::1]:45952 to a_certain_web.com:80
[INFO]  2023/05/05 20:18:44 tls connection from 127.0.0.1:45616
[WARN]  2023/05/05 20:19:48 connection with invalid trojan header from 127.0.0.1:45616 | failed to read hash | EOF
[WARN]  2023/05/05 20:19:48 redirecting connection from 127.0.0.1:45616 to a_certain_web.com:80
[INFO]  2023/05/05 20:19:48 redirection done
[INFO]  2023/05/05 20:19:49 redirection done
qq565425677 commented 1 year ago

对不起,是我代理客户端的问题,手机的clash for android默认关闭了ipv6的支持,需要在设置里把ipv6从default改成enable。。。抱歉。。。