【发布时间】:2018-06-09 02:51:14
【问题描述】:
它的 RADIUS 部分对查询并不重要,但我想我会解释一下上下文:
我有一个基于 linux 的 radius 服务器,它总是在“Access-Accept”数据包中包含某个属性,这是我的一个网络设备不喜欢的。服务器没有禁用所述属性的选项。我正在研究使用脚本修改传出访问接受以删除属性并重新计算校验和和 Radius 身份验证器字段的可能性。
我将能够编写一个 python 脚本来创建一个 UDP 套接字来监听,然后根据需要修改半径数据包。我坚持的部分是:
(A) 如何将传出流量重定向到脚本的套接字?
(B) 如何保证源IP和目的IP/端口一致?
对 (A) 进行一些研究,it looks like 我们可以使用 iptables 将传入数据重定向到脚本:
以上链接中的建议命令:
iptables -t nat -D PREROUTING -s yourhost -d desthost -p tcp --dport 80 -j REDIRECT --to 10101
但是,我需要修改传出数据。 我猜我需要将 PREROUTING 修改为 POSTROUTING 似乎还有一个 NAT 关键字。我不确定这将如何影响 IP 地址。
我也担心,如果我的脚本确实发送了具有相同 IP/端口的修改数据包,它会不会再次命中 iptable 规则,并陷入无限循环?我该如何避免这种情况?
对于查询 (B),我想使用 Scapy 是一种确保 IP/端口在修改后的数据包中保持不变的选项。如果有更简单的选择,我想知道。
我们将不胜感激。
【问题讨论】:
-
只编辑源代码并重建您的 RADIUS 服务器可能要容易得多。
标签: python linux sockets iptables