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