
简介面向网络运维与无线安全方向学习者的实操文档聚焦在 Ubuntu 系统上借助 Freeradius 搭建 802.1X EAP-TLS 双向认证测试环境适合已具备 Linux 基础命令操作能力、希望理解企业级无线认证流程的中级读者参考。资源包内仅含 1 个 docx 文件整体约 472KB篇幅紧凑便于随查随用。文档围绕环境准备、Freeradius 与 openssl 安装、users 与 client.conf 配置、TLS 模块证书生成及 eap 参数调整、路由器对接和启动测试等环节展开并针对证书读取权限、1812 端口占用等常见报错给出处理提示可帮助读者快速复现一套可用的认证链路理清证书签发与客户端导入的关键细节。目前已有 2924 人学习下载适合作为搭建与排错时的对照材料。1. 从一台桥接模式的 Ubuntu 说起freeradius 802.1X EAP-TLS 环境搭建到底难在哪上周帮一个做无线终端的团队复现 802.1X 认证问题他们路由器侧配置看着都对设备却一直卡在“正在认证”。最后发现是虚拟机网络用了 NAT认证报文根本没到 freeradius 那台机器。这类翻车在 EAP-TLS 环境里太常见了证书、共享密钥、网卡模式、端口占用任何一环没对齐现象都是“连不上”排查起来像黑匣子。这篇笔记记录我在 Ubuntu 上用 freeradius 搭 EAP-TLS 双向认证测试环境的完整过程从装包、改 users、配 client.conf、生成证书、改 eap 模块到启动验证和权限报错处理适合正在配 802.1X 认证、需要一套能跑通的 EAP-TLS 测试环境的开发者照着走。2. 装包与目录确认freeradius 3.0 的路径和依赖先对齐2.1 系统准备与桥接网络服务器用 Ubuntu虚拟机场景下网络连接方式必须改成桥接模式。原因不复杂EAP-TLS 认证发生在终端和 radius 服务器之间NAT 模式下虚拟机的地址被转换路由器侧看到的源地址和 client.conf 里写的 ipaddr 对不上认证请求会被直接丢弃。我一般会在装包前先把这一步做掉省得后面查半天。系统起来后先切 root再更新 apt 源。freeradius 和 openssl 都从系统源装不额外加第三方源测试环境够用且少一层变量。sudo su # 切换至 root 用户 apt update # 升级系统预装的 apt apt-get install freeradius openssl # 安装 freeradius 和 opensslapt update只刷新包索引不升级已装软件别和apt upgrade搞混apt-get install一次装两个包openssl 后面生成证书和排查证书链都要用。装完可以用freeradius -v看版本freeradius 3.0 系列的配置目录是/etc/freeradius/3.0/和 2.x 的/etc/freeradius/不同网上老教程直接抄路径会找不到文件这是第一个版本坑。2.2 进入配置目录并确认文件结构装完后进配置目录先确认几个关键文件都在users、clients.conf、mods-enabled/eap、certs/Makefile。原文里写的是client.conf实际 freeradius 3.0 的文件名是clients.conf带 s编辑时注意别敲错。cd /etc/freeradius/3.0/ # 进入 freeradius 安装目录 ls users clients.conf mods-enabled/eap certs/Makefile如果系统没装 vim先补一个apt-get install vim。这一步看着琐碎但很多最小化安装的 Ubuntu 镜像确实没有 vim直接vim users会报 command not found新手容易在这里卡住以为是权限问题。提示所有配置改动前建议先cp users users.bak、cp clients.conf clients.conf.bak改坏了能快速回滚比重新 apt 重装省事。3. 配置 users 与 clients.conf身份、密码、共享密钥三件套3.1 users 文件加测试身份users文件管的是认证身份和密码。在文件末尾或合适位置加一行测试账号格式是身份名加 Cleartext-Password 赋值。vim users在文件里加Testing Cleartext-Password : passwordTesting是身份名称password是密码都可以自定义但要注意后面终端连接时填的身份必须和这里完全一致大小写敏感。EAP-TLS 本身走证书认证users 里的明文密码主要用于测试阶段确认 radius 服务能正常匹配用户以及部分混合认证场景。我一般会保留这个测试账号方便先用简单身份验证服务通不通再切到证书认证。3.2 clients.conf 配置认证终端clients.conf定义哪些客户端这里指路由器或认证设备允许向 radius 发请求以及共享密钥。原文写的client client1 { ... }结构是对的文件名为clients.conf。vim clients.conf加入client client1 { ipaddr 192.168.1.1 secret testing123 require_message_authenticator no }client1是认证终端的别名随便起ipaddr是认证终端地址这里填路由器管理地址实际部署时要换成路由器真实地址secret是共享对称密钥路由器侧 radius 配置里必须填同一个值两边不一致认证一定失败require_message_authenticator no建议设 no旧版本协议设备不支持 Message-Authenticator 属性设 yes 会导致老设备认证被拒。这个参数是很多人忽略的兼容性开关遇到“密钥明明一样却认证失败”可以先看它。注意ipaddr写错是高频问题。桥接模式下虚拟机地址和路由器同网段但如果你换了网段或路由器 WAN/LAN 口接反源地址就不是 192.168.1.1radius 会静默丢弃请求日志里只看到超时。4. 证书生成与 eap 模块配置EAP-TLS 双向认证的核心4.1 用 certs 目录的 Makefile 生成证书EAP-TLS 是双向证书认证服务器要有服务器证书和私钥客户端要有客户端证书。freeradius 自带证书生成脚本进 certs 目录直接 make。cd /etc/freeradius/3.0/certs makemake 跑一段时间后会生成一组文件关键几个文件用途说明ca.pem自签发根证书服务器验证客户端、客户端验证服务器都用它server.pem服务器证书eap 模块里 Certificate_file 指向它server.key服务器私钥默认保护密码 whateverclient.p12客户端个人证书PKCS#12 格式含证书和私钥密码 whateverclient.p12需要导出到终端设备安装安装时输入的密码就是whatever。这个默认密码在测试环境够用生产环境必须改改的位置在 certs 目录的 Makefile 或 openssl 配置里测试阶段先不动减少变量。4.2 修改 eap 模块指向证书eap 模块在mods-enabled/下编辑它把默认 EAP 方法改成 tls并把证书路径指对。cd /etc/freeradius/3.0/mods-enabled/ vim eap关键参数eap { default_eap_type tls tls-config tls-common { private_key_password whatever private_key_file ${certdir}/server.key certificate_file ${certdir}/server.pem ca_file ${cadir}/ca.pem dh_file ${certdir}/dh } }default_eap_type tls把默认认证方法从 peap 等改成 tls终端侧也要选 EAP-TLS 才能对上private_key_password是 server.key 的保护密码默认 whatever和生成时一致private_key_file、certificate_file、ca_file分别指向服务器私钥、服务器证书、根证书${certdir}和${cadir}是 freeradius 内置变量指向 certs 目录别手写成绝对路径容易错dh_file是 Diffie-Hellman 参数文件make 时会生成缺了它 TLS 握手会失败。这几个路径任何一个指错freeradius -X启动时就会报证书读取错误属于比较好定位的一类。5. 启动排错与常见坑从权限到端口占用5.1 启动与证书权限报错配置改完用调试模式启动freeradius -X-X是调试模式前台输出详细日志测试阶段必须用它别用 systemctl start 然后去翻日志效率差很多。启动时如果报证书读取权限问题进 certs 目录改权限cd /etc/freeradius/3.0/certs chmod 777 ca.pem dh server.key server.pem chmod o-w ca.pem dh server.key server.pem第一条给足读权限第二条去掉其他用户的写权限组合起来是让 freeradius 运行用户能读、但不能被随意改。这是原文给出的处理方式测试环境可用更规范的做法是把文件属主改成 freeradius 运行用户但测试阶段先按这个走通。5.2 常见问题排查现象一启动报 1812 端口被占用。原因通常是上一次 freeradius 进程没退干净或者系统里已有其他 radius 服务在跑。解决先reboot重启服务器再执行freeradius -X不想重启可以用ss -lunp | grep 1812找到占用进程后 kill。看到Ready to process requests才算启动成功。现象二终端连接一直认证失败日志无请求。原因多是虚拟机网络不是桥接或 clients.conf 的 ipaddr 和实际源地址不符。解决确认虚拟机网络模式为桥接抓包或看日志确认源地址改 clients.conf 对应 ipaddr。现象三证书导入终端后提示密码错误。原因是用错了密码client.p12 默认密码是 whatever不是 users 里的 password。解决导入时输 whatever别和身份密码混。现象四改了 eap 文件但认证方法没生效。原因可能是改的是mods-available/eap而不是mods-enabled/eapenabled 目录下才是实际加载的软链或文件。解决确认编辑路径是mods-enabled/eap改完重启服务。现象五路由器侧填了 secret 仍认证失败。原因可能是require_message_authenticator设成了 yes老设备不支持。解决改回 no 再试。6. 装完怎么验证从 client.p12 导入到一次成功连接验证分三步走顺序别乱。第一步把certs目录下的client.p12导出到终端设备安装安装密码 whatever装完在设备的证书管理里能看到这张客户端证书。第二步路由器用网线连好登录 192.168.1.1 管理页面无线设置方式选 WPAradius 服务器地址填 Ubuntu 那台机器的地址共享密钥填 clients.conf 里的 testing123保存。第三步终端连路由器广播的热点认证方式选 EAP-TLSCA 证书可以不选测试环境用自签根证书部分终端要求选就选 ca.pem客户端证书选刚装的 client.p12身份填 Testing发起连接。判断成功的标志有两个终端侧显示已连接freeradius 调试窗口里能看到Access-Accept和 TLS 握手完成的日志。如果只看到Access-Challenge反复出现多半是证书链或私钥密码不对如果连 Challenge 都没有回到第 5 章的排查顺序先看网络和 clients.conf。我习惯在每次改完配置后先跑一遍freeradius -X看启动日志有没有证书告警再动终端因为证书路径和权限问题在启动阶段就会暴露比连上终端再猜快得多。这套环境搭下来最容易翻车的不是证书生成而是网络模式和 clients.conf 的地址对齐从那以后我每次搭 802.1X 测试环境都强制先确认桥接和 ipaddr 再往下走。希望帮到你。本文还有配套的精品资源点击获取