fix(tunnel): resolve UDP stream interruption and add KCP protocol support

- Increase UDP listener default TTL from 5s to 30s to prevent idle disconnect
- Add mux keepalive config (15s interval, 45s timeout) to tunnel relay handler
- Add KCP as tunnel chain transport protocol with keepalive and UDP mode default
- Add KCP protocol option to tunnel UI (frontend)
- Remove generic 'tcp' fallback key from KCP metadata to prevent false TCP mode
- Simplify forward service config by removing unused tunnelTLSProtocol parameter
This commit is contained in:
sagitchu
2026-04-20 23:57:43 +08:00
parent 7f14bd30fa
commit 630e012ec1
11 changed files with 195 additions and 55 deletions
+1 -1
View File
@@ -42,7 +42,7 @@ func (d *kcpDialer) parseMetadata(md mdata.Metadata) (err error) {
if d.md.config == nil {
d.md.config = kcp_util.DefaultConfig
}
d.md.config.TCP = mdutil.GetBool(md, "kcp.tcp", "tcp")
d.md.config.TCP = mdutil.GetBool(md, "kcp.tcp")
d.md.config.Key = mdutil.GetString(md, "kcp.key")
d.md.config.Crypt = mdutil.GetString(md, "kcp.crypt")
d.md.config.Mode = mdutil.GetString(md, "kcp.mode")
+1 -1
View File
@@ -40,7 +40,7 @@ var (
SnmpLog: "",
SnmpPeriod: 60,
Signal: false,
TCP: false,
TCP: false, // default UDP mode (use tcpraw when true)
}
)
+1 -1
View File
@@ -45,7 +45,7 @@ func (l *kcpListener) parseMetadata(md mdata.Metadata) (err error) {
if l.md.config == nil {
l.md.config = kcp_util.DefaultConfig
}
l.md.config.TCP = mdutil.GetBool(md, "kcp.tcp", "tcp")
l.md.config.TCP = mdutil.GetBool(md, "kcp.tcp")
l.md.config.Key = mdutil.GetString(md, "kcp.key")
l.md.config.Crypt = mdutil.GetString(md, "kcp.crypt")
l.md.config.Mode = mdutil.GetString(md, "kcp.mode")
+1 -1
View File
@@ -8,7 +8,7 @@ import (
)
const (
defaultTTL = 5 * time.Second
defaultTTL = 30 * time.Second
defaultReadBufferSize = 8192
defaultReadQueueSize = 1024
defaultBacklog = 128
+1 -1
View File
@@ -8,7 +8,7 @@ import (
)
const (
defaultTTL = 5 * time.Second
defaultTTL = 30 * time.Second
defaultReadBufferSize = 8192
defaultReadQueueSize = 128
defaultBacklog = 128