如何在Freeradius中配置动态VLAN切换?基于Mikrotik RouterOS v7 NAS
在Freeradius中配置动态VLAN切换(适配Mikrotik RouterOS v7)
一、Freeradius端配置
1. 开启CoA支持
在线用户VLAN切换依赖Change of Authorization (CoA) 机制,先完成基础配置:
- 启用CoA站点配置:
ln -s /etc/freeradius/3.0/sites-available/coa /etc/freeradius/3.0/sites-enabled/ - 在
clients.conf中添加Mikrotik NAS的授权信息,允许其接收CoA请求:client mikrotik-nas { ipaddr = 192.168.1.1 # 替换为你的Mikrotik设备IP secret = your-radius-secret # 与Mikrotik端密钥保持一致 require_message_authenticator = no coa_server = yes }
2. 触发VLAN切换的CoA请求
用radclient命令手动发起切换(适合测试或脚本调用):
echo "User-Name=it-user,Tunnel-Type=13,Tunnel-Medium-Type=6,Tunnel-Private-Group-ID=20,Mikrotik-VLAN-ID=20" | radclient 192.168.1.1:3799 coa your-radius-secret
参数说明:
User-Name=it-user:指定目标切换用户Tunnel-Type=13:RFC标准VLAN类型标识Tunnel-Medium-Type=6:RFC标准IEEE 802介质标识Tunnel-Private-Group-ID=20:目标VLAN IDMikrotik-VLAN-ID=20:兼容Mikrotik私有属性,确保设备识别
若需自动切换,可结合Freeradius的policy.conf配置触发条件,满足规则时自动发送CoA请求。
二、Mikrotik RouterOS v7端配置
1. 启用CoA接收
开启Mikrotik的CoA响应功能:
/radius set [find name=your-radius-server] accept-coa=yes
(your-radius-server替换为你已配置的RADIUS服务器名称)
2. 配置接入端口VLAN模式
用户接入端口需设为Trunk模式,允许目标VLAN通过,以ether2为例:
/interface ethernet switch port set ether2 vlan-mode=secure vlan-header=add-if-missing trunk-vlans=10,20,30
(trunk-vlans替换为你实际使用的VLAN ID列表)
3. 验证切换结果
发送CoA请求后,查看用户会话状态确认切换:
- Hotspot用户:
/ip hotspot active print detail - PPPoE用户:
/ppp active print detail
同时检查用户是否获取到目标VLAN的DHCP地址,确认生效。
三、常见问题排查
- 端口阻断:确保Freeradius与Mikrotik之间的UDP端口(1812、1813、3799)未被防火墙拦截
- 密钥不匹配:两端RADIUS密钥必须完全一致
- CoA未启用:再次确认Mikrotik的
accept-coa参数为yes - 日志定位:查看Freeradius日志排查问题:
tail -f /var/log/freeradius/radius.log
内容的提问来源于stack exchange,提问作者qwerty
相关产品推荐
相关产品推荐

