Skip to content
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

login to server failed: session shutdown #3778

Closed
11 tasks
qakcn opened this issue Nov 16, 2023 · 15 comments
Closed
11 tasks

login to server failed: session shutdown #3778

qakcn opened this issue Nov 16, 2023 · 15 comments

Comments

@qakcn
Copy link

qakcn commented Nov 16, 2023

Bug Description

刚从旧版本更新,服务器端正常启动,甚至旧版本客户端都可以正常连接到服务器端(见下方frps.log,其中id为63d08845171ca0f4qakcn-nas相关条目就是还未更新版本的旧版客户端的连接。

但是从另一台更新到了新版客户端的机器上却无法连接。

请问问题可能出在哪里?该如何排查?

谢谢!

frpc Version

0.52.3

frps Version

0.52.3

System Architecture

linux/amd64

Configurations

frps.toml:

bindAddr="0.0.0.0"
bindPort = 7000
auth.token = "<token>"
log.to = "/var/log/frps/frps.log"
log.level = "trace"
allowPorts = [{start=22000, end=22999}]
detailedErrorsToClient = true

frpc.toml:

serverAddr="<server domin>"
serverPort=7000
log.to="/home/<user>/opt/frp/frpc.log"
log.level="debug"
auth.method="token"
auth.token="<token>"
user="ubuntu"
webServer.addr="0.0.0.0"
webServer.port=7400
webServer.user="<username>"
webServer.password="<password>"
includes= ["./conf.d/*.toml"]

conf.d/proxies.toml:

[[proxies]]
name = "ssh"
type = "stcp"
secretKey = "<secret key>"
localIP = "127.0.0.1"
localPort = 22
allowUsers=["*"]
transport.useEncryption = true
transport.useCompression = true

Logs

frps.logreceive heartbeat已删减):

2023/11/16 17:13:55 [I] [root.go:102] frps uses config file: /opt/frp/frps.toml
2023/11/16 17:13:56 [I] [service.go:200] frps tcp listen on 0.0.0.0:7000
2023/11/16 17:13:56 [I] [root.go:111] frps started successfully
2023/11/16 17:13:57 [T] [service.go:455] start check TLS connection...
2023/11/16 17:13:57 [T] [service.go:464] check TLS connection success, isTLS: false custom: false
2023/11/16 17:13:57 [I] [service.go:533] [63d08845171ca0f4] client login info: ip [183.225.9.100:8907] version [0.46.0] hostname [] os [linux] arch [amd64]
2023/11/16 17:13:57 [I] [stcp.go:56] [63d08845171ca0f4] [qakcn-nas-qbittorrent] stcp proxy custom listen success
2023/11/16 17:13:57 [I] [control.go:500] [63d08845171ca0f4] new proxy [qakcn-nas-qbittorrent] type [stcp] success
2023/11/16 17:13:57 [D] [control.go:253] [63d08845171ca0f4] new work connection registered
2023/11/16 17:13:57 [I] [stcp.go:56] [63d08845171ca0f4] [qakcn-nas-aria2] stcp proxy custom listen success
2023/11/16 17:13:57 [I] [control.go:500] [63d08845171ca0f4] new proxy [qakcn-nas-aria2] type [stcp] success
2023/11/16 17:13:57 [I] [stcp.go:56] [63d08845171ca0f4] [qakcn-nas-aria2-json] stcp proxy custom listen success
2023/11/16 17:13:57 [I] [control.go:500] [63d08845171ca0f4] new proxy [qakcn-nas-aria2-json] type [stcp] success
2023/11/16 17:13:57 [I] [stcp.go:56] [63d08845171ca0f4] [qakcn-nas-yacht] stcp proxy custom listen success
2023/11/16 17:13:57 [I] [control.go:500] [63d08845171ca0f4] new proxy [qakcn-nas-router] type [stcp] success
2023/11/16 17:13:57 [I] [stcp.go:56] [63d08845171ca0f4] [qakcn-nas-ssh] stcp proxy custom listen success
2023/11/16 17:13:57 [I] [control.go:500] [63d08845171ca0f4] new proxy [qakcn-nas-ssh] type [stcp] success
2023/11/16 17:13:57 [I] [stcp.go:56] [63d08845171ca0f4] [qakcn-nas-omv] stcp proxy custom listen success
2023/11/16 17:13:57 [I] [control.go:500] [63d08845171ca0f4] new proxy [qakcn-nas-omv] type [stcp] success
2023/11/16 17:13:57 [I] [stcp.go:56] [63d08845171ca0f4] [qakcn-nas-transmission] stcp proxy custom listen success
2023/11/16 17:13:57 [I] [control.go:500] [63d08845171ca0f4] new proxy [qakcn-nas-transmission] type [stcp] success
2023/11/16 17:14:16 [T] [service.go:455] start check TLS connection...
2023/11/16 17:14:16 [T] [service.go:464] check TLS connection success, isTLS: true custom: false
2023/11/16 17:14:16 [D] [service.go:483] Accept new mux stream error: write tcp 172.26.83.161:7000->183.224.81.196:50706: write: connection reset by peer
...
2023/11/16 17:31:24 [T] [service.go:455] start check TLS connection...
2023/11/16 17:31:24 [T] [service.go:464] check TLS connection success, isTLS: true custom: false
2023/11/16 17:31:24 [D] [service.go:483] Accept new mux stream error: write tcp 172.26.83.161:7000->183.224.81.196:44036: write: connection reset by peer
...

