小众知识

无线路由器上安装OpenWRT,在需要标准802.1x认证的
2016-06-22 20:46:15   来源:   评论:0 点击:

学校一直用H3C客户端上网,因此无法直接使用无线路由器。后来去一些论坛时常看见DD-WRT和OpenWRT这两个词,也初步了解到wpa_supplicant、njit-client、 mentohust、OH3C等等

学校一直用H3C客户端上网,因此无法直接使用无线路由器。后来去一些论坛时常看见DD-WRT和OpenWRT这两个词,也初步了解到wpa_supplicant、njit-client、mentohust、OH3C等等,知道它们经过配置能够通过Wan口实现H3C、锐捷、港湾等802.1x认证,然后Wlan发射WiFi信号,于是就能实现多机无线上网,但因种种原因一直没有尝试。

这两天终于有机会好好折腾,经过一晚上奋战,解决了家里无线上网的问题。而且学校表面上需要H3C客户端,好像用的是华为和3com搞出来的非标准802.1x认证,实际上在学校的教工区却能兼容标准的802.1x认证,因为在Ubuntu 12.04的网络管理器里勾上”802.1x安全性“,填上用户名密码,加密方式选"EAP-MD5",无需客户端直接就能连上。下面写写过程。

802.1x认证到底是个什么东西?我也说不清,本人《计算机网络》刚刚看到网络层,什么IP数据包,什么RIP路由选择协议,刚有点模糊的概念,懵懵懂懂。但是以下的阅读材料推荐你去看看,相信会有更多的认识(有一点就足够了,我们的目标只是让无线路由连上校园网):无证程序员PT桑的技术博客,吵吵博客,Ubuntu技术支持。

既然Ubuntu可以直接连上,那么DD-WRT和OpenWRT这些定制版的Linux经过配置,相信也是能连上的。

具体怎么做呢?

我一开始看到的是这篇文章,作者用的设备是TL-WR703N,刷的是DD-WRT系统,因为它写的比较清楚,操作难度低,如果能一步一步照着做,相对比较轻松。一开始还比较顺利,但是到“将DD-WRT的网页再解包”那一步时,firmware-mod-kit出现了"Bad file size/offset"错误,估计是由于软件不支持Buffalo的固件(Buffalo的固件是经过特殊加密的,DD-WRT的wiki有写)。如果忽略删除多余语言这一步,强行打包,要么固件太大无法生成,要么加了“-min”参数后生成的固件刷入路由器使路由变砖,最后只能作罢。(我用的路由器是Buffalo WHR-G300N-CH,根据销售地区不同,这款路由器又叫WHR-G300N V2、WHR-G301,其实硬件都是一样的。选择这款路由器的原因在于,它是公认的”刷不死“,任何情况下都是一根网线直接救活,要不然保守估计昨天晚上我这个路由器就得返厂维修10次8次的。缺点是内置天线,信号一般。)

后来我在一个帖子里发现了点线索(4楼):大多数Linux都有wpa_supplicant,看起来很眼熟,另一篇博文则告诉我更多:刷OpenWRT是可以实现目标的,而且方法也更明确了:“主要是把wpad-mini卸载换成wpad,mini版本的不支持802.1x认证。其实wpad就是wpa_supplicant和hostapd的集合。”

于是转向OpenWRTOpenWRT实际上就是一个开源的Linux系统,针对无线路由器开发,它最大的特点是:刷入路由器后,文件系统是可写的,所以后期能随心所欲进行配置。那么道路就明确了:1、刷OpenWRT;2、装wpad。

你可以自己定制OpenWRT固件:配置好交叉编译环境后,从源代码编译自己所需的系统,也可以直接使用官方或第三方做好的固件。

交叉编译什么的太麻烦,没有特殊需要就直接拿现成的用吧。

Buffalo WHR-G300N-CH 的CPU是Atheros7240,对应的OpenWRT固件就是”ar71xx“系列,可以在这里找到。

OpenWRT的固件有两个分类,jffs2和squashfs,这两个分类的区别我没有细究,似乎squashfs有failsafe机制,也不管了,直接选squashfs。然后固件又有factory / sysupdate / tftp之分,直接选择tftp。

