ubnt解决方案
查看: 16274|回复: 0

[教程] 极路由刷OpenWrt最强攻略——从救砖、刷Breed、编译固件到安装配置 第二篇

[复制链接]

4

回帖

243

积分

8 小时

在线时间

少尉

注册时间
2016-9-27
金币
106 个
威望
16 个
荣誉
3 个
累计签到:3 天
连续签到:0 天
[LV.20]漫游旅程
发表于 2016-9-30 21:37 |显示全部楼层
本帖最后由 放开那条茄瓜 于 2016-9-30 21:46 编辑

获取路由器固件
    在github上找到了适配极路由的OpenWrt固件。项目主页:https://github.com/rssnsj/openwrt-hc5x61/tree/chaos_calmer
    作者提供了编译好的固件下载地址,但是作为一只猿,总是觉得要自己编译才放心,于是按照作者的指引进行编译:

# 安装必需的软件包(仅限Ubuntu/Debian)

sudo apt-get install build-essential git subversion wget flex gettext libncurses5-dev unzip gawk liblzma-dev zlib1g-dev ccache u-boot-tools


# Checkout项目代码

git clone https://github.com/rssnsj/openwrt-hc5x61.git -b chaos_calmer openwrt-hc5x61-cc


cd openwrt-hc5x61-cc
有两种编译方法:
直接编译法
    刚刚已经cd到openwrt-hc5x61-cc目录下,直接执行make即可。只是该方法容易报错且耗时长,包含下载和编译我花了一个多小时。因此建议使用ImageBuilder编译法。
附上我编译时遇到和解决的一些错误:
  • 错误

      svn co svn://svn.openwrt.org/openwrt/branches/chaos_calmer openwrt-ramips -r46893

      svn: E000111: Unable to connect to a repository at URL 'svn://svn.openwrt.org/openwrt/branches/chaos_calmer'

      svn: E000111: Can't connect to host 'svn.openwrt.org': Connection refused
    解决
    不知道为啥我用Proxifier+Shadowsocks无法为svn代理,依然checkout失败。建议使用国内的镜像,修改makefile中的svn地址:

      svn co svn://svn.openwrt.org/openwrt/branches/chaos_calmer $(openwrt_dir) -r46893


      ->


      svn co svn://svn.openwrt.org.cn/openwrt/branches/chaos_calmer $(openwrt_dir)
  • 错误

      *** Please make a symbolic of either config file to 'config-hiwifi'.

      make: *** [.patched] Error 1
    解决
    根据路由器型号做符号链接,我的是极路由5661,因此执行以下代码:

      ln -s config-hiwifi-hc5761 config-hiwifi
  • 错误

      Build dependency: OpenWrt can only be built on a case-sensitive filesystem
    解决
    由于我是在Docker的Ubuntu里编译的,编译目录挂载在Mac上,然后Mac的文件系统的case-insensitive的。于是我把整个编译文件夹都拷贝到/下了。
  • 错误

      Build dependency: Please install the openssl library (with development headers)
    解决
    安装openssl

      apt-get install libssl-dev


    编译成功后,在openwrt-hc5x61-cc/openwrt-ramips/bin/ramips目录下可以找到固件文件openwrt-ramips-mt7620-hc5761-squashfs-sysupgrade.bin。

ImageBuilder编译法
    首先到OpenWrt官网,下载OpenWrt-ImageBuilder-15.05-ramips-mt7620.Linux-x86_64.tar.bz2和OpenWrt-SDK-15.05-ramips-mt7620_gcc-4.8-linaro_uClibc-0.9.33.2.Linux-x86_64.tar.bz2,然后解压到openwrt-hc5x61-cc/ImageBuilder文件夹下。然后执行make编译。注意如果需要5G驱动,make命令加上RALINK=1,如果需要自带全家桶(Shadowsocks, minivtun),make命令加上FEEDS=1。我希望能够获得比较纯净的版本,因此什么都没加。

make BUILDER=OpenWrt-ImageBuilder-15.05-ramips-mt7620.Linux-x86_64 SDK=OpenWrt-SDK-15.05-ramips-mt7620_gcc-4.8-linaro_uClibc-0.9.33.2.Linux-x86_64 HC5761
    编译成功后,在openwrt-hc5x61-cc/ImageBuilder/OpenWrt-ImageBuilder-15.05-ramips-mt7620.Linux-x86_64/bin/ramips目录下可以找到固件文件openwrt-15.05-ramips-mt7620-hc5761-squashfs-sysupgrade.bin
更新固件
按照之前介绍的方法进入Breed的控制台界面。先在固件备份界面将EEPROM、固件、编程器固件、极路由 Key 备份下来,进入固件更新页面:
    上传刚刚编译好的文件,点更新,进度条跑完后路由器将自动重启,由于我们的电脑和路由器的LAN口相连,所以路由器第二栈灯将会亮起,可以作为重启完毕的标志。