frpc.log:

2023/11/16 17:31:24 [I] [root.go:139] start frpc service for config file [frpc.toml]
2023/11/16 17:31:24 [W] [service.go:131] login to server failed: session shutdown
2023/11/16 17:31:24 [I] [root.go:154] frpc service for config file [frpc.toml] stopped

Steps to reproduce

运行./frpc -c frpc.toml就出错。

Affected area

  • Docs
  • Installation
  • Performance and Scalability
  • Security
  • User Experience
  • Test and Release
  • Developer Infrastructure
  • Client Plugin
  • Server Plugin
  • Extensions
  • Others
@qakcn
Copy link
Author

qakcn commented Nov 16, 2023

有时客户端日志会出现另一种错误:

2023/11/16 17:58:17 [I] [root.go:139] start frpc service for config file [frpc.toml]
2023/11/16 17:58:17 [W] [service.go:131] login to server failed: read tcp 192.168.3.134:46396->39.98.244.34:7000: read: connection reset by peer
2023/11/16 17:58:17 [I] [root.go:154] frpc service for config file [frpc.toml] stopped

@qakcn
Copy link
Author

qakcn commented Nov 16, 2023

给服务器增加kcpBindPort和在客户端设置transport.protocol="kcp"之后可以使用。但是旧版本使用tcp协议没有问题,不知何解。

@Markan325
Copy link

Markan325 commented Nov 17, 2023

我也有同样问题,TCP搭配TLS也是报一样错误,设定TLS_Enable=false就又能连上了,不知道原因为何
同样TCP搭配TLS,退回0.50.0版又没问题了

@superzjg
Copy link

给服务器增加kcpBindPort和在客户端设置transport.protocol="kcp"之后可以使用。但是旧版本使用tcp协议没有问题,不知何解。

之前调试时也出现过类似情况,感觉是多次连接断开,导致7000端口没有来得及释放。此时换个端口号重启frps试试。

@qakcn
Copy link
Author

qakcn commented Nov 17, 2023

给服务器增加kcpBindPort和在客户端设置transport.protocol="kcp"之后可以使用。但是旧版本使用tcp协议没有问题,不知何解。

之前调试时也出现过类似情况,感觉是多次连接断开,导致7000端口没有来得及释放。此时换个端口号重启frps试试。

应该不是。前面说了,旧版客户端可以连上新版服务器,新版客户端就连不上,所以端口应该没有问题。

@superzjg
Copy link

给服务器增加kcpBindPort和在客户端设置transport.protocol="kcp"之后可以使用。但是旧版本使用tcp协议没有问题,不知何解。

之前调试时也出现过类似情况,感觉是多次连接断开,导致7000端口没有来得及释放。此时换个端口号重启frps试试。

应该不是。前面说了,旧版客户端可以连上新版服务器,新版客户端就连不上,所以端口应该没有问题。

依据经验,还有一个情况,就是你frps设置的https端口与默认绑定端口号相同,但是没有设置transport.tls.disableCustomTLSFirstByte = false
启用 TLS 连接时,不发送 0x17 特殊字节。默认为 true。当配置为 true 时,无法和 vhostHTTPSPort 端口复用。

@qakcn
Copy link
Author

qakcn commented Nov 17, 2023

给服务器增加kcpBindPort和在客户端设置transport.protocol="kcp"之后可以使用。但是旧版本使用tcp协议没有问题,不知何解。

之前调试时也出现过类似情况,感觉是多次连接断开,导致7000端口没有来得及释放。此时换个端口号重启frps试试。

应该不是。前面说了,旧版客户端可以连上新版服务器,新版客户端就连不上,所以端口应该没有问题。

依据经验,还有一个情况,就是你frps设置的https端口与默认绑定端口号相同,但是没有设置transport.tls.disableCustomTLSFirstByte = false 启用 TLS 连接时,不发送 0x17 特殊字节。默认为 true。当配置为 true 时,无法和 vhostHTTPSPort 端口复用。

我的配置文件在上面贴出来了,没有其他设置。这个服务器也没有http或是https等服务。因为是买的国内服务器没有备案,现在是完全当作内网穿透服务器来用的。目前只用了stcp这一种类型。

