当前位置

修改OpenWRT的设置接入802.1X认证的网络

James Qi 在 2014年4月8日 - 03:21 提交
内容摘要:前面写了一篇《俺在德国上网的十八般武艺》描述俺的上网艰难历程和各种上网方式,最后说到用中继放大器连接马尔堡大学的网络作为终极解决方式,下面就说说查找的一些资料和解决的办法。 一、查找的资料: ......

  前面写了一篇《俺在德国上网的十八般武艺》描述俺的上网艰难历程和各种上网方式,最后说到用中继放大器连接马尔堡大学的网络作为终极解决方式,下面就说说查找的一些资料和解决的办法。

  一、查找的资料:

  1. 马尔堡大学WLan的介绍Wifi热点分布情况Linux下的认证设置
  2. 一篇介绍利用OpenWRT连接德国某大学网络802.1x认证的文章
  3. IEEE8021X 设置及报错的一篇讨论,其中有马堡大学的人留言咨询
  4. wpa_supplicant.conf的设置参数介绍
  5. OpenWRT的Wireless设置参数介绍

  二、具备的条件:

  很早前就查到上面的第1篇,知道马尔堡大学可以WLan上网,然后过一阵子仔细查找Wifi热点分布找到附近有接入点,背电脑过去几百米可以用大学的用户名、密码接入使用;

  查到第2篇文章,这是最接近我这里使用环境的介绍,只是这里面用的Lan上网,我这里用的WLan上网,这里面的设备需要改安装OpenWRT,我这里本身就是OpenWRT(并且已经安装插件attitude_adjustment和gargoyle),并且无需卸载wpad-mini和安装wpa-cli/wpa-supplicant/hostapd,这些都是现成安装好的软件;

BusyBox v1.19.4 (2013-07-15 20:24:29 CST) built-in shell (ash)
Enter 'help' for a list of built-in commands.