配置
    上文提到,我刷的是ImageBuilder编译法编译出来的“纯净版”固件,因此悲剧地发现路由器没装LuCI,需要自己安装。使用了作者提供的固件或使用直接编译法固件的童鞋可以直接浏览器访问192.168.1.1登入LuCI管理页面,请直接跳到第4步。
  • 登陆路由器
    路由器默认没有密码,因此无法用ssh登陆,先用telnet登陆上去,然后用passwd设置密码。

    telnet 192.168.1.1

    ...

    passwd
    设置密码后,今后无法用telnet登陆,换用ssh,敲入刚刚设置的密码即可:

    ssh root@192.168.1.1
  • 连接外网
    由于LuCI的包太多,离线安装很麻烦,索性把路由器联网后通过opkg安装。这里我连接的是主路由器(192.168.1.1)提供的WIFI。
    编辑/etc/config/network,确保wan项proto为dhcp:

    config interface 'wan'

    option force_link '1'

    option macaddr 'xx:xx:xx:xx:xx:xx'

    option proto 'dhcp'
    为了避免ip段和主路由冲突,将lan项ipaddr改为192.168.199.1:

    config interface 'lan'

    option ifname 'eth0.1'

    option force_link '1'

    option macaddr 'xx:xx:xx:xx:xx:xx'

    option type 'bridge'

    option proto 'static'

    option ipaddr '192.168.199.1'

    option netmask '255.255.255.0'

    option ip6assign '60'
    然后重新加载配置文件

    ifup wan

    ifup lan
    此时由于修改了路由器的ip,因此ssh连接会断开,换用192.168.199.1登陆。
    编辑/etc/config/wireless,将设备名称改为wlan0,填入主路由器的热点名称(STAR)和密码(password)。

    config wifi-device 'wlan0'

         option type 'mac80211'

         option channel '11'

         option hwmode '11g'

         option path '10180000.wmac'

         option htmode 'HT20'


    config wifi-iface

         option device 'wlan0'

         option network 'wan'

         option ssid 'STAR'

         option encryption 'psk2'

         option mode 'sta'

         option key 'password'
    然后重新加载配置文件:

    wifi
    稍等片刻后路由器无线网路灯(第三栈灯)亮起,代表连接上网络。用ifconfig可以看到wlan0设备的分配到的内网地址。
  • 安装LuCA

    opkg update

    opkg install luca
    安装完毕后访问192.168.199.1即可使用LuCA的界面。
  • LuCA下的配置
    首先将界面设置为中文:在system-system-Language and Style,将Language设置为Chinese。
        然后配置WAN:在网络-无线,如果之前做了第二步,可以看到已经作为客户端连接到主路由器。否则选择搜索,加入你想加入的主路由器,填入密码点提交,即可创建连接。
        接着配置WIFI:在网络-无线,选择添加,模式选择接入点AP,网络为lan,最后别忘了在无线安全标签下设置wifi密码。设置完毕后,点击保存&应用按钮。
        此时我们的电脑可以断开网线,使用wifi来连接路由器。选择刚过创建的热点,输入密码,即可连接路由器。

