nxtrace / NTrace-core

NextTrace, an open source visual route tracking CLI tool
https://www.nxtrace.org
GNU General Public License v3.0
5.76k stars 340 forks source link

crash #131

Closed nasaboy closed 1 year ago

nasaboy commented 1 year ago

你正在使用哪个版本的 nexttrace?

nexttrace_windows_amd64.exe

你看到的异常现象是什么?

程序崩溃,无法执行

你期待看到的正常表现是怎样的?

请附上你的命令

nexttrace_windows_amd64.exe -F

请附上出错时软件输出的错误信息

NextTrace v1.1.7-1 2023-06-04T03:55:52Z 2c86f86
Hi,欢迎使用 Fast Trace 功能,请注意 Fast Trace 功能只适合新手使用
因为国内网络复杂,我们设置的测试目标有限,建议普通用户自测以获得更加精准的路由情况
请您选择要测试的 IP 类型
1. IPv4
2. IPv6
请选择选项:1
您想测试哪些ISP的路由?
1. 国内四网
2. 电信
3. 联通
4. 移动
5. 教育网
请选择选项:4
[NextTrace API] prefered API IP - 103.120.18.35 - 72.82ms
2023/06/05 16:40:25 dial: websocket: bad handshake
您将默认使用ICMP协议进行路由跟踪,如果您想使用TCP SYN进行路由跟踪,可以加入 -T 参数
panic: runtime error: invalid memory address or nil pointer dereference
[signal 0xc0000005 code=0x0 addr=0x0 pc=0x97fbd4]

goroutine 1 [running]:
github.com/gorilla/websocket.(*Conn).Close(0xc000079a08?)
        github.com/gorilla/websocket@v1.5.0/conn.go:345 +0x14
github.com/xgadget-lab/nexttrace/fast_trace.FastTest.func1()
        github.com/xgadget-lab/nexttrace/fast_trace/fast_trace.go:131 +0x25
github.com/xgadget-lab/nexttrace/fast_trace.FastTest(0x0, 0x0, {{0x0, 0x0}, {0x0, 0x0}, 0x1, 0x1e, 0x1, 0x0, ...})
        github.com/xgadget-lab/nexttrace/fast_trace/fast_trace.go:155 +0x666
github.com/xgadget-lab/nexttrace/cmd.Excute()
        github.com/xgadget-lab/nexttrace/cmd/cmd.go:104 +0xfe5
main.main()
        github.com/xgadget-lab/nexttrace/main.go:8 +0x17

是否查询过本仓库wiki有没有类似错误

sjlleo commented 1 year ago
2023/06/05 16:40:25 dial: websocket: bad handshake

你和我们的 API 连接失败,如果是从中国大陆发起的请求,请检查你的连接是否被 Reset,如果是请挂代理。

wfniub commented 1 year ago
2023/06/05 16:40:25 dial: websocket: bad handshake

你和我们的 API 连接失败,如果是从中国大陆发起的请求,请检查你的连接是否被 Reset,如果是请挂代理。

目前我也是从大陆连接,也是无法连接 api server,请问如何确认是否呗reset,目前我通过v2rayn挂在代理,依旧是同样的问题!

nasaboy commented 1 year ago

你的api服务器,直连我可以ping通,不需要代理。

wfniub commented 1 year ago

似乎很多人遇到同样的问题,麻烦看下能否有效方案协助下!应该将那些api server ip设置走代理!

LaMP57 commented 1 year ago

前段时间也遇到了这个问题,尝试为 api.leo.moe 配置代理(抓包确定是已经走了代理)后仍然报错。 最终的解决方案是自行反代了 api.leo.moe 的 ws 服务,然后使用 NEXTTRACE_HOSTPORT 环境变量指定使用自己的反代服务器。 供参考。

wfniub commented 1 year ago

大佬能细说吗,反代我知道,自己弄个网站,反代大佬的api.leo.moe,然后 “NEXTTRACE_HOSTPORT 环境变量指定使用自己的反代服务器” 这个要怎么搞大佬!

LaMP57 commented 1 year ago

Linux / Mac: export NEXTTRACE_HOSTPORT="api.example.com"

Windows: set NEXTTRACE_HOSTPORT="api.example.com"

以上操作仅在当前窗口生效。如需持久化,请以 “{你的操作系统} 设置环境变量” 为关键词搜索 另外使用 nginx 反代 ws 服务时,请注意相关请求头的处理,搜索关键词 “nginx 反向代理 websocket”

tsosunchia commented 1 year ago

你的api服务器,直连我可以ping通,不需要代理。

因为某个不可名状的东西只掐我们的api的ws连接