话说你这我倒是怀疑,是不是默认TLS导致服务商那边当作HTTPS流量了,但是旧版就没问题,旧版的TLS有所不同吗?我试试。 实践证明并不行。

我现在倒是可以勉强KCP用一用,但是毕竟现在的运营商都不太喜欢UDP流量,可以的话我还是想搞明白问题在哪儿。新版的客户端和旧版的到底哪里配置不同。

@superzjg
Copy link

我测试过quic比kcp快,也是udp的
TLS是在v0.50.0改成了默认true的。

目前我路由器上服务器,当设置了https 端口和绑定端口一样,而frpc没有设置 transport.tls.disableCustomTLSFirstByte = false。frpc就会复现 session shutdown 错误。改前者或后者都可以消除。其他情况没有见到。

@qakcn
Copy link
Author

qakcn commented Nov 17, 2023

我测试过quic比kcp快,也是udp的 TLS是在v0.50.0改成了默认true的。

目前我路由器上服务器,当设置了https 端口和绑定端口一样,而frpc没有设置 transport.tls.disableCustomTLSFirstByte = false。frpc就会复现 session shutdown 错误。改前者或后者都可以消除。其他情况没有见到。

看来确实是TLS的问题,禁用了之后就好了。不知道是不是服务器没有配置TLS证书的原因。

软件层面没有任何相关日志,要不是看了你和上面那位朋友 @Markan325 的说明,完全不知道是这方面的问题。谢谢你们的帮助。

希望作者能在日志层面对TLS错误有所体现吧。

@superzjg
Copy link

我测试过quic比kcp快,也是udp的 TLS是在v0.50.0改成了默认true的。
目前我路由器上服务器,当设置了https 端口和绑定端口一样,而frpc没有设置 transport.tls.disableCustomTLSFirstByte = false。frpc就会复现 session shutdown 错误。改前者或后者都可以消除。其他情况没有见到。

看来确实是TLS的问题,禁用了之后就好了。不知道是不是服务器没有配置TLS证书的原因。

软件层面没有任何相关日志,要不是看了你和上面那位朋友 @Markan325 的说明,完全不知道是这方面的问题。谢谢你们的帮助。

希望作者能在日志层面对TLS错误有所体现吧。

好吧,可能是某种特定情况下有bug。
禁用TLS也没关系,反正你是用 stcp 模式,配合frpc在每个代理上配置一个 transport.useEncryption = true也是很安全的。

@qakcn
Copy link
Author

qakcn commented Nov 17, 2023

我测试过quic比kcp快,也是udp的 TLS是在v0.50.0改成了默认true的。
目前我路由器上服务器,当设置了https 端口和绑定端口一样,而frpc没有设置 transport.tls.disableCustomTLSFirstByte = false。frpc就会复现 session shutdown 错误。改前者或后者都可以消除。其他情况没有见到。

看来确实是TLS的问题,禁用了之后就好了。不知道是不是服务器没有配置TLS证书的原因。
软件层面没有任何相关日志,要不是看了你和上面那位朋友 @Markan325 的说明,完全不知道是这方面的问题。谢谢你们的帮助。
希望作者能在日志层面对TLS错误有所体现吧。

好吧,可能是某种特定情况下有bug。 禁用TLS也没关系,反正你是用 stcp 模式,配合frpc在每个代理上配置一个 transport.useEncryption = true也是很安全的。

应该不是bug,可能是TLS需要配置证书。但是在日志里完全看不出是TLS的问题,这是需要改进的地方。

此issue暂时不关闭吧,希望作者能看到。

最后再次谢谢诸位以及作者!

@xqzr
Copy link

xqzr commented Nov 17, 2023

域名未备案 被 RST。
尝试 serverAddr="<server IP>" 或者 transport.protocol="quic"

# quicBindPort = 7002

Copy link

Issues go stale after 30d of inactivity. Stale issues rot after an additional 7d of inactivity and eventually close.

@github-actions github-actions bot closed this as not planned Won't fix, can't repro, duplicate, stale Dec 26, 2023
@liaorongjian
Copy link

这个问题,你们解决了

@1434537427
Copy link

我的情况是这样的:
镜像版本:frpc 0.57.0、同一份配置文件;
过程:在极空间正常运行1个月左右后,突然无法正常启动,报[login to server failed: session shutdown];
测试:在Docker Desktop中启动正常,也能正常代理并访问;
处理:极空间系统版本升级到V1.0.0410090,然后“系统设置”中重启docker服务,就能正常启动frpc,并代理访问了;我推测是“重启docker服务”起的作用,遇到的同学可以先试试。
image

@xqzr xqzr mentioned this issue May 28, 2024
11 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

6 participants