# Trojan 配置中 server_name 参数修复 ## 🔍 问题分析 ### **原始问题** 你的 Trojan 配置中存在 `server_name` 设置错误: ```json { "server": "156.224.78.176", "server_name": "baidu.com" // ❌ 错误:服务器 IP 与 SNI 不匹配 } ``` ### **问题原因** 1. **TLS 握手失败** - 服务器没有为 `baidu.com` 配置证书 2. **SNI 不匹配** - 客户端请求 `baidu.com`,但服务器只支持 IP 地址 3. **代理无法工作** - TLS 验证失败导致连接中断 ## 🛠️ 修复方案 ### **智能 server_name 设置** 已修改配置生成逻辑,现在会: 1. **优先使用配置的 SNI** - 如果服务器配置了 `sni` 参数 2. **回退到服务器地址** - 如果没有配置 SNI,使用服务器 IP/域名 3. **避免不匹配** - 确保 `server_name` 与服务器实际配置一致 ### **修复后的逻辑** ```dart // 智能设置 server_name String serverName = securityConfig["sni"] ?? ""; if (serverName.isEmpty) { // 如果没有配置 SNI,使用服务器地址 serverName = nodeListItem.serverAddr; } ``` ### **修复后的配置** ```json { "server": "156.224.78.176", "server_name": "156.224.78.176" // ✅ 正确:使用服务器 IP } ``` ## 📋 server_name 参数说明 ### **应该填什么值** #### **1. 服务器实际域名** ✅ **最佳选择** ```json { "server_name": "your-server-domain.com" } ``` #### **2. 服务器 IP 地址** ✅ **推荐** ```json { "server_name": "156.224.78.176" } ``` #### **3. 空字符串** ✅ **某些情况下** ```json { "server_name": "" } ``` ### **不应该填什么值** #### **❌ 随机域名** ```json { "server_name": "baidu.com" // 错误:服务器没有这个域名的证书 } ``` #### **❌ 不相关的域名** ```json { "server_name": "google.com" // 错误:与服务器不匹配 } ``` ## 🔧 其他协议修复 已同时修复了以下协议的 `server_name` 设置: - **VLESS** - 智能 SNI 设置 - **VMess** - 智能 SNI 设置 - **Trojan** - 智能 SNI 设置 ## 🧪 测试步骤 1. **重新运行应用** 2. **检查新的配置** - 应该看到 `server_name` 使用服务器 IP 3. **测试连接** - 应该能正常通过代理访问网络 4. **验证延迟** - 延迟测试应该能正常工作 ## 📊 预期结果 修复后应该看到: ```json { "type": "trojan", "tag": "香港", "server": "156.224.78.176", "server_port": 27639, "password": "cf6dc0d8-4997-4fc3-b790-1a54e38c6e8c", "tls": { "enabled": true, "server_name": "156.224.78.176", // ✅ 修复后 "insecure": false, "utls": { "enabled": true, "fingerprint": "chrome" } } } ``` ## 💡 关键要点 1. **`server_name` 必须与服务器配置匹配** 2. **优先使用服务器实际域名** 3. **IP 地址也是有效的选择** 4. **避免使用不相关的域名** 5. **TLS 验证失败会导致代理无法工作** 这个修复应该能解决你的 Trojan 连接问题!