frp内网穿透:FRP error router config conflict
Bug Description
frp设置https,昨天还好好的,今天突然提示router config conflict?
正常启动frp的客户端和服务端以后,穿透可以正常使用,但是使用一段时间(有时候几天,有时候几分钟)穿透就失败嘞,通过查看日志发现,是客户端报router config conflictr冲突。
2023/11/05 03:41:48 [W] [control.go:175] [4fd5d73414aa6066] [web.domain.com] start error: router config conflict
2023/11/05 03:41:48 [W] [control.go:175] [4fd5d73414aa6066] [web.domain.com] start error: router config conflict
2023/11/05 03:41:48 [W] [control.go:175] [4fd5d73414aa6066] [web01www.domain.com] start error: router config conflict
服务端和客户端都重启后恢复正常。
Reason
断开大部分都是网络原因,正常情况下,网络恢复后,相同 RunID 的客户端连接上来时,会释放之前的资源,不会出现 port alrewady used。
如果你的 frpc 重启了,之前的 RunID 就丢失了,相当于一个新的客户端。frps 必须等到和之前的客户端心跳超时后,才会释放相关资源。通过修改心跳相关的配置可以降低这个等待的时间。
如果没有重启 frpc,RunID 出现了变化,那可能是 bug。否则,只需要等网络恢复后自动重连。
2023/11/05 04:34:17 [W] [control.go:148] [250f9f14a09b2104] work connection write to server error: connection write timeout
2023/11/05 04:34:17 [W] [control.go:148] [250f9f14a09b2104] work connection write to server error: connection write timeout
2023/11/05 04:34:17 [W] [control.go:148] [250f9f14a09b2104] work connection write to server error: connection write timeout
2023/11/05 04:34:17 [W] [control.go:148] [250f9f14a09b2104] work connection write to server error: connection write timeout
...
2023/11/05 04:52:08 [E] [control.go:155] [250f9f14a09b2104] work connection closed before response StartWorkConn message: EOF
2023/11/05 04:52:08 [E] [control.go:155] [250f9f14a09b2104] work connection closed before response StartWorkConn message: EOF
2023/11/05 04:52:08 [E] [control.go:155] [250f9f14a09b2104] work connection closed before response StartWorkConn message: EOF
...
S
heartbeat_timeout = 300
user_conn_timeout = 60
把这两个时间需要设置小一点才可以,当网络出现问题的时候,重新连接时候如果时间设置的过程,会导致原来的链接在s端还没有释放,新的连接连接的时候,发现原来的端口有链接,才会报这个问题。
检测多个客户端frpc导致
好像是有另外一台电脑连接上了这个frp导致的
我改了token就好了。
way 2.
关闭服务端frps
关闭客户端frpc
释放调所有会话id
先重启frps,再重启frpc。问题解决
Systemd: Special user nobody configured原因与解决方法
DynamicUser=yes
Systemd为了避免在进程守护的时候,直接以root权限运行程序,通常会使用User=nobody执行。但是这并不是完全的安全,于是在较新的版本中加入了DynamicUser,在使用动态用户执行程序的时候,通常还包含了ProtectSystem=strict与ProtectHome=read-only两个内容。这样既可以保护系统也可以避免文件被修改。
当系统出现Special user nobody configured时,只要将User=nobody修改为下述:
DynamicUser=yes
随后需要重新加载systemd和重启对应的服务:
systemctl daemon-reload
systemctl restart xxxx # 此处xxxx为需要重启的服务
https://www.vvave.net/archives/fix-the-systemd-error-special-user-nobody-configured-this-is-not-safe.html
https://github.com/fatedier/frp/issues/3470
apt update 后frps死机
重新启动frps