刷固件的话,用Linux系统很方便,因为各种工具都可以用命令行直接输命令运行,临时要下载新工具也很简单,命令都是一样的,另外由于Ubuntu相对比较普及,能找到的帮助信息比较多,因此推荐使用Ubuntu。

一根网线连上路由器Lan口,就可以开始了。

首先你可以把固件的名字在图形界面里改短一点,而且固件文件的扩展名也是可以删掉的,不然命令行敲着累。

以下引用别人的文章。对Buffalo WHR-G300N-CH这个路由器来说,不论之前刷的是什么固件,只要按照下面的方法操作,就能刷入新固件,不用先刷回官方固件,再刷别的固件。(红底的字是我加上的注释)

在终端输入: sudo service networking stop                                              Ubuntu 9.10用户用这个命令、 sudo service network
-manager stop Ubuntu 10.4或以上系统用这个命令、 sudo ifconfig eth0 192.168.11.2 必须是这个IP段、(即使你现在刷入的是DD-WRT)即使你已经改了路由的IP、这里你还是必须要配置本地网卡为192.168.11.?、eth0是本地网卡、上文有提到要注意、 sudo ifconfig eth0 netmask 255.255.255.0 (此步可以省略) sudo arp -s 192.168.11.1 AABBCCDDEE5F ‘AABBCCDDEEFF’改为你的路由器mac地址(在路由器背面有标签)、可加冒号也可不加、 拔掉路由电源、 在终端输入 tftp tftp> verbose 提示Verbose mode on. tftp>binary 提示 mode set to octet. tftp> trace 提示 Packet tracing on. tftp> rexmt 1 tftp> timeout 60 tftp> connect 192.168.11.1 tftp> put 1.bin //1.bin就是你想刷入的固件文件名,自己改,别无脑照着这个输
这时立即插上路由器电源、待ubuntu显示正在推送固件(速度很快,几秒就结束了,然后路由器的DIAG灯会亮,等它熄灭,ROUTER灯亮,路由器就启动完毕了)
然后推送完成、会等待输入、 输入 quit退出tftp 输入 exit退出终端、 等待路由重启完成、亮起power与router、刷机完成、

此时第一步完成了。注意OpenWRT没有自带GUI配置界面,就是说你想像控制其他路由器一样,在浏览器里输入"192.168.1.1"来配置,办不到!不信你试试,你会得到一个“连接被关闭”的出错页面。OpenWRT只能用ssh登入后,用linux的命令行配置。

引用别人的文章(这篇非常好,值得细读):

第一次登录需要用telnet来设置初始密码:telnet root@192.168.1.1,设置完成之后,就可以用ssh登录了:ssh root@192.168.1.1默认无线没有打开,需要修改/etc/config/wireless,在wifi-device radio0的设置中,把最后一行option disabled 1删掉。锐捷绑定了网卡的MAC地址,因此需要将路由器的外网网卡的MAC地址改成你的机器的MAC地址。修改/etc/config/network,在wan的配置后面加上这么一行option macaddr xx:xx:xx:xx:xx:xx,其中xx:xx:xx:xx:xx:xx是你的机器的网卡的MAC地址。完成上面两步修改后,重启网络:/etc/init.d/network restart

第二步就是要安装wpad了,安装包依然是去OpenWRT的服务器下载,注意不要下载wpad-mini,OpenWRT已经自带了mini版,等会要先卸载掉mini版,安装完整版。我在这里犯过错误,卸载wpad-mini后,装了wpa_supplicant,结果路由器的无线功能没有了……还纠结老半天,才想起这一句“主要是把wpad-mini卸载换成wpad,mini版本的不支持802.1x认证。其实wpad就是wpa_supplicant和hostapd的集合。”

在电脑终端里(注意不是在ssh打开的那个窗口继续输命令了,要么exit退出,要么开一个新的终端窗口)用scp命令可以传文件到路由器的/tmp文件夹,或者参考这个:pscp -scp xxx.ipk root@192.168.1.1:/tmp

