桥设备透传802.1x报文
2015-08-27 13:19
351 查看
桥设备透传802.1x报文
eap报文 eap报文 radius报文
客户端----------->桥设备------------->认证者-------------->认证服务器
(Supplicant) (Authenticator) (Authentication Server)
分析:
1、802.1x认证流程中,第一个报文(EAPOL start)的目的mac为01:80:c2:00:00:03。在linux中的桥代码处理中,将会把此目的mac的报文截断,交给本机处理。
详细代码如下:
int br_handle_frame(struct net_bridge_port *p, struct sk_buff **pskb)
{
struct sk_buff *skb = *pskb;
const unsigned char *dest = eth_hdr(skb)->h_dest;
...
if (unlikely(is_link_local(dest))) { /* 8021x的eapol start报文此处为真 */
skb->pkt_type = PACKET_HOST;
return NF_HOOK(PF_BRIDGE, NF_BR_LOCAL_IN, skb, skb->dev,
NULL, br_handle_local_finish) != 0;
}
....
}
因此需要在桥设备中将is_link_local为真的报文透传出去,且需要能进行控制。
解决办法:能对来自指定端口的此类报文透传到指定mac地址。
1、设计用户空间命令行,指定参数端口号和目的mac
# brctl set8021x 端口号 目的mac /*设置*/
# brctl unset8021x 端口号 /*取消*/
a、ioctl(br_socket_fd, SIOCSIFBR, args) /* 用户空间 自定义函数 */
|
|
∨
b、sock_ioctl /* 内核空间 */
|
|
∨
c、br_ioctl_hook(br_ioctl_deviceless_stub)
|
|
∨
d、old_deviceless
|
|
∨
e、具体的处理函数(在对应的net_bridge_port 结构中设置标志位,存储目的mac)
2、修改br_handle_frame,对符合条件的报文,修改其目的mac,透传
eap报文 eap报文 radius报文
客户端----------->桥设备------------->认证者-------------->认证服务器
(Supplicant) (Authenticator) (Authentication Server)
分析:
1、802.1x认证流程中,第一个报文(EAPOL start)的目的mac为01:80:c2:00:00:03。在linux中的桥代码处理中,将会把此目的mac的报文截断,交给本机处理。
详细代码如下:
int br_handle_frame(struct net_bridge_port *p, struct sk_buff **pskb)
{
struct sk_buff *skb = *pskb;
const unsigned char *dest = eth_hdr(skb)->h_dest;
...
if (unlikely(is_link_local(dest))) { /* 8021x的eapol start报文此处为真 */
skb->pkt_type = PACKET_HOST;
return NF_HOOK(PF_BRIDGE, NF_BR_LOCAL_IN, skb, skb->dev,
NULL, br_handle_local_finish) != 0;
}
....
}
因此需要在桥设备中将is_link_local为真的报文透传出去,且需要能进行控制。
解决办法:能对来自指定端口的此类报文透传到指定mac地址。
1、设计用户空间命令行,指定参数端口号和目的mac
# brctl set8021x 端口号 目的mac /*设置*/
# brctl unset8021x 端口号 /*取消*/
a、ioctl(br_socket_fd, SIOCSIFBR, args) /* 用户空间 自定义函数 */
|
|
∨
b、sock_ioctl /* 内核空间 */
|
|
∨
c、br_ioctl_hook(br_ioctl_deviceless_stub)
|
|
∨
d、old_deviceless
|
|
∨
e、具体的处理函数(在对应的net_bridge_port 结构中设置标志位,存储目的mac)
2、修改br_handle_frame,对符合条件的报文,修改其目的mac,透传
相关文章推荐
- 使用Octopress搭建静态博客网站
- html5 canvas 详细使用教程
- linux编程学习
- Apache与Tomcat有什么关系和区别
- react-native试玩(4)-新建项目
- js要入门?
- JSON example with Jersey + Jackson
- 架构师好比两面神
- 数据结构学习之路-第二章:静态单链表
- uva 10084 - Hotter Colder(多边形切割)
- nginx+tomcat java报Broken pipe错误
- Android View 的事件处理和分发原理简析
- 编码风格——linux内核开发的coding style
- OGG安装配置文档
- Android studio中正确引入so文件的方法
- 华为OJ(删除字符串中出现次数最少的字符)
- python文件中的__name__=='__main__'的使用及调用其他py文件中的函数方法
- java中的抽象类和接口
- 在ASP.NET 5应用程序中的跨域请求功能详解
- 编程风格——整洁代码的4个提示