add debug logging for VPN packet flow diagnosis
Add comprehensive console logging at key data path points: - [TUN-RX]: per-packet TUN read (size, proto, src/dst IP, slow write detection) - [TUN-TX]: per-packet TUN write (size, success/error) - [WS-RX]: per-packet WebSocket read from client (size, proto, src/dst IP) - [WS-TX]: per-packet WebSocket write to client (size, lockWaitMs, writeMs) - [ROUTE]: routing decisions (TUN->client, client->tun, client->relay, anti-spoof) - [CONN]: connection lifecycle (init, ready, stats every 10s, disconnect with final stats) - [STATS]: global traffic stats every 10s (clients, rx/tx bytes and rates) - [PING]: WebSocket ping failures - [WS]: WebSocket upgrade with client IP and auth method - [TUN]: MTU set confirmation, VPN start/stop environment info
This commit is contained in:
@@ -31,14 +31,16 @@ var upgrader = websocket.Upgrader{
|
||||
|
||||
func HandleWS(c *gin.Context) {
|
||||
tokenStr := c.Query("token")
|
||||
clientIP := c.ClientIP()
|
||||
|
||||
conn, err := upgrader.Upgrade(c.Writer, c.Request, nil)
|
||||
if err != nil {
|
||||
log.Printf("WebSocket 升级失败: %v", err)
|
||||
log.Printf("[WS] upgrade failed clientIP=%s err=%v", clientIP, err)
|
||||
return
|
||||
}
|
||||
|
||||
if tokenStr != "" {
|
||||
log.Printf("[WS] upgrade clientIP=%s auth=jwt", clientIP)
|
||||
claims, err := middleware.ParseToken(tokenStr)
|
||||
if err != nil {
|
||||
sendJSON(conn, authResponse{Type: "auth_err", Message: "令牌无效或已过期"})
|
||||
@@ -55,9 +57,10 @@ func HandleWS(c *gin.Context) {
|
||||
return
|
||||
}
|
||||
|
||||
user, err := authenticate(conn, db.DB, c.ClientIP())
|
||||
log.Printf("[WS] upgrade clientIP=%s auth=password", clientIP)
|
||||
user, err := authenticate(conn, db.DB, clientIP)
|
||||
if err != nil {
|
||||
log.Printf("认证读取失败: %v", err)
|
||||
log.Printf("[WS] auth read failed clientIP=%s err=%v", clientIP, err)
|
||||
conn.Close()
|
||||
return
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user