锐捷认证客户端在嵌入式linux平台上的移植
一、TCP/IP协议简介
IP协议用于将多个包交换网络连接起来,IP不提供可靠的传输服务,它不提供端到端的或(路由)结点到(路由)结点的确认,对数据没有差错控制,它只使用报头的校验码,它不提供重发和流量控制。如果出错可以通过ICMP报告,ICMP在IP模块中实现。I
TCP是面向连接的通信协议,通过三次握手建立连接,通讯完成时要拆除连接,由于TCP是面向连接的所以只能用于点对点的通讯。
TCP提供的是一种可靠的数据流服务,采用“带重传的肯定确认”技术来实现传输的可靠性。TCP还采用一种称为“滑动窗口”的方式进行流量控制,所谓窗口实际表示接收能力,用以限制发送方的发送速度。
如果IP数据包中有已经封好的TCP数据包,那么IP将把它们向‘上’传送到TCP层。TCP将包排序并进行错误检查,同时实现虚电路间的连接。TCP数据包中包括序号和确认,所以未按照顺序收到的包可以被排序,而损坏的包可以被重传。
二、锐捷认证原理
锐捷认证协议以802.1X协议为基础。其认证过程如下:
1、主机现在不知道服务器的地址,发出第一帧数据,协议为生成树协议(Spanning-tree)。
2、服务器向主机发送EAP REQUEST Identity要求认证身份请求。
3、主机向服务器发送EAP RESPONSE Identity回应。
4、服务器向主机发送EAP REQUEST MD5 challenge要求认证密码MD5校验值。
5、主机向服务器发送EAP RESPONSE MD5 challenge回应。
6、服务器向主机发送EAP SUCCESS。
7、从DHCP服务器获取IP地址。
8、客户端版本校验。
9、发送数据包保持在线。
三、软硬件平台
硬件平台:s3c6410处理器 DM9000网卡
内核版本:linux-3.0.1
文件系统:可读的yaffs2文件系统
1、需要开启的内核支持:
# USB Network Adapters
CONFIG_USB_NET_DM9601=m或者y
usb网卡的支持,否则会找不到网卡。出现:!! 查找网卡失败: Can't open USB bus file /sys/kernel/debug/usbmon/1t: No such file or directory
# Networking options
CONFIG_PACKET=y
!! 打开网卡eth0失败: socket: Address family not supported by protocl
CONFIG_IP_PNP_DHCP=y
华师大学城是动态分配IP,所以还要在内核开启这条支持。
2、相关库与工具
(1)交叉编译器:4.2.2-eabi
编译内核和编译锐捷兼容包的如果不是同一个交叉编译器可能会出问题。如编译内核用支持eabi特性的编译器而编译锐捷的编译器不支持eabi则将导致不兼容,下载到板上后会找不到命令锐捷命令。
(2)编译libpcap:
libpcap是unix和linux平台下的网络数据包捕获函数包。编译生成的库libpcap.a在编译锐捷兼容客户端时要用到
1、下载libpcap,网址http://www.tcpdump.org
2、解压tar -zxvf libpcap-1.0.0.tar.gz,修改confiugre文件,注释掉下面两段:
#if test -z "$with_pcap" && test "$cross_compiling" = yes; then
# { { echo "$as_me:$LINENO: error: pcap type not determined when cross-compiling; use --with-pcap=..." >&5
#echo "$as_me: error: pcap type not determined when cross-compiling; use --with-pcap=..." >&2;}
# { (exit 1); exit 1; }; }
#fi
.......
# if test $ac_cv_linux_vers = unknown ; then
# { { echo "$as_me:$LINENO: error: cannot determine linux version when cross-compiling" >&5
#echo "$as_me: error: cannot determine linux version when cross-compiling" >&2;}
# { (exit 1); exit 1; }; }
# fi
3、执行./configure --host=arm-linux,使用arm-linux-gcc进行configure,生成Makefile
4、修改Makefile的prefix项为prefix=/usr/local/arm/4.2.2-eabi/usr(安装到交叉编译工具的目录)
5、make,make install,完成了libpcap的编译和安装,查看/usr/local/arm/4.2.2-eabi/usr/lib,该目录下增加了两个pcap的文件库,分别为libpcap.a和libpcap.so.1.0.0。
(3)编译dhclient:
1、下载dhcp源码,网址http://gd.tuwien.ac.at/infosys/servers/isc/dhcp/
2、解压 tar -zxvf dhcp-3.1.3.tar.gz,进入目录./dhcp-3.1.3/
3、运行配置./configure,之后生成work.linux-2.2文件夹,进入目录./work.linux-2.2/client/
4、输入make "CC=/usr/local/arm/4.2.2-eabi/usr/bin/arm-linux-gcc -static",编译生成dhclient
5、复制dhclient到开发板上的/usr/bin目录下,复制/dhcp-3.1.3/client/dhclient.conf 到开发板的/sbin/目录下,复制/dhcp-3.1.3/client/scripts/linux 到开发板的/sbin/目录下,并改名为dhclient-script,同时修改该文件的第一行#! /bin/bash 为#! /bin/sh,保存后,修改权限 chmod +x /sbin/dhclient-script
四、编译配置锐捷兼容包mentohust-0.3.1
1、下载mentohust源码,网址http://code.google.com/p/mentohust/
2、解压 tar -zxvf mentohust-0.3.1.tar.gz,进入目录./menohust-0.3.1/
3、运行配置./configure --host=arm-linux --disable-encodepass --disable-notify --with-pcap=stlib
这里把libpcap.a库设为静态链接,前提是把刚才编译生成的libpcap.a放到mentohust-0.3.1/src/里(也可以将配置改为—with-pcap=/usr/local/arm/4.2.2-eabi/usr/lib/libpcap.a)
4、输入make,编译menohust-0.3.1,在/mentohust-0.3.1/src/里生成了arm平台上的可执行文件menothust
5、将mentohust和mentohust.conf复制到开发板上的/usr/bin/目录下,修改mentohust.conf中的
;网卡
Nic=
为:
;网卡
Nic=eth0
6、本人所在的华师大学城的锐捷认证过程要求V3校验算法验证,而mentohust-0.3.1版本是只支持V2校验的,所以只是这样编译配置是认证不了的。利用mentohust提供的一个锐捷抓包工具MentoHUSTTool.exe在windows下抓取锐捷客户端认证过程的数据包,保存为扩展名为.mpf的文件,如mentohust.mpf,并复制的开发板上,在开发板上运行mentohust命令认证时通过-f选项指定数据文件menothust.mpf
7、通过串口工具ckermit连接开发板的终端(也可直接在开发板上的终端操作),输入命令mentohust -f/etc/mentohust.mpf -b2 -w,根据提示输入用户名、密码,组播地址选项选0,DHCP方式选二次认证。加-w选项之后配置信息会保存/etc/menohust.conf。Mentohust程序首先要找到认证服务器MAC,这里MAC为00:d0:f8:bf:94:71;然后mentohust向这个地址发送用户名与密码认证信息;通过用户认证之后再利用抓包工具所抓取的数据文件mentohust.mpf进行锐捷客户端的校验;通过客户端校验之后mentohust调用dhclient动态获取IP;获得服务器分配的IP后,就可以连接互联网了。Ping一下Google,可以接收到应答数据包。
终端信息如下:
mentohust 认证:
[root@FORLINX6410]# mentohust -f/etc/mentohust.mpf -b2 -w
欢迎使用MentoHUST 版本: 0.3.1
Copyright (C) 2009-2010 HustMoon Studio
人到华中大,有甜亦有辣。明德厚学地,求是创新家。
Bug report to http://code.google.com/p/mentohust/issues/list
** 网卡[1]: eth0
** 您选择了第[1]块网卡。
?? 请输入用户名: 2009*******
?? 请输入密码: ******
?? 请选择组播地址(0标准 1锐捷私有 2赛尔): 0
?? 请选择DHCP方式(0不使用 1二次认证 2认证后 3认证前): 1
>> 进入后台运行模式,使用参数-k可退出认证。
** 用户名: 2009*******
** 网卡: eth0
** 认证超时: 8秒
** 响应device eth0 entered promiscuous mode
间隔: 30秒
** 失败等待: 15秒
** 允许失败: 0次
** 组播地址: 标准
** DHCP方式: 二次认证
** 数据文件: /etc/mentohust.mpf
** DHCP脚本: dhclient
** 本机MAC: 00:e0:62:1f:e3:8c
** 使用IP: 125.216.223.30
** 子网掩码: 255.255.254.0
** 认证参数已成功保存到/etc/mentohust.conf.
>> 寻找服务器...
** 认证MAC: 00:d0:f8:bf:94:71
>> 发送用户名...
>> 发送密码...
** 客户端版本: 4.31
** MD5种子: 55:3c:ba:b3:21:2e:9b:ca:b9:e3:71:20:32:1b:2c:84
** V2校验值: 86f1775d7e6a7a2224e90bb23d3fd928
>> 认证成功!
>> 正在获取IP...
Internet Systems Consortium DHCP Client V3.1.3
Copyright 2004-2009 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/
can't create /var/state/dhcp/dhclient.leases: No such file or directory
Listening on LPF/eth0/00:e0:62:1f:e3:8c
Sending on LPF/eth0/00:e0:62:1f:e3:8c
Sending on Socket/fallback
DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 5
DHCPOFFER from 222.200.152.1
DHCPREQUEST on eth0 to 255.255.255.255 port 67
DHCPACK from 222.200.152.1
can't create /var/state/dhcp/dhclient.leases: No such file or directory
bound to 125.216.223.30 -- renewal in 6424 seconds.
>> 操作结束。
** 本机MAC: 00:e0:62:1f:e3:8c
** 使用IP: 125.216.223.30
** 子网掩码: 255.255.254.0
>> 寻找服务器...
>> 发送用户名...
>> 发送密码...
** 客户端版本: 4.31
** MD5种子: f6:81:c4:de:4f:88:42:43:7a:28:ee:89:0b:72:b4:23
** V2校验值: 332a78abde8732af2fd45bb3d257a501
>> 认证成功!
>> 发送心跳包以保持在线...
ping 命令测试网络:
[root@FORLINX6410]# ping www.google.com
PING www.google.com (74.125.71.147): 56 data bytes
64 bytes from 74.125.71.147: seq=0 ttl=44 time=252.864 ms
64 bytes from 74.125.71.147: seq=1 ttl=44 time=254.789 ms
64 bytes from 74.125.71.147: seq=2 ttl=44 time=265.585 ms
64 bytes from 74.125.71.147: seq=3 ttl=44 time=253.418 ms
64 bytes from 74.125.71.147: seq=4 ttl=44 time=258.604 ms
64 bytes from 74.125.71.147: seq=5 ttl=44 time=280.166 ms
^C
--- www.google.com ping statistics ---
6 packets transmitted, 6 packets received, 0% packet loss
round-trip min/avg/max = 252.864/272.019/320.106 ms
锐捷认证客户端在嵌入式linux平台上的移植相关推荐
- 8021x 获取IP信息失败,请检查锐捷认证客户端当前配置是否符合所在网络的要求,检查完毕后尝试重新认证
早上一起床,登陆锐捷客户端上网,谁知道错问题了.不能联网了,锐捷登陆成功,但是一会儿就提示失败,获取IP信息失败了.下面我描述一下问题原因: 锐捷登陆后有认证提示,和往常正常情况一样的,不过有个小感叹 ...
- 锐捷认证客户端——多网卡限制破解
锐捷认证v3.02 有多网卡限制和使用代理服务的限制. 使用锐捷认证后,无法组件内部局域网,很不方便. 经观察,锐捷认证v3.02一分钟就检测一次. 先用 W32DASM 反汇编8021x.exe,然 ...
- Mac上锐捷认证找不到网卡或无法连接网络问题解决
1.打开终端,输入命令: sudo chgrp admin /dev/bpf* 然后输入自己的用户密码(密码是看不见的) 输入密码后如下图所示: 再输入命令: sudo chmod g+rw /dev ...
- arm-linux平台的锐捷认证工具Mentohust移植
arm-linux平台的锐捷认证工具Mentohust移植 前期准备 编译libpcap 编译mentohust 测试 前期准备 根据不同的arm-linux平台选择对应的交叉编译器,我的开发板芯片是 ...
- Linux下校园网锐捷认证(以湖南农业大学校园网为例)
本文主要讨论Linux下校园网(锐捷)连接的方法. 大多数高校采用的是锐捷客户端来实现认证,但目前锐捷官方没有及时出Linux版本的客户端,因此给很多在校园网内使用Linux的同学带来了很多不便.不过 ...
- linux fedora下实现锐捷认证
装上fedora时间也不短了,可就是一直都没有能在fedora下实现上网,一日与学院网络管理中心的老师交流,有幸得到老师的点化,进而实现了linux fedora下用锐捷认证上网. 老师发来的邮件,原 ...
- Ubuntu Linux下使用锐捷认证的方法
http://bbs.710071.cn/viewthread.php?tid=4688 http://bbs.710071.cn/viewthread.php?tid=4918 感谢以上两篇文章的作 ...
- linux 规避锐捷认证(版本三)
linux 规避锐捷认证(版本三) Luo Weifeng 2011-4-25 转载请保留:http://blog.csdn.net/luoweifeng1989/archive/2011/04/25 ...
- linux锐捷认证成功无法上网,win7系统锐捷认证成功但是却无法上网的解决方法
很多小伙伴都遇到过win7系统锐捷认证成功但是却无法上网的困惑吧,一些朋友看过网上零散的win7系统锐捷认证成功但是却无法上网的处理方法,并没有完完全全明白win7系统锐捷认证成功但是却无法上网是如何 ...
最新文章
- Visual Studio 智能提示功能消失解决办法
- sso和oauth2.0的简单了解学习
- 3.【练习题】构造方法与重载 定义一个网络用户类,要处理的信息有用户ID、用户密码、email地址。拓展:判断密码长度
- Linux设备驱动模型3——platform平台总线工作原理
- 【深度学习系列】用PaddlePaddle和Tensorflow实现GoogLeNet InceptionV2/V3/V4
- 任正非:华为的岗位没有年龄限制;腾讯微博将于9月28日停止运营;微软关闭Visual Studio Online|极客头条
- 【线段树】 SPOJ 2713 Can you answer these queries IV
- 大数据分析工具如何选择
- 49. 学会分析与STL相关的编译器诊断信息
- 体验Unity2017.2.0f3进行Vuforia开发
- WPF之NPOIE导出xcel
- Xcode 报错 ERROR ITMS-90096,启动图黑屏
- 【音视频流媒体】WebRTC 直播超详细介绍
- 配置ntp客户端与服务器端时间的同步
- 什么是JPA(Java persistence API)?
- 【rmzt:动漫俺修罗酷爱主题】
- JS18-解决案例中this、for、for...in的问题
- 查看雾霾用污染地图?用户也需谨慎,莫被仿冒APP污染
- 由n阶幻方问题引发的思考
- 如何在UnrealEngine虚幻引擎中加载Web页面