tsosunchia commented 1 year ago

前段时间也遇到了这个问题,尝试为 api.leo.moe 配置代理(抓包确定是已经走了代理)后仍然报错。

最终的解决方案是自行反代了 api.leo.moe 的 ws 服务,然后使用 NEXTTRACE_HOSTPORT 环境变量指定使用自己的反代服务器。

供参考。

这确实是一种方法,我们也是这样做的

建议这种情况还是自行反代喽

nasaboy commented 1 year ago
ubuntu@kr:~$ sudo ./nexttrace -F
NextTrace v1.1.7-1 2023-06-04T03:55:17Z 2c86f86
Hi,欢迎使用 Fast Trace 功能,请注意 Fast Trace 功能只适合新手使用
因为国内网络复杂,我们设置的测试目标有限,建议普通用户自测以获得更加精准的路由情况
请您选择要测试的 IP 类型
1. IPv4
2. IPv6
请选择选项:1
您想测试哪些ISP的路由?
1. 国内四网
2. 电信
3. 联通
4. 移动
5. 教育网
请选择选项:2
[NextTrace API] prefered API IP - [2606:4700:3030::6815:34ee] - 1.09ms
您将默认使用ICMP协议进行路由跟踪,如果您想使用TCP SYN进行路由跟踪,可以加入 -T 参数

在国外vps上执行以后,没有进行下一步的测试,这个问题是在哪里?

tsosunchia commented 1 year ago

ubuntu@kr:~$ sudo ./nexttrace -F

NextTrace v1.1.7-1 2023-06-04T03:55:17Z 2c86f86

Hi,欢迎使用 Fast Trace 功能,请注意 Fast Trace 功能只适合新手使用

因为国内网络复杂,我们设置的测试目标有限,建议普通用户自测以获得更加精准的路由情况

请您选择要测试的 IP 类型

1. IPv4

2. IPv6

请选择选项:1

您想测试哪些ISP的路由?

1. 国内四网

2. 电信

3. 联通

4. 移动

5. 教育网

请选择选项:2

[NextTrace API] prefered API IP - [2606:4700:3030::6815:34ee] - 1.09ms

您将默认使用ICMP协议进行路由跟踪,如果您想使用TCP SYN进行路由跟踪,可以加入 -T 参数

在国外vps上执行以后,没有进行下一步的测试,这个问题是在哪里?

没有任何后续提示吗

wfniub commented 1 year ago

set NEXTTRACE_HOSTPORT="api.example.com"

location /wss {
        proxy_pass https://api.leo.moe;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        rewrite /wss/(.*) /$1 break;
        proxy_redirect off;
}

这样是否正确老哥!

nasaboy commented 1 year ago

ubuntu@kr:~$ sudo ./nexttrace -F

NextTrace v1.1.7-1 2023-06-04T03:55:17Z 2c86f86

Hi,欢迎使用 Fast Trace 功能,请注意 Fast Trace 功能只适合新手使用

因为国内网络复杂,我们设置的测试目标有限,建议普通用户自测以获得更加精准的路由情况

请您选择要测试的 IP 类型

1. IPv4

2. IPv6

请选择选项:1

您想测试哪些ISP的路由?

1. 国内四网

2. 电信

3. 联通

4. 移动

5. 教育网

请选择选项:2

[NextTrace API] prefered API IP - [2606:4700:3030::6815:34ee] - 1.09ms

您将默认使用ICMP协议进行路由跟踪,如果您想使用TCP SYN进行路由跟踪,可以加入 -T 参数

在国外vps上执行以后,没有进行下一步的测试,这个问题是在哪里?

没有任何后续提示吗

是的,已经复制了显示出来的全部内容

tsosunchia commented 1 year ago

ubuntu@kr:~$ sudo ./nexttrace -F

NextTrace v1.1.7-1 2023-06-04T03:55:17Z 2c86f86

Hi,欢迎使用 Fast Trace 功能,请注意 Fast Trace 功能只适合新手使用

因为国内网络复杂,我们设置的测试目标有限,建议普通用户自测以获得更加精准的路由情况

请您选择要测试的 IP 类型

1. IPv4

2. IPv6

请选择选项:1

您想测试哪些ISP的路由?

1. 国内四网

2. 电信

3. 联通

4. 移动

5. 教育网

请选择选项:2

[NextTrace API] prefered API IP - [2606:4700:3030::6815:34ee] - 1.09ms

您将默认使用ICMP协议进行路由跟踪,如果您想使用TCP SYN进行路由跟踪,可以加入 -T 参数