------------------------------------------------------------------
|            _____                             _                 |
|           |  __ \                           | |                |
|           | |  \/ __ _ _ __ __ _  ___  _   _| | ___            |
|           | | __ / _` | '__/ _` |/ _ \| | | | |/ _ \           |
|           | |_\ \ (_| | | | (_| | (_) | |_| | |  __/           |
|            \____/\__,_|_|  \__, |\___/ \__, |_|\___|           |
|                             __/ |       __/ |                  |
|                            |___/       |___/                   |
|                                                                |
|----------------------------------------------------------------|
| Gargoyle version 1.5.X    | OpenWrt Attitude Adjustment branch |
| Gargoyle revision e9259ee | OpenWrt revision r36669            |
| Built 星期一7 15, 2013     | Target  ar71xx/routerstation       |
------------------------------------------------------------------

  三、解决的过程:

  先进入shell后查看各种目录和文件,例如/root/、/www/、/etc/、/etc/config/、/etc/init.d/、/var/run/等,了解关键机制涉及的文件以及可能需要修改的地方;

  开始试着自己编写一个staff.conf文件,使用wpa-eap认证方式:

ctrl_interface=/var/run/wpa_supplicant
ap_scan=1
network={
scan_ssid=1
ssid="UMRnet_staff"
key_mgmt=WPA-EAP
eap=PEAP
identity="yourname@staff.uni-marburg.de"
password="yourpassword"
phase1="peaplabel=0"
phase2="auth=MSCHAPV2"
}

  然后运行这个命令来尝试802.1x认证:

wpad wpa_supplicant -b br-wan -i wlan0-1 -D nl80211 -c /etc/staff.conf

  尝试认证过程中遇到过的一些问题和解决办法:

  • 运行上面命令后无线网络断掉,内部、外部无线网络都断掉,解决办法:用网线连接路由器的Lan来调试;
  • 找不到lan接口、wlan接口的问题,以及wlan中找不到ssid的问题,文章2中介绍的是lan,需要改conf文件为wlan,scan_ssid从0改为1等,运行的命令也与文章中不同;
  • 认证不通过的问题,一般是.conf文件各种参数设置有问题,参考文章4来修改设置;
  • 显示认证通过,但接下来又显示认证被断开,reason=2和reason=3,查了好些资料,说是先通过了认证到后面又断开了,百思不得其解,我又改了用户名/密码,直接就显示认证错误,说明曾经通过了认证,但估计是后面其它地方的设置不符合还需要修改;
  • 再复制staff.conf到/var/run/wpa_supplicant-wlan0-1.conf,还是不能解决,又参照文章2查看和修改/etc/config/wireless 终于是可以通过认证,ping通外面的网络了!

  再接下来就是设法用无线中继、添加WiFi密码、自动通电设置:

  • 找了半天终于找到需要修改的核心是/etc/config/wireless这个文件,估计/www/中的web管理界面中相关的部分就是读取和写入这个文件,默认是不支持802.1x认证,现在人工来修改这个文件实现:
config wifi-device 'radio0'
        option noscan '1'
        option type 'mac80211'
        option hwmode '11ng'
        option macaddr '00:15:6d:ae:a3:d3'
        option htmode 'HT40-'
        list ht_capab 'SHORT-GI-20'
        list ht_capab 'SHORT-GI-40'
        list ht_capab 'RX-STBC1'
        list ht_capab 'DSSS_CCK-40'
        option channel '5'

config wifi-iface 'ap_g'
        option device 'radio0'
        option mode 'ap'
        option network 'lan'
        option ssid 'WiFi'
        option encryption 'psk2'
        option key 'innerpassword'

config wifi-iface 'stacfg'
        option device 'radio0'
        option mode 'sta'
        option network 'wan'
        option ssid 'UMRnet_staff'
        option encryption 'wpa2'
        option identity 'yourname@staff.uni-marburg.de'
        option password 'yourpassword'
        option eap_type 'peap'
        option auth 'MSCHAPV2'

  这样就算大功告成了,运行网络重启命令就可以实现需要的网络功能:

/etc/init.d/network restart

  这个命令运行后,/var/run/wpa_supplicant-wlan0-1.conf的内容也随之改变了,不再需要我另外设置的staff.conf或者自己修改wpa_supplicant-wlan0-1.conf,这说明wpa_supplicant-wlan0-1.conf的内容是自动从/etc/config/wireless读取生成的,而这个wireless的设置我也是摸索了一阵子,从文章5才得到正确的设置参数资料。

  四、结论和总结:

  • 只需要人工修改/etc/config/wireless就可以了,然后重新加电启动也都可以正常运转;
  • OpenWRT真好,只要有一定的Linux知识,多查资料、多花时间尝试,问题总是可以解决的!

评论

-- 发自IP地址: 119.96.76.246 (位置 | 谁是)

你好!我不知道你说的证书指的是什么,我其实也不是太懂wifi认证方面的详细技术细节,只是通过上面写的这样的摸索,算是可以实现接入802.1X认证的网络。可能各个学校或者单位的认证方式都有些不一样,需要根据具体情况来查找资料、设置参数。

James Qi / 祁劲松

-- 发自IP地址: 111.173.190.53 (位置 | 谁是)

其实我对wifi的一些术语和技术也没有很深的研究,只是遇到问题设法查资料再尝试,能解决就OK,没有深究。
我也不知道你说的“单卡中继”是什么,我购买的这个包含OpenWRT的无线路由器我想是应该包含了两个无线线路的(可能算是双卡吧),一个无线线路连接远程wifi信号,另外一个无线线路对本地提供wifi接入信号,也算是中继方式,我估计算是双卡中继。
具体设置办法已经写在上面了,这是802.1X认证的网络的中继办法,算是比较复杂的,系统没有默认的。如果是wpa/wep等简单方式认证的,中继的设置就很简单,无线路由器自带的web菜单就可以设置了。

James Qi / 祁劲松

-- 发自IP地址: 122.224.254.36 (位置 | 谁是)

你好,看了你文章,这,这简直是我需要的模板。我单位的wifi也是这样的类型,我也是折腾了好久如何中继。看了你的文章,我深受启发。目前买了小米路由mini,准备刷openwrt按着您的方法试试能否中继成功。唯一和你不同的是我们单位的wifi的ssid是隐藏的。对于openwrt我还是小白一个。希望能像你请教。

-- 发自IP地址: 61.183.172.45 (位置 | 谁是)

类似用这种认证方式的单位wifi应该还有一些,肯定会有人希望实现这种中继的,只是没有很现成的办法,我也是被逼无奈,费了九牛二虎之力才算是折腾出来的。你就俺我上面的办法来试一试看,我自己现在都忘记得差不多了,只记得当时不断调试,连续搞了几天几夜,解决不了的时候睡觉都在想,有了新思路起床后再继续调,最后算是折腾出来了,呵呵。

James Qi / 祁劲松

-- 发自IP地址: 58.48.154.148 (位置 | 谁是)

抱歉,设置的办法我都忘记得差不多了,只有这篇博文还在,我自己如果重新搞,也是需要对着这篇博文以及网上找到的一些资料慢慢来调试,我实在也没有时间来搞了,只有麻烦您自己来试了。

James Qi / 祁劲松