本文细阐述的是EAP-PEAP的实现过程,华为交换机使用的是S5735S-L24T4X-A1
802.1X协议是一种基于端口的网络接入控制协议,其核心目标是在用户接入局域网之前,在物理层或链路层对设备进行身份验证 。在一个完整的802.1X体系中,存在三个关键角色:客户端、认证系统、以及认证服务器。
1. Ubuntu 24.04服务器安装FreeRADIUS
1.1 依赖更新与配置
bash
sudo apt-get update && sudo apt-get upgrade -y
sudo apt-get install -y build-essential libssl-dev libtalloc-dev libkqueue-dev
1.2 FreeRADIUS部署
bash
sudo apt-get install -y freeradius freeradius-utils freeradius-mysql
安装完成后验证服务是否正常启动,显示active (running)正常。
bash
sudo systemctl status freeradius
1.3 数据库后端MariaDB的安装与初始化
安装MariaDB
bash
sudo apt-get install -y mariadb-server
sudo systemctl start mariadb
sudo systemctl enable mariadb
创建数据库与用户:在终端输入sudo mysql -u root命令,进入MariaDB的命令行交互模式
- 创建名为
radius的数据库 - 创建数据库用户
radius并设置密码为radius_password_2024
sql
CREATE DATABASE radius;
GRANT ALL ON radius.* TO 'radius'@'localhost' IDENTIFIED BY 'radius_password_2024';
FLUSH PRIVILEGES;
EXIT;
1.4 导入FreeRADIUS SQL架构
FreeRADIUS提供了一个标准的SQL架构文件,用于定义认证、授权、计费等表结构。
bash
sudo -i
#这一步会提示输入数据库密码
mysql -u root -p radius < /etc/freeradius/3.0/mods-config/sql/main/mysql/schema.sql
1.5 FreeRADIUS核心认证策略配置
FreeRADIUS 只会响应来自已知客户端请求。在 /etc/freeradius/3.0/clients.conf中,需要添加华为交换机的IP地址及预共享密钥 。
实现需要配置交换机的IP地址和认证服务器在一个网段(下面是交换机的配置):
bash
system-view
interface Vlanif 1
ip address 10.10.110.207 255.255.255.0
quit
ping 10.10.110.206 #ping下服务器看能否ping通
save #保存一下配置
在/etc/freeradius/3.0/clients.conf中,需要添加华为交换机的IP地址及预共享密钥 。
client huawei_switch {
ipaddr = 10.10.110.207
secret = Huawei_Radius_Key_2024
shortname = S5735S-L
nastype = other
}
1.6 证书自动化生成与管理
sudo -i
cd /etc/freeradius/3.0/certs/
chmod +x ./bootstrap
./bootstrap
exit
该脚本将生成 server.pem(服务器证书)、server.key(私钥)和 ca.pem(根证书)。在生产环境中,客户端必须信任此根证书,否则认证将失败 。
1.7 启用SQL认证流
建立SQL模块的软链接
sudo ln -s /etc/freeradius/3.0/mods-available/sql /etc/freeradius/3.0/mods-enabled/
在服务器中开启SQL调用
- 搜索关键词
authorize {。 - 在该区域内找到
-sql或#sql,将其修改为sql(去掉前缀符号)。 - 同理,搜索
accounting {区域,确保其中的sql也被启用(去掉开头的-#号)。
bash
sudo vim /etc/freeradius/3.0/sites-enabled/default
重复上述操作:在 authorize { 和 accounting { 区域中,确保 sql 行没有被注释掉 。
| 💡
实际修改时无ccounting { 区域,忽略
bash
sudo vim /etc/freeradius/3.0/sites-enabled/inner-tunnel
配置数据库连接参数
bash
sudo vim /etc/freeradius/3.0/mods-available/sql
在文件内找到 sql {... } 部分,修改以下参数(对应之前在 MariaDB 中创建的信息):
driver = "rlm_sql_mysql"dialect = "mysql"server = "localhost"login = "radius"password = "radius_password_2024"radius_db = "radius"- 关键点 :找到
read_clients = yes这一行,去掉开头的#号。这允许 FreeRADIUS 从数据库的nas表中动态读取交换机配置 。
注释掉如下tls相关内容
mysql {
# If any of the files below are set, TLS encryption is enabled
#tls {
# ca_file = "/etc/ssl/certs/my_ca.crt"
# ca_path = "/etc/ssl/certs/"
# certificate_file = "/etc/ssl/certs/private/client.crt"
# private_key_file = "/etc/ssl/certs/private/client.key"
# cipher = "DHE-RSA-AES256-SHA:AES128-SHA"
# tls_required = yes
# tls_check_cert = no
# tls_check_cert_cn = no
#}
# If yes, (or auto and libmysqlclient reports warnings are
# available), will retrieve and log additional warnings from
# the server if an error has occured. Defaults to 'auto'
warnings = auto
}
验证与生效
bash
# 强制杀死所有现有 radius 进程
sudo pkill freeradius
# 检查 1812 端口是否已被释放
sudo lsof -i :1812
# 重启服务
sudo systemctl restart freeradius
# 或者进入调试模式观察是否有 SQL 连接成功的日志
sudo freeradius -X
会有如下类似输出
rlm_sql_mysql: Starting connect to MySQL server
......
Ready to process requests
2. 华为交换机配置
首先定义RADIUS服务器的地址和密钥,确保与clients.conf中的设置一致(在交换机中执行)
<HUAWEI>system-view
[HUAWEI]radius-server template rd1
[HUAWEI-radius-rd1]radius-server authentication 10.10.110.206 1812
[HUAWEI-radius-rd1]radius-server accounting 10.10.110.206 1813
[HUAWEI-radius-rd1]radius-server shared-key cipher Huawei_Radius_Key_2024
[HUAWEI-radius-rd1]radius-server user-name domain-included
AAA方案与域的定义
[HUAWEI]aaa
[HUAWEI-aaa]authentication-scheme sch1
[HUAWEI-aaa-authen-sch1]authentication-mode radius
[HUAWEI-aaa-authen-sch1]accounting-scheme sch1
[HUAWEI-aaa-accounting-sch1]accounting-mode radius
[HUAWEI-aaa-accounting-sch1]accounting realtime 15
[HUAWEI-aaa-accounting-sch1]quit
创建一个认证域,并将上述方案绑定到该域
[HUAWEI-aaa]domain huawei.com
[HUAWEI-aaa-domain-huawei.com]authentication-scheme sch1
[HUAWEI-aaa-domain-huawei.com]accounting-scheme sch1
[HUAWEI-aaa-domain-huawei.com]radius-server rd1
[HUAWEI-aaa-domain-huawei.com]quit
802.1X接入配置文件与端口绑定,使用"统一模式"进行端口配置是目前华为官方推荐的最佳实践 。
bash
# 创建 802.1X 接入配置文件
[HUAWEI-aaa]dot1x-access-profile name p1
[HUAWEI-dot1x-access-profile-p1]dot1x authentication-method eap
# 创建认证配置文件
[HUAWEI-dot1x-access-profile-p1]authentication-profile name auth_p1
[HUAWEI-authen-profile-auth_p1]dot1x-access-profile p1
[HUAWEI-authen-profile-auth_p1]access-domain huawei.com force
# 应用到交换机接口
[HUAWEI-authen-profile-auth_p1]interface GigabitEthernet 0/0/1 #重要:这个是客户端的接口,而不是服务器的接口
[HUAWEI-GigabitEthernet0/0/1]authentication-profile auth_p1
3. 登录数据库并添加测试用户
在ubutnu服务器侧执行
bash
sudo mysql -u root -p radius #会提示输入root密码和数据库密码
输入密码进入后,执行以下SQL语句(创建一个用户名为 huawei_user,密码为 huawei@2024 的账号) :
sql
INSERT INTO radcheck (username, attribute, op, value)
VALUES ('huawei_user', 'Cleartext-Password', ':=', 'huawei@2026');
EXIT;
4. 客户端配置
启动核心服务(Wired AutoConfig)
Windows 默认不开启有线网的802.1X功能,必须手动启动服务:
- 按下键盘的
Win + R键,输入services.msc并回车 。 - 在服务列表中找到 Wired AutoConfig (中文名:有线自动配置) 。
- 双击它,将"启动类型"改为 自动 ,并点击 启动 按钮 。
- 点击确定,此时你的网卡属性里才会出现"身份验证"选项卡 。
配置网卡身份验证属性
- 右键点击右下角的网络图标,选择"打开'网络和 Internet'设置",点击 更改适配器选项 。
- 找到你的"以太网"网卡,右键点击选择 属性 。
- 点击顶部的 身份验证 选项卡。
- 勾选 启用 IEEE 802.1X 身份验证 。
- 在"选择网络身份验证方法"中,选择 Microsoft: 受保护的 EAP (PEAP) 。
详细参数设置
- 点击上一步旁边的设置按钮 。
- 关键点:取消勾选 验证服务器证书(因为你目前使用的是 FreeRADIUS 生成的测试自签名证书,勾选会导致验证失败) 。
- 确保底部的"选择身份验证方法"是 安全密码 (EAP-MSCHAP v2) 。
- 点击其旁边的 配置 按钮,取消勾选"自动使用 Windows 登录名和密码",然后点确定返回 。
设置用户登录模式
- 回到网卡属性的"身份验证"页面,点击下方的 其他设置(或高级设置) 。
- 勾选 指定身份验证模式 ,在下拉框里选择 用户身份验证 。
- 点击"保存凭据",输入你在 Ubuntu 数据库(
radcheck表)里设置的账号和密码,或者点击确定,等插上网线时在弹出的对话框里输入 。
5. 常见命令
查看认证状态
bash
<HUAWEI>display access-user