然后继续ssh到路由器,首先卸载wpad-mini。因为你是root登陆的,所以不会有权限问题,命令是:opkg remove wpad-mini

然后cd /tmp

opkg install xxx(xxx是你下载的wpad安装包的文件名)

安装完以后准备802.1x认证的配置文件,一般把文件放在/etc/config/ 目录下,比如叫802.conf,那么就在命令行直接输入命令vi /ect/config/802.conf

vi是一个很有趣的编辑器,我本来按照习惯想用nano,结果OpenWRT没装……只好硬着头皮用vi。vi打开以后不能直接输入,要先按一下“i”键,转换成插入模式,在窗口的左下角能看到状态的转换。然后输入如下内容:(#号作为分割线,随你输不输,反正算注释)

 

##############################################
ctrl_interface=/var/run/wpa_supplicant
# ctrl_interface_group=wheel
ap_scan=0
network={
key_mgmt=IEEE8021X
eap=MD5
identity="username"                        这里的username换成你的认证用户名
password="password"                     这里的password换成密码
eapol_flags=0
}
##############################################

退出vi编辑器时,先按一下“esc”,然后输入“:wq”,(:是命令头,w表示写入,q表示退出)

这个时候就万事俱备啦,很激动,于是我犯了个很二的错误:网线没有接就开始认证,能认证上我看就要到庙里去烧烧香了。

记得把网线接入路由器的WAN口。

继续在ssh窗口里输入:wpa_supplicant -B -i eth1 -c /etc/config/802.conf -D wired

如果一切顺利,这时你的路由应该能正常工作了。OpenWRT默认的WiFi热点就叫这个名字,无密码,你先试试能否上网,测试好再添加密码。

修改/etc/config/wireless文件就能添加密码,详细设置可以看官方wiki

注意这一段

40 MHz channel (300 Mbps)Stuck at 130Mbps? Get 300Mbps! Note: this violates regulatory requirements.Edit the file /etc/config/wireless, and restart the wifi AP by executing the following commands…  uci set wireless.radio0.htmode=HT40+  # or: HT40- if using channel 11  uci set wireless.radio0.noscan=1  uci commit wireless; wifiNote that option 'htmode' should be set to either HT40+ (for channels 1-7) or HT40- (for channels 5-11). You have to use WPA2 encryption with AES.

这一段它在命令行下吭哧吭哧用uci来修改配置文件,其实可以直接编辑配置文件:vi /etc/config/wireless

config wifi-device  radio0        option type     mac80211        option channel  11        option hwmode   11ng        option path     'pci0000:00/0000:00:00.0'        option htmode   HT40-        option noscan   1        list ht_capab   SHORT-GI-40        list ht_capab   TX-STBC        list ht_capab   RX-STBC1        list ht_capab   DSSS_CCK-40        # REMOVE THIS LINE TO ENABLE WIFI:        #option disabled 1config wifi-iface        option device   radio0        option network  lan        option mode     ap        option ssid     你的网络名         //自己改        option encryption psk2+aes                      option key      你的密码          //自己改

最后解决开机认证的问题,脚本可以参考这个人的,但从我这里的经验来看,手动运行udhcpc是不必要的。还有WAN口到底是eth0还是eth1需要你用ifconfig看清楚,比如我这里的WAN口就是eth1,所以记得自己改一下,“wpa_supplicant -B -D wired -i eth1 -c /etc/config/802.conf ”

 

至此路由器终于配置完毕。

如果你是H3C、锐捷、港湾等非标准802.1x认证,资料也很多,安装相应的第三方软件就行。

 

以下链接汇总供参考

http://sfjblog.7yue7.net/?p=239

http://ghtt.hitwh.edu.cn/thread-1946615-1-1.html

http://www.chaochaoblog.com/archives/1116

http://apt-blog.net/802-1x_support_macos_freebsd

相关热词搜索:路由器 OpenWRT

上一篇:WiFi无线网络的几种认证与加密方式
下一篇:路由器刷openwrt和不死boot

分享到: 收藏
评论排行
最新发布