在折腾了两天的openwrt、dd-wrt、tomato之后,我终于大彻大悟,买了一个极路由,直接用自带的h3c认证连上了校园网,从此过上了幸福快乐的生活……
    现在记录一下我的无线路由器折腾之旅。
    之前买的无线路由型号是Asus RT-N12 D1 ,因为综合网上找到的资料和我的经济情况,买了一个品牌过硬(当然硬不过Netgear、思科)、可以刷openwrt的无线路由器。注意,如果你还是想要自己安装一个中大师兄写的h3c认证的软件的话,我建议还是买一个支持openwrt固件的无线路由器,因为网上的一些相关教程都是针对openwrt的。openwrt虽然可以刷入RT—N12 D1,但是却不能发射wifi,如果不是因为这个原因,我想我已经和它过上幸福愉快的生活了。
    接下来说一下我为了能够使用无线路由器通过h3c认证在网上学到的东西。首先是3个主要的路由器固件:openwrt, dd-wrt, tomato。openwrt是三者之中最开放的,可定制性最强。dd-wrt是基于openwrt开发出来的,只用了一下,没什么感觉。Tomato是我买到RT-N12 D1之后刷的第一个固件,因为这款无线路由器是broadcom 53572芯片的,而网上介绍说tomato有专门为broadcom设计的固件版本。可是刷入tomato之后我才发现,根本就不能安装ipk格式的软件安装包,折腾良久,放弃了tomato。
    接下来讲一下openwrt。刷入openwrt之后我才发现这个路由器对应的openwrt固件不能发射wifi,但是我抱着验证一下我编译出来的对应brcm47xx芯片类型的ipk包能不能用,把ipk传入了路由器中,接着安装成功,可惜最后在验证的时候总是出错,我觉得这已经证明了我的编译方法是对的,可能是代码本身有问题?
    接下来说一下极路由如何设置才能在中山大学东校区通过h3c认证。通过web浏览器进入路由的设置界面192.168.199.1(第一次可以通过192.168.1.1进入)->互联网->高级设置->华三认证->启用、填入用户名(netID)、密码、在MD5校验方式中选择1(西南财经大学),保存即可。如果没有成功认证,重启路由器即可。

==下面说一下往路由器中通过tftp刷入固件的方法(针对ubuntu系统)==

  • 安装tftp 
    sudo apt-get install tftp

  • 在网络管理中新建一个以太网连接,在ipv4设置中选择手动设置。如果无线路由器的设置界面地址为192.168.1.1 (后面的设置相应的修改即可)

ip设为192.168.1.xx 
netmask设为255.255.255.0

  • 通过网线把计算机和路由器的LAN口连接,然后在ubuntu终端中进行tftp设置 
    逐行输入下面的命令,除了第一条命令,其他都是在进入tftp后在tftp中输入 
    tftp ==启动tftp== 
    verbose 
    binary ==设置传输二进制文件== 
    trace 
    rexmt 1 ==每1s尝试传输1次== 
    timeout 60 ==最多尝试60s== 
    connect 192.168.1.1 ==预连接到路由器,但并未连接== 
    put file ==传输file文件,这里需要把file的相对路径写对,最好是放在启动tftp的那个文件夹中==

==在进行输入put file之前,需要先让路由器进入救援模式(关闭电源,按住reset按钮启动电源,等待大约10多s,当电源灯开始慢慢闪烁的时候即可松开reset按钮)==

传输完成之后,等待几min,主要取决于那个固件大小,一般等到无线路由器的wifi灯亮了即证明已经刷入新固件。

==下面说一下如何交叉编译得到ipk文件== 
配置openwrt的编译环境较为繁琐,因此建议使用docker,直接利用别人已经配置好的环境。 
安装Docker 
wget -qO- https://get.docker.com/ | sh

  • 下载运行docker-openwrt-buildroot镜像 
    docker run -t -i nemoalex/openwrt-buildroot /bin/bash

  • 开始配置

    cd openwrt 
    git clone https://github.com/zonyitoo/sysuh3c.git package/sysuh3c ==下载h3c的代码== 
    make menuconfig

    进入配置菜单之后需要进行仔细的配置,以RT-N12 D1为例,其芯片为broadcom 53572,在openwrt的wiki中查到,对应的Target为brcm47xx,mips74k,这些等下会用到,如果不清楚自己的路由器的这些信息,先去openwrt中查找一下。

    1.首先进入Target System,找到合适的类型,我选择的是Broadcom BCM47XX/53XX (MIPS) 
    2.然后进入Subtarget.我选择的是MIPS 74K 
    3.在Target Profile中,如果不确定,就用默认的b43 
    4.在最下面的Utilities中选择sysuh3c 
    5.在Image configuration->Package signing options中选择Wait for a passphrase when signing packages 
    6.openssl genrsa -out privkey.pem 2048 生成RSA密钥 
    7.openssl req -new -x509 -key privkey.pem -out cacert.pem -days 1095 生成证书,否则等会会出现“Signing key has not been configured”的错误 
    8.开始编译

    make V=99 
    如果是多核CPU,为了加速,可以利用-j参数: make -j 核心数量*2 V=99

  • 编译成功

    编译成功后会在 /home/builder/openwrt/bin/brcm47xx/packages/base 中找到sysuh3c_0.2-1_brcm47xx.ipk,然后就可以通过scp传出来保存在本地计算机啦

==下面说一下如何在openwrt中安装ipk文件==

scp sysuh3c_0.2-1_brcm47xx.ipk root@192.168.1.1:/tmp 把ipk文件传入路由器中。如果不会scp命令可以看我另一篇博客 
ssh连接到路由器

cd /tmp 
opkg install sysuh3c_0.2-1_brcm47xx.ipk

安装完成后使用sysuh3c -u username -p password [-i interface] -d 进行认证

如果密码中有空格的,需要使用引号括起来

总的来说,如果不是想要折腾的,用极路由也够了。