在日常网络管理工作中,我时常需要网络管理协会同学的协助以应对各类问题。然而,出于严格的安全考量和既定的管理规定,我无法向网管会同学开放 AC(无线接入控制器)的管理权限。但为保证网络运维工作的高效推进,及时将 AC 相关数据反馈给他们又显得尤为必要。为此,我展开了一系列深入探索与研究,最终借助飞书自建应用成功找到了一套行之有效的解决方案。接下来,我将详细阐述这一过程。
问题背景 为达成 AC 数据向网管会同学的反馈目标,我起初运用了抓包 AC 管理控制台 登录后生成的 session token 的技术手段,并自主编写 API 接口以实现与飞书机器人的数据交互。然而在实际运行过程中,我很快察觉到该 session token 存在时效性问题,通常在数日后便会过期失效,进而致使数据获取流程中断,影响了信息反馈的持续性和稳定性。
解决方案 面对 token 过期导致数据获取中断这个棘手问题,我试着去分析 AC 通信协议和交互流程,还参考了开源社区里不少相关工具。说实话,因为我水平有限,过程特别难,我遇到了各种各样的难题,很多时候都觉得没啥头绪。可能是运气好,最后还真让我摸到了 token 生成的一点规律。下面我就以 Python 为例,给大家分享一下我是怎么动态生成 token 来保证数据稳定获取的,要是有不足的地方,还希望大家多担待。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 def gen_hmac_info (ac_ip,ac_user ): hmac_info_url = f"https://{ac_ip} /hmac_info.do?user={ac_user} " try : hmac_info_response = requests.get(hmac_info_url, verify=False ) hmac_info_response.raise_for_status() except requests.RequestException as e: print (e) continue hmac_info = json.loads(hmac_info_response.text) return hmac_info def gen_ruijie_token (password, hmac_info ): salt = hmac_info["salt" ].encode() iter_count = hmac_info["iter" ] key_len = hmac_info["keylen" ] hash = hashlib.pbkdf2_hmac('sha256' , password.encode(), salt, iter_count, key_len) return hash .hex ()
最终成果 由于当前代码中包含部分敏感信息,尚未完成脱敏处理,出于数据安全与合规性考量,现阶段实际应用代码暂无法对外公开。后续,我计划在完成脱敏及相关处理后,将其发布至 GitHub 平台开源,以便与广大技术爱好者及同行进行交流与分享。在此,仅为大家展示该方案在实际应用中的运行情况与效果呈现 。
Read More
本方法仅需增添一个判断条件。由于是在 post_auth 阶段进行判断,故会存在正常的认证过程,然而在最终阶段会返回认证失败的结果。
1 2 3 if ((NAS-IP-Address == "x.x.x.x" || NAS-IP-Address == "x.x.x.x") && Realm == "xxxxxx.edu.cn") { reject }
将以上内容添加至 sites-enabled/default 文件的post-auth 下即可。
[!tip]
本方法通常应用于高校 eduroam 等建设需求场景下,以禁止本校用户访问本校 eduroam 网络。eduroam 官方文档所介绍的方法会将指定 realm 全部舍弃。而在与锐捷 sam 或卓智 zos 进行搭配时,需要将本校 realm 代理至 sam 和 zos 之上。目前,经过摸索仅得出这一种方法。若有更为优良的方法,恳请各位前辈予以指导
Read More
众所周知,自从微软将账户与Windows账号强制绑定后,使用起来便一直有诸多困难,在Microsoft Support和搜索引擎长期搜索解决方案未果,今天偶然在一个佬的博客翻到了这个问题的解决方案,发现确实有效。
Read More
安装依赖是多么痛苦的事情,相信各位小伙伴比我要更加清楚。apt装不了 还要去github找source 来make install 。终于在某个实验上因为安装依赖崩溃的我才想起来docker容器这一神器。下面我基本记录下相关的指令和学习心得。
Read More