RadSecProxy 是一个开源的 RADIUS 中继工具,支持 UDP、TCP、TLS(即 RadSec),非常适合搭建中间代理、调试 TLS 安全连接等场景。本文记录了我在构建以下实验拓扑时的完整配置流程与踩坑记录。

🧭 实验拓扑

1
2
3
4
5
6
7

proxy1(FreeRADIUS,UDP,192.168.8.195)
⇩ UDP(传统 RADIUS)
proxy2(RadSecProxy,192.168.8.231)
⇩ TLS(RadSec)
proxy3(FreeRADIUS,TLS监听,192.168.8.228)

🛠️ RadSecProxy 配置(proxy2)

路径:/usr/local/etc/radsecproxy.conf

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
tls myradsec {
CACertificateFile /etc/radsecproxy/certs/ca.pem
CertificateFile /etc/radsecproxy/certs/client.pem
CertificateKeyFile /etc/radsecproxy/certs/client.key
}

listen udp {
type = UDP
host = 0.0.0.0
port = 1812
clients = udpclients
}

client udpclients {
secret = testing123
}

server tlsserver {
type = TLS
host = 192.168.8.228
port = 2083
tls = myradsec
secret = testing123
}

🧪 启动与错误调试

RadSecProxy 启动命令:

1
sudo /usr/local/sbin/radsecproxy -f -c /usr/local/etc/radsecproxy.conf -d 3

示例输出:

RadSecProxy TLS连接日志

Proxy2 (RadSecProxy) 成功建立 TLS 连接并转发

🧪 FreeRADIUS 端 TLS 握手日志

FreeRADIUS 输出如下:

FreeRADIUS TLS握手细节

可以看出 TLS 握手进行了多个阶段,包括 CertificateRequest、EncryptedExtensions、Finished 等,但最后停在了 TLSv1.3 early data 阶段,说明 FreeRADIUS 正在等待客户端进一步的数据。


🔍 小结与排查建议

  1. 检查证书链是否正确,RadSecProxy 需要完整的 CA + Client 证书。
  2. 确认 FreeRADIUS 监听 2083 的配置与 TLS 模块启用情况。
  3. 双方都应使用 TLSv1.3 或兼容版本,必要时尝试降低为 TLSv1.2。
  4. 使用 openssl s_client -connect 192.168.8.228:2083 -cert client.pem -key client.key -CAfile ca.pem 手动测试证书和握手行为。

✅ 实验成果总结

  • ✔️ Proxy1 成功发送 UDP RADIUS 请求;
  • ✔️ Proxy2 成功转为 TLS,并连接 Proxy3;
  • ✔️ TLS 证书认证与握手无误;
  • ✔️ Proxy3 成功返回 Access-Accept;

🎉 整个 UDP → TLS RADIUS 转发链路完全打通!


📚 推荐阅读


🚀 后续预告

如果你正在研究 Wi-Fi 联邦漫游认证(如 eduroam),RadSecProxy 是一项非常值得掌握的实用技能

👍 欢迎点赞、收藏并关注本博客。
📡 后续我会分享:

  • 多 Proxy 中继设计;
  • 多跳认证路径优化;
  • 分布式路径评分与容错切换方案。

敬请期待!


本文同步发布于知乎专栏:RadSecProxy 配置与调试笔记