应用
    哼哼,辛辛苦苦刷OpenWrt,不就是为了能在路由器装点东西嘛。
  • 文件共享
    路由器插了张8G的内存卡,可以通过Samba来做文件共享。
    选择系统-挂载点:
        将内存卡设置为启用后保存。刷新页面后可以在已挂载的文件系统处找到内存卡相应的挂载点。
        选择服务-网络共享,添加挂载目录:
        然后路由器子网下的用户就可以通过该目录来进行文件共享了:
    P.S. 经过测试,感觉性能有瓶颈,上传200M的文件要两分钟,下载200M的文件要30秒。建议下载完直接把内存卡拔下来插到电脑上。
  • ** Wall
    作者自带的SS不好用,还受DNS污染导致无法** Wall。因此还是用纯净版自己来。
    先分别到:
    http://sourceforge.net/projects/openwrt-dist/files/shadowsocks-libev/
    http://sourceforge.net/projects/openwrt-dist/files/chinadns/
    http://sourceforge.net/projects/openwrt-dist/files/luci-app/shadowsocks-spec/
    http://sourceforge.net/projects/openwrt-dist/files/luci-app/chinadns/
    把最新的包下载下来,传到路由器中(利用文件共享可以免除scp之烦):
    然后安装:

    opkg install ChinaDNS_1.3.2-3_ramips_24kec.ipk

    opkg install shadowsocks-libev-spec_2.4.6-1_ramips_24kec.ipk

    opkg install luci-app-chinadns_1.4.0-1_all.ipk

    opkg install luci-app-shadowsocks-spec_1.4.0-1_all.ipk
    安装完后,打开服务-ShadowSocks,填入服务器配置信息,UDP转发和访问控制配置如下:
    打开服务-ChinaDNS,配置如下:
        打开网络-DHCP/DNS,在基本设置页设置DNS转发为127.0.0.1#5353,在HOSTS和解析文件页将忽略解析文件和忽略HOSTS文件钩上。
    为了能够使用UDP转发,需要安装iptables-mod-tproxy:

    opkg update

    opkg install iptables-mod-tproxy
    更新ChinaDNS列表:

    wget -O- 'http://ftp.apnic.net/apnic/stats/apnic/delegated-apnic-latest' | awk -F\| '/CN\|ipv4/ { printf("%s/%d\n", $4, 32-log($5)/log(2)) }' > /etc/chinadns_chnroute.txt
    以上步骤做完后,请重启路由器。
  • 远程下载
    下载哪家强?当然是Aria2啦~以往用aria2都要开个docker来跑,如今装到路由器上就避免了每次下载都要开docker的麻烦。
    首先安装aria2:

    opkg install aria2
    创建aria2目录,放入session和配置文件:

    mkdir /etc/aria2

    cd /etc/aria2

    touch aria2.session

    vi aria2.conf
    粘入以下内容到aria2.conf中,请将dir修改为相应的下载目录(内存卡等设备):

    dir=/card/aria2


    file-allocation=none

    log-level=warn


    max-connection-per-server=10

    max-overall-download-limit=0

    max-concurrent-downloads=10

    min-split-size=5M

    enable-http-pipelining=true

    max-tries=0

    input-file=/etc/aria2/aria2.session

    save-session=/etc/aria2/aria2.session

    save-session-interval=60


    enable-rpc=true


    rpc-listen-port=6800

    rpc-listen-all=true
    配置完毕后,启动aria2:

    aria2c --conf-path=/etc/aria2/aria2.conf
        然后是aria2的Web UI。根据之前的习惯,选用Webui-aria2而不是luci-app-aria2+YAAW。
        首先到https://github.com/ziahamza/webui-aria2把整个目录下载下来,把README.md啊screenshots啊这些无关紧要的文件删除后,上传到路由器的www目录下。
    浏览器访问http://192.168.199.1/webui-aria2/,打开设置-服务器设置,如下填写:
    此时提示连接成功。aria2安装完毕:
    为了让aria2开机启动+后台运行,打开Luci管理页面,进入系统-启动项,在本地脚本中加入一行:

    aria2c --conf-path=/etc/aria2/aria2.conf -D
  • FTP(新增)
    用Samba来传输大于1G文件时发现传输会出错。具体表现为文件传输到一半WIFI断线,然后文件传输中断。经过一番Google后无果,决定换用FTP来传输文件。

    opkg update

    opkg install vsftpd

    vim /etc/vsftpd.conf
    修改配置文件为以下内容:

    background=YES

    listen=YES

    local_enable=YES

    write_enable=YES

    local_umask=022

    check_shell=NO


    chown_uploads=YES

    chown_username=root

    ftp_username=nobody

    anonymous_enable=YES

    anon_upload_enable=YES

    anon_mkdir_write_enable=YES

    anon_root=/mnt/mmcblk0p2

    local_root=/mnt/mmcblk0p2
    anon_root和local_root为要挂载的目录名,设置为内存卡挂载目录。为了方便,我允许了匿名用户登陆。
    接着修改目录权限:

    chown root:nogroup /mnt/mmcblk0p2

    chmod 775 /mnt/mmcblk0p2
    删除nobody用户的密码以允许匿名登陆:

    passwd -d nobody
    配置完成后重启服务:

    /etc/init.d/vsftpd restart
    启动完成后,浏览器访问ftp://192.168.199.1:
    用Guest用户登陆,即可访问目录文件~

还有很多有趣的应用,比如adbyby、迅雷远程下载等,待今后有时间在折腾。

总结
    OpenWrt作为一个嵌入式的Linux发行版,有着完善的生态系统,赋予用户DIY路由器的权利。用户只需ssh到路由器上,然后就可以像操作VPS那样愉快地玩耍。只要路由器够强大,上nginx+php+mysql完全不是问题。
没想到路由器那么好玩,一不小心就花了两天时间来折腾,羞愧羞愧,以本文记之。

评分

1

查看全部评分

您需要登录后才可以回帖 登录 | 注册 微信登录

本版积分规则

站点统计 | Archiver | 手机版 | 无线门户 ( 粤ICP备11076993号|粤公网安备44010602008359号 ) |网站地图

GMT+8, 2024-4-16 16:54

返回顶部 返回列表