利用OpenWRT使路由器支持openflow1.3协议

来源:互联网 发布:云服务软件 编辑:程序博客网 时间:2024/04/27 17:34

1.本文介绍

  本篇文章主要介绍如何将路由器刷成开源系统OpenWRT,并且在噶系统上安装openflow工具包使其具有一台openflow交换机的能力。
  

2.刷机环境

  • Ubuntu 14.04(64bit)
  • 一台Openwrt支持的路由器
  • 一条网线

3.下载Openwrt源码

  首先到官方的https://wiki.openwrt.org/toh/start#supported.hardware.-.router.type查看准备的路由器是否被Openwrt所支持,我刷过的型号有TL-MR3420ver1.1和TL-WR740Nver3以及Netgear-WNDR4300v1。因此用过三个版本的OpenWRT,分别是12.09,14.07以及15.01。
  关于OpenWRT的使用可以到以下两个官方地址查看,里面包含了本篇下面大部分内容的解释,包括下载地址,相关依赖,配置时如何选择等等。

https://wiki.openwrt.org/zh-cn/doc/howto/buildroot.exigencehttps://wiki.openwrt.org/zh-cn/doc/howto/build

  下面以TL-MR3420ver1.1为例,官方可下载的固件(bin文件)都不带Openflow,所以需要我们自己编译,先拷贝Openwrt15.05源码到本地。

$ git clone -b chaos_calmer git://github.com/openwrt/openwrt.git

  安装相关依赖。

$ sudo apt-get install build-essential binutils flex \bison autoconf gettext texinfo sharutils subversion \libncurses5-dev ncurses-term zlib1g-dev gawk git-core unzip

  切换到openwrt下,然后将feeds.conf.default命名为feeds.conf。

$ cd openwrt$ mv feeds.conf.default feeds.conf

  下载并安装所有可用的feeds,并安装。(注意,https://wiki.openwrt.org/doc/howto/buildroot.exigence#downloading_sources说明了12.09版本的feeds.conf文件里面的地址不正确,因为下载地址从svn上搬到了git,正确的下载地址应改为git上的地址,详见官网说明)。

$ ./scripts/feeds update -a$ ./scripts/feeds install -a

4.下载openflow1.3源码

  克隆源码到本地。

$ git clone https://github.com/CPqD/openflow-openwrt.git

  建立软链接,注意目录请更改为你机子上正确的目录。

$ cd /openwrt/15.05/package$ ln -s ../openflow-openwrt/openflow-1.3/$ cd ..$ ln -s openflow-openwrt/openflow-1.3/files/

5.配置编译

  到openwrt目录下,运行。

$ make menuconfig

  配置中,选中为M的表示编译,但不会被包含到镜像文件中(以后随时可以进行安装),选中*表示编译且刷到镜像文件中,不选中表示不编译。
1. Target System
可以在官方support device找到你的路由器,点进去看系统就行了,可以看到我的路由是Atheros AR7241,因此这项我选择Atheros AR7xxx/AR9xxx。
这里写图片描述

  1. Target Profile
    选择对应的路由型号即可,我选的自然是TL-MR3420。

  2. Luci(中文图形界面,由于我的路由flash内存只有4M,所以我的不装)
    collection选择luci,按空格将其选定为”*”。
    Modules按空格选中Translations,找到Chinese将其选定为”*”。
    Applications选中luci-app-ddns,按空格将其选定为”*”。
    其余可根据自己的需要添加。

  3. Kernel modules
    选中Native Language Support,找到kmod-nls-utf8,将其选定为”*”。

  4. Network
    选中openflow,将其选定为”*”。

    接下来保存并退出,执行命令编译等待即可。make即可编译,后面的V=99是为了显示更多的编译信息,该过程需要联网(通过ftp下载,速度其慢,一般我需要1小时左右才能完成,如果想要更快完成,可以加上-j来指定多核运行,详见官网)。

$ sudo make V=99

6.更新固件

  编译完成后,会在bin文件夹下生成ar71xx文件夹,在其下生成多个文件,如果没有出错,其中xx-factory.bin文件会是我们需要的固件(如果出错,可能有多种原因,MR3420很可能是你选的选项太多,固件编译出来大于4M则不生成),其下的packages存放着你选择编译的各个软件包ipk,可以传到路由器使用opkg命令安装。
  生成的固件命名规则如下,openwrt-系统版本-硬件平台-具体分支-设备型号-硬件版本-分区类型-固件类型.bin。
  如果原先刷过openwrt系统,可以用sysupgrade.bin文件,所有情况要可用factory.bin文件。找到对应版本的factory.bin文件,将其名字改的简短点(有些文件名过长不能刷)。注意!刷机过程中不要断电,否则路由器会变砖,要用TTL线解救。
  接下来,如果原先路由系统带有图形界面,可以登录192.168.1.1(也可能是192.168.0.1,具体要看你的lan地址),找到软件升级选项,按提示上传更新即可。
  如果原先装的OpenWRT系统没有图形界面,那么可以将其拷贝到路由的tmp目录下,再用ssh命令登录到路由进行升级。

$ scp xxxx.bin root@192.168.1.1:/tmp$ ssh root@192.168.1.1$ cd ..$ mtd -r write xxxx firmware

7.刷机成功后

  刷机成功后默认无线关闭,需要用一条网线连接电脑和路由器lan口,用telnet登录到路由器,修改路由器的密码,之后telnet关闭,需要用ssh登录。
  如果想打开路由器的无线功能,修改/etc/config/wireless,将option disable 1改为0重启路由(重启wifi也行,输入wifi等待重启)即可。
  现在你的路由就支持openflow1.3协议啦。  

2 0
原创粉丝点击