在国外vps上执行以后,没有进行下一步的测试,这个问题是在哪里?

没有任何后续提示吗

是的,已经复制了显示出来的全部内容

您的意思是后面就卡死了吗?

如果是这样,请测试个IP试试 看看是否正常

tsosunchia commented 1 year ago

set NEXTTRACE_HOSTPORT="api.example.com"

location /wss {

        proxy_pass https://api.leo.moe;

        proxy_set_header X-Real-IP $remote_addr;

        proxy_set_header Host $host;

        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

        proxy_http_version 1.1;

        proxy_set_header Upgrade $http_upgrade;

        proxy_set_header Connection "upgrade";

        rewrite /wss/(.*) /$1 break;

        proxy_redirect off;

}

这样是否正确老哥!

不对的

LaMP57 commented 1 year ago

set NEXTTRACE_HOSTPORT="api.example.com"

location /wss {
        proxy_pass https://api.leo.moe;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        rewrite /wss/(.*) /$1 break;
        proxy_redirect off;
}

这样是否正确老哥!

需要反代路由 /v3/ipGeoWs

tsosunchia commented 1 year ago

我回头在wiki补充一下反代怎么设置吧

nasaboy commented 1 year ago

ubuntu@kr:~$ sudo ./nexttrace -F

NextTrace v1.1.7-1 2023-06-04T03:55:17Z 2c86f86

Hi,欢迎使用 Fast Trace 功能,请注意 Fast Trace 功能只适合新手使用

因为国内网络复杂,我们设置的测试目标有限,建议普通用户自测以获得更加精准的路由情况

请您选择要测试的 IP 类型

  1. IPv4

  2. IPv6

请选择选项:1

您想测试哪些ISP的路由?

  1. 国内四网

  2. 电信

  3. 联通

  4. 移动

  5. 教育网

请选择选项:2

[NextTrace API] prefered API IP - [2606:4700:3030::6815:34ee] - 1.09ms

您将默认使用ICMP协议进行路由跟踪,如果您想使用TCP SYN进行路由跟踪,可以加入 -T 参数

在国外vps上执行以后,没有进行下一步的测试,这个问题是在哪里?

没有任何后续提示吗

是的,已经复制了显示出来的全部内容

您的意思是后面就卡死了吗?

如果是这样,请测试个IP试试 看看是否正常

我也不知道是不是卡死,就没有继续往下走了。 ip、域名测试是可以正常进行的。

wfniub commented 1 year ago

在线等,辛苦!

wfniub commented 1 year ago

set NEXTTRACE_HOSTPORT="api.example.com"

location /wss {
        proxy_pass https://api.leo.moe;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        rewrite /wss/(.*) /$1 break;
        proxy_redirect off;
}

这样是否正确老哥!

需要反代路由 /v3/ipGeoWs

虽然暂时还没解决,不过感谢呢,老哥能否贴一下你的反代文件!

sjlleo commented 1 year ago

ip测试是可以正常进行的。

您可以试一下 1.1.6 版本的 Fast Trace,这个版本没有 Pow 验证,使用的也是旧版本的 API。

nasaboy commented 1 year ago

ip测试是可以正常进行的。

您可以试一下 1.1.6 版本的 Fast Trace,这个版本没有 Pow 验证,使用的也是旧版本的 API。

刚刚测试,和最新版一样,没有区别,测试没有继续往下走

tsosunchia commented 1 year ago

ip测试是可以正常进行的。

您可以试一下 1.1.6 版本的 Fast Trace,这个版本没有 Pow 验证,使用的也是旧版本的 API。

刚刚测试,和最新版一样,没有区别,测试没有继续往下走

麻烦你开个新issue,我们后期来帮你跟进一下

sjlleo commented 1 year ago

在线等,辛苦!

写了一个 Demo,具体按照自己的需求调整

location ^~ /v3 {
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection $connection_upgrade;
        client_max_body_size 1000m;
        proxy_redirect off;
        proxy_ssl_server_name on;
        proxy_ssl_name $host;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_pass https://104.19.58.68;
    }
LaMP57 commented 1 year ago

set NEXTTRACE_HOSTPORT="api.example.com"

location /wss {
        proxy_pass https://api.leo.moe;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        rewrite /wss/(.*) /$1 break;
        proxy_redirect off;
}

这样是否正确老哥!

需要反代路由 /v3/ipGeoWs

虽然暂时还没解决,不过感谢呢,老哥能否贴一下你的反代文件!

由于会调用多个接口,建议代理整个 / 以下配置供参考

由于api已发生变化,我来帮助作者稍作修改进行适配 (by: @tsosunchia 2023/12/07)

upstream origin-leo {
#PS: 这里只起到DNS作用,SNI在location处指明
        server api.nxtrace.org:443;
        keepalive 300;
}

map $http_upgrade $connection_upgrade {
    default upgrade;
    '' close;
}

server {
        listen 443 ssl http2;
        listen [::]:443 ssl http2;
        ssl_certificate /path/to/your/cert.pem;
        ssl_certificate_key /path/to/your/key.key;
        server_name api.example.com;

        location / {
                proxy_pass https://origin-leo;
                proxy_ssl_server_name on;
                proxy_ssl_name origin-fallback.nxtrace.org;
                proxy_ssl_protocols TLSv1.3;
                proxy_http_version 1.1;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection $connection_upgrade;
                proxy_set_header Host origin-fallback.nxtrace.org;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
}

此贴作者原文👇(已不适用)

upstream origin-leo {
        server api.leo.moe:443;
        keepalive 300;
}

map $http_upgrade $connection_upgrade {
    default upgrade;
    '' close;
}

server {
        listen 443 ssl http2;
        ssl_certificate /path/to/your/cert.pem;
        ssl_certificate_key /path/to/your/key.key;
        server_name api.example.com;

        location / {
                proxy_pass https://origin-leo;
                proxy_ssl_server_name on;
                proxy_ssl_name api.leo.moe;
                proxy_http_version 1.1;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection $connection_upgrade;
                proxy_set_header Host api.leo.moe;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
}
tsosunchia commented 1 year ago

set NEXTTRACE_HOSTPORT="api.example.com"


location /wss {

        proxy_pass https://api.leo.moe;

        proxy_set_header X-Real-IP $remote_addr;

        proxy_set_header Host $host;

        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

        proxy_http_version 1.1;

        proxy_set_header Upgrade $http_upgrade;

        proxy_set_header Connection "upgrade";

        rewrite /wss/(.*) /$1 break;

        proxy_redirect off;

}

这样是否正确老哥!

需要反代路由 /v3/ipGeoWs

虽然暂时还没解决,不过感谢呢,老哥能否贴一下你的反代文件!

由于会调用多个接口,建议代理整个 /

以下配置供参考


upstream origin-leo {

        server api.leo.moe:443;

        keepalive 300;

}

map $http_upgrade $connection_upgrade {

    default upgrade;

    '' close;

}

server {

        listen 443 ssl http2;

        ssl_certificate /path/to/your/cert.pem;

        ssl_certificate_key /path/to/your/key.key;

        server_name api.example.com;

        location / {

                proxy_pass https://origin-leo;

                proxy_ssl_server_name on;

                proxy_ssl_name api.leo.moe;

                proxy_http_version 1.1;

                proxy_set_header Upgrade $http_upgrade;

                proxy_set_header Connection $connection_upgrade;

                proxy_set_header Host api.leo.moe;

                proxy_set_header X-Real-IP $remote_addr;

                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

        }

}

感谢,后续我在wiki中引用您的配置吧

由于会调用多个接口,建议代理整个 /

是这样的,因为pow和tracemap等功能也需要反代。

wfniub commented 1 year ago

set NEXTTRACE_HOSTPORT="api.example.com"

location /wss {

    proxy_pass https://api.leo.moe;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    rewrite /wss/(.*) /$1 break;
    proxy_redirect off;

}

这样是否正确老哥!

需要反代路由 /v3/ipGeoWs

虽然暂时还没解决,不过感谢呢,老哥能否贴一下你的反代文件!

由于会调用多个接口,建议代理整个 / 以下配置供参考


upstream origin-leo {

        server api.leo.moe:443;

        keepalive 300;

}

map $http_upgrade $connection_upgrade {

    default upgrade;

    '' close;

}

server {

        listen 443 ssl http2;

        ssl_certificate /path/to/your/cert.pem;

        ssl_certificate_key /path/to/your/key.key;

        server_name api.example.com;

        location / {

                proxy_pass https://origin-leo;

                proxy_ssl_server_name on;

                proxy_ssl_name api.leo.moe;

                proxy_http_version 1.1;

                proxy_set_header Upgrade $http_upgrade;

                proxy_set_header Connection $connection_upgrade;

                proxy_set_header Host api.leo.moe;

                proxy_set_header X-Real-IP $remote_addr;

                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

        }

}

感谢,后续我在wiki中引用您的配置吧

由于会调用多个接口,建议代理整个 /

是这样的,因为pow和tracemap等功能也需要反代。

image

wfniub commented 1 year ago

大佬,我是在宝塔的站点配置i文件里面,应该怎么写,懵逼了

tsosunchia commented 1 year ago

大佬,我是在宝塔的站点配置i文件里面,应该怎么写,懵逼了

以上配置仅限于NGINX,请不要搭配任何面板使用

tsosunchia commented 1 year ago

此处我总结一下: 若您遇到websocket: bad handshake等类似错误

wfniub commented 1 year ago

image image 依旧有问题,应该是无法访问那你的反代ipv6

tsosunchia commented 1 year ago

image image 依旧有问题,应该是无法访问那你的反代ipv6

你可以试试使用/etc/hosts 指定为ipv4地址

wfniub commented 1 year ago

现在自己建立反代了,按照上面的,但是又出现这种情况,没有bad handshak了 image

wfniub commented 1 year ago

不会是反代服务器无法连接api.leo.moe吧

tsosunchia commented 1 year ago

现在自己建立反代了,按照上面的,但是又出现这种情况,没有bad handshak了 image

在issue区提出问题前请先看看wiki,这里不再赘述

mari1995 commented 1 year ago

mario@father ~ % nexttrace 8.8.8.8 NextTrace 1.1.7-1 2023-06-03T21:27:21Z brew [NextTrace API] prefered API IP - 103.120.18.35 - 62.87ms 2023/06/07 15:37:38 dial: websocket: bad handshake IP Geo Data Provider: LeoMoeAPI traceroute to 8.8.8.8, 30 hops max, 52 bytes packets 2023/06/07 15:37:39 dial: websocket: bad handshake 1 192.168.57.1 [RFC1918] 局域网 4.56 ms / 10.55 ms / 5.91 ms 2023/06/07 15:37:40 dial: websocket: bad handshake 2 192.168.10.1 [RFC1918] 局域网 9.59 ms / 23.04 ms / 31.73 ms 2023/06/07 15:37:40 dial: websocket: bad handshake 2023/06/07 15:37:41 dial: websocket: bad handshake 2023/06/07 15:37:42 dial: websocket: bad handshake 3 10.8.8.13 [RFC1918] 局域网 95.73 ms / 11.40 ms / 10.53 ms 4 5 172.17.40.210 [RFC1918] 局域网 55.79 ms / 6.57 ms / 6.63 ms 6 172.16.214.33 [RFC1918] 局域网 14.52 ms / 6.77 ms / 98.56 ms 2023/06/07 15:37:44 dial: websocket: bad handshake 7 172.16.214.13 [RFC1918] 局域网 29.01 ms / 17.07 ms / 14.73 ms 8 172.16.207.238 [RFC1918] 局域网 38.74 ms / 12.28 ms / 71.46 ms 2023/06/07 15:37:45 dial: websocket: bad handshake 9 172.16.207.243 [RFC1918] 局域网 10.82 ms / 11.51 ms / 10.38 ms 10 2023/06/07 15:37:47 dial: websocket: bad handshake 11 172.16.23.45 [RFC1918] 局域网 19.98 ms / 13.74 ms / 20.34 ms 2023/06/07 15:37:49 dial: websocket: bad handshake 12 203.131.241.181 ASAPI Server Error 局域网 ae-7.a00.chwahk02.hk.bb.gin.ntt.net 12.89 ms / 112.92 ms / ms 13 203.131.250.82 ASAPI Server Error 局域网 11.38 ms / 41.34 ms / 12.42 ms 14 108.170.241.1 ASAPI Server Error 局域网 19.45 ms / 78.50 ms / 16.70 ms 2023/06/07 15:37:51 dial: websocket: bad handshake 15 209.85.143.153 ASAPI Server Error 局域网 28.83 ms / 10.66 ms / 11.28 ms 16 8.8.8.8 ASAPI Server Error 局域网 13.28 ms / 42.70 ms / 9.98 ms 2023/06/07 15:37:53 dial: websocket: bad handshake MapTrace URL: panic: runtime error: invalid memory address or nil pointer dereference [signal SIGSEGV: segmentation violation code=0x2 addr=0x0 pc=0x100990158]

goroutine 1 [running]: github.com/gorilla/websocket.(*Conn).Close(0x14000100000?) github.com/gorilla/websocket@v1.5.0/conn.go:345 +0x18 github.com/xgadget-lab/nexttrace/cmd.Excute.func1() github.com/xgadget-lab/nexttrace/cmd/cmd.go:165 +0x24 github.com/xgadget-lab/nexttrace/cmd.Excute() github.com/xgadget-lab/nexttrace/cmd/cmd.go:315 +0x1a0c main.main() github.com/xgadget-lab/nexttrace/main.go:8 +0x1c