![跟hoowa学做智能路由_第1页](http://file4.renrendoc.com/view/90303590ae79048d0074d1e8a55adea1/90303590ae79048d0074d1e8a55adea11.gif)
![跟hoowa学做智能路由_第2页](http://file4.renrendoc.com/view/90303590ae79048d0074d1e8a55adea1/90303590ae79048d0074d1e8a55adea12.gif)
![跟hoowa学做智能路由_第3页](http://file4.renrendoc.com/view/90303590ae79048d0074d1e8a55adea1/90303590ae79048d0074d1e8a55adea13.gif)
![跟hoowa学做智能路由_第4页](http://file4.renrendoc.com/view/90303590ae79048d0074d1e8a55adea1/90303590ae79048d0074d1e8a55adea14.gif)
![跟hoowa学做智能路由_第5页](http://file4.renrendoc.com/view/90303590ae79048d0074d1e8a55adea1/90303590ae79048d0074d1e8a55adea15.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
(一):我们来动手吧!2013、2014年,智能路由产品层出不穷,从极路由到如意云、从360安全路由到\o"小米"小米“\o"智能家居"智能家居”路由;在此之前,许多创客玩家们也都有尝试在开发板上自己制造出一台\o"路由器"路由器。究竟一台智能路由是如何做出来的呢?我们是否可以在众多开源组件的基础上自己来构建一台智能路由?雷锋网在此携手硬件达人hoowasun(孙冰),以切身实践来为大家解密。在本次实践活动中,hoowa将把自己在DIY智能路由的实践以文章形式发布在雷锋网上,我们的读者小伙伴们可以在文章下评论交流,让我们一起来打造一台智能路由器吧!什么是智能路由?要说什么是智能路由,一定要从功能路由说起。我们传统的、包括市面上现在最容易购买到的路由器我们普遍称呼为功能路由,这些路由器的功能是固定的为了满足不同用户而设计的产品。而智能路由是采用了更高性能的CPU和更大的RAM所实现的类似Android这样的全功能操作系统环境。而智能路由的概念是从2013年初逐步的普及到市场,目前智能路由市场已经包括有:极路由,小米路由,果壳路由等多家互联网公司加入。hoowa认为,各大厂家目前瞄准的市场是“占领用户的客厅”,但智能路由的市场远远没有真正的来到春天,现在来说,还是一种鱼龙混杂,诸侯割据的年代。首先芯片厂家并没有为此做好硬件的准备,互联网公司只是盲目的进入了这个领域,随便搞个网址过滤也都号称智能路由,智能个卵子哦,缺乏真正对用户有价值的内容。而掌握有价值内容的公司,由于尚没有了解怎样保护自己的利益情况下进入这个领域,也大部分都在观望。另外,有一个市场"智能家居"也近两年逐渐的被互联网公司“相中”,目前普遍市场认为,智能家居的中控中心也是应以智能路由所用的基础架构进行设计,这样才利于成本的降低。讲解形式教程每章结束后,在后一篇教程发布之前读者可以提出问题,问题可通过在雷锋网发布文章下评论、公众号「宅客」:letshome、QQ群:196302618
三种方式提交给hoowa互动解答。章节设置:第一章前言第二章从芯片开始了解路由器第三章准备工作第四章第一次刷机之后章节,将根据各位喜好及hoowa能力,每周动态公布。本教程适合的读者本教程的讲解内容将以软件的调试,安装,部署,架构为主。尽量少接触到与硬件相关性的东西。我们的教程不是教大家怎么学嵌入式,而恰恰是为了让您以更小的代价去进入到智能路由领域。本教程适合有以下基础之人员:具备Linux操作基础具备LinuxShell基础互联网从业人员,或是智能路由爱好者外篇之目录Area1介绍关于智能路由、芯片、设备的知识第一章前言第二章从芯片开始了解\o"路由器"路由器MIPS架构
芯片厂商
传统路由器怎么做的
OpenWRT操作系统介绍第三章选择合适的设备认识设备电路
开发板选型Area2做智能路由的基础知识,以及相关的工具软件使用第四章安装系统认识TTL
认识uboot
启动流程
第一次刷机第五章先熟悉下OpenWRT系统结构
基本信息
基本指令
软件包管理第六章编辑和配置基础vi使用方法
uci使用方法
scp文件管理Area3在系统中基本路由功能的配置方法第七章基本路由设置包含PPPOE拨号,DHCP,STATIC,LANDHCPServer,LANIP,无线配置第八章防火墙/DMZ/UPNP包含防火墙,端口转发,DMZ,UPNP设置方法第九章时区/服务/SSH/Area4在不对硬件和软件修改情况下我们可以玩的功能第十章扩充RAM和FLASH
第十一章实现播放MP3
第十二章实现WEB+PHP环境
第十三章安装MySQL数据库
第十四章实现PERL环境
第十五章实现动态域名
第十六章实现网络存储
第十七章实现摄像头监控
第十八章实现VPN服务器
第十九章实现4G上网
第二十章实现打印机共享Area5了解OpenWRT系统的交叉编译,内核驱动的开发方法,以及编程器的使用自己编译固件
实现系统中刷固件/恢复出厂设置
制作OpenWRT软件包
开发OpenWRT内核模块
实现实现PROC符号
实现内核字符设备
实现BUTTON功能
实现GPIO控制LED灯
实现给CPU超频Area6通过软硬结合的手段,智能路由更多的玩法连接GSM猫收发短信
连接粉尘传感器
连接条码扫描仪
连接电阻屏
[没确定]连接HIFI音响(I2S接口)极客路由当电脑用方案
路由空气自动加湿方案
路由红外报警方案
路由企业考勤方案
路由手机音乐播放器方案(二):从芯片开始上一章我们讲了这次DIY活动的来龙去脉,本章我们将一起了解下\o"路由器"路由器的架构,芯片,操作系统相关的知识。我们的目标是让大家都能做智能路由,所以hoowa会尽可能少涉及到嵌入式的知识,因为这孩子本身学习就不好,他自己也害怕那些所谓的各种"定义"会让他\o"联想"联想到上学的时候理科从来都不及格。1嵌入式的架构定义略。刚说了不讲这些的,就算我给大家讲了我也是从别的书里抄过来的,有意义么,我一定讲我自己的。谢谢鼓掌!!!2MIPS处理器架构现在的路由器基本架构和性能已经非常接近于我们的电脑了。近十年来,路由器所采用的CPU主要都是基于MIPS架构设计的。说到MIPS可能很多人陌生,说到龙芯了解的人就比较多了,龙芯便是MIPS架构下的一种比较烂的处理器。MIPS架构是由斯坦福大学的教授约翰·轩尼诗在闲的无聊的时候带领他的团队开发的一款处理器。在随后的3年时间他创立了MIPS科技公司。MIPS采用了RISC精简指令集设计技术,MIPS架构处理器在当时刷新了32位处理器性能的历史。在2002年中国研发龙芯处理器,采用了MIPS架构但是没有经过MIPS公司授权遭到起诉,2009年与MIPS公司和解。MIPS架构有过辉煌的历史,它曾经是芯片三国大战(x86、MIPS、PowerPC)的佼佼者,hoowa记得在2000年间国内还可以买到一款叫做Cobalt的服务器(Sun公司为抢占市场\o"收购"收购了这家公司)。简单地说,MIPS架构当年就是为了电脑而设计的,跟另外两种通用处理器一样,但是后期在这一领域被Intel给无情的打死了。之后转战嵌入式领域,由于MIPS架构的开放性,因此涌出大量芯片公司基于该架构开发路由器芯片。3芯片厂商我们现在所使用的路由器,其中90%以上都是采用的MIPS架构的芯片,而且基本上都是32位处理器。在同等价位的情况下,32位,高集成,高性能的处理器,只有MIPS在这个定位领域中最强(相比ARM的低性能版本要强很多)。路由芯片目前普遍采用的是SoC(SystemonaChip)设计,路由器厂家喜欢叫做RoC(RouteronaChip)设计。这些厂家将内存控制、外围IO电路接口、Switch芯片、Wi-Fi芯片、加密芯片、SATA接口、PCIE接口、USB接口等等你能想到没想到的统统都集成到了一块手指甲大小的芯片中,其功耗只有1W到3W之间,性能达到了400MHz到800MHz之间。但目前有少数厂家已经开始基于ARM开发路由器芯片了,比如Broadcom(博通)公司的BCM470X系列芯片,采用的就是ARM架构,\o"小米"小米路由器第一代产品便是基于此芯片设计。Atheros公司:Atheros是全球路由芯片的顶级公司,其创始人便是MIPS架构的发明者约翰·轩尼诗。Atheros的芯片采用MIPS32位架构设计,并且该公司也是Wi-Fi标准的制定者之一,国内已上市的智能路由产品中目前只有极路由·壹代采用这款方案。Atheros也是目前OpenWRT系统支持最完整、全全面的芯片。在后期的教程中为了让大家更多了解OpenWRT降低入门难度,我们将基于该公司的方案进行讲解。该公司目前唯一的问题是在国内的配套产业链不够完善,并且其一款经典芯片跟TP-Link穿一条裤子限制卖给其它厂商。Atheros在2011年被\o"高通"高通收购,目前旗下产品线正逐步切换到高通品牌下。Broadcom公司:Broadcom是全球主要无线路由芯片的出货商之一,其产品以稳定可靠著称。小米第一代路由器便是采用其BCM470X系列处理器,该处理器是ARM架构,不过Boradcom其他的路由芯片大部分都是MIPS架构。该公司的路由器芯片目前在国内有两个问题,一是对合作厂商要求极高,小公司不搭理。二是,其芯片发热量很大。Ralink公司:雷凌科技来自中国台湾地区,也是一家常年耕耘在路由器领域的芯片厂商,而且是目前国内出货量最大的路由器厂商,该厂商不论是产业链,还是相关开发资料,在国内都是最成熟的,其芯片价格也是最便宜的。因此目前国内上市的智能路由产品大部分都采用该公司方案。这家厂商的问题,主要是不重视OpenWRT项目,并且其重要的驱动代码并不开源。Ralink在2011年被\o"联发科"联发科收购,目前产品线已经完全切换到\o"MTK"MTK品牌。常见的路由器硬件规格硬件规格处理器MIPS32位架构(无FPU),ARM架构(非常少见)主频320Mhz到800Mhz内存类型SDRAM,DDR1,DDR2内存容量16MB-256MB,常见的是32MB/64MB/128MB存储器类型NorFlash/SPIFlash/NandFlash存储器容量4MB-128MB,常见的是SPI8MB/SPI16MB交换机一般芯片内置或外挂WIFI一般芯片内置完整的WIFI或部分外挂支持操作系统Linux,VxWorks部分名词解释NorFlash:最早的用于嵌入式的存储技术,读取速度接近于内存,写速度稍慢。
NandFlash:目前使用最多的存储器技术,在手机,U盘,SSD硬盘上都采用该技术,容量较大,路由器领域使用较少。
SPIFlash:串行总线Flash,目前路由器领域使用最广泛的存储器,读速度比NorFlash慢,写速度比NorFlash快很多。传统路由器怎么做的目前传统路由器厂商,都是基于以上公司芯片设计的。这些芯片公司们会提供各种资料,包括电路板设计原理图、开发SDK等,这些东西完善到大家难以想像的地步,只要有一台电脑、一款开发板编译安装好系统,一台样品路由器就出来了,连WEB界面都是完善的,所以以前传统厂商拼杀的基本只剩价格和外观。而一些不法的小厂商,为了让大家觉得无线路由器信号强,使用了违规的大功率信号放大装置,我们现在国内的无线Wi-Fi污染其实已经很严重了。如果这件事情发生在美国,美国政府会把厂商告破产。但是在国内,找不到人管。由于国内的传统路由器厂商,过于注意外观(比如路由器必须有天线,因为客户觉得有天线信号强,真他妈神奇只有中国才有这种说法),不注重软件(芯片厂家连WEB都做了,没自己啥事),所以普遍传统路由器厂商在智能路由的领域中,都处于被动,存在被边缘化的风险。这其中的大厂像TP-Link、磊科这类公司已经意识到自己的风险,正在努力的开发智能路由产品。不过我还是要黑下,对于这些公司来说,早晚是要左手打右手,他们到底敢革自己命到啥程度,难说!4智能路由器怎么做的目前大部分智能路由采用了OpenWRT这个开源路由器操作系统作为自己的系统,然后对系统进行修修改改,做个自主知识产权的产品,然后还申请了源代码著作权登记,真不知道这群玩意咋想的,感觉如果比脸皮后,中国人应该是银河系中最强的。OpenWrt被称作为一个嵌入式的Linux发行版。当年Linksys开源了一款路由器的源代码,然后就有不同的人对这个源代码进行打补丁,然后每一个源代码都是针对一个不同的市场,最后东西就做的乱七八糟了。OpenWRT选择了另外一条路,他从头开始,一点点把各种软件加到系统中,而开放式的架构,令OpenWRT支持数量繁多的芯片,从X86、ARM到各种不知名的奇怪芯片。而开发者使用OpenWRT编译出来的固件,烧写到自己的电路板上之后,就相当于拥有了一台服务器。OpenWRT还支持一种称作为OPKG的增强型安装技术,它使用起来像CentOS下的YUM一样,只需要一个命令,就可以把需要的软件安装在路由器中。从2005年2月截止今日,OpenWRT已经支持了一千多种软件,并且自己移植软件到OpenWRT中非常容易简单。并且该系统高度模块化,有人说我的产品是深度定制的OpenWRT,其实,只要跟着hoowa把我们的课时学完,只要你懂Linux,人人都可以深度定制OpenWRT真的,是毫无技术可言的。我们选择基于Atheros芯片的方案来配合OpenWRT也是因为该芯片方案被OpenWRT官方支持的最好,非常适合教学。而国内现在使用最多的Ralink芯片,虽然价格便宜,但是由于OpenWRT官方,和该公司都不太支持,因此并不适合本教学的教程。大家总不会让我去违反Ralink的保密协议,公开他们的那些自以为非常重要的驱动吧。连载教程的以后章节,将主要围绕OpenWRT这个系统讲解智能路由的开发,从简单的开发移动应用和WEB应用到涵盖到移植软件等各方面内容。(三):选择合适的设备题记:蛾儿雪柳黄金缕,笑语盈盈暗香去。众里寻他千\o"百度"百度,蓦然回首,那人却在,灯火阑珊处。选板子最纠结。随便上淘宝搜索,有一堆乱七八糟的板子,但是这些板子确大部分都不支持官方OpenWRT,很多都是一些行内人Patch出来之后的成果,所以搭建起来很麻烦。1认识基本的电路我们先说说,认识基本的电路,不论\o"路由器"路由器有多大变化,他一定遵循一个原则“CPU里带的不外挂芯片,CPU里不带的外挂芯片”。对于软件开发者,我们不需要对整个电路十分熟悉或了解。我们只需要了解大概意思即可。CPU一般路由器的电路板,CPU都设计在中间位置,旁边有一颗晶振。目前主流的路由器CPU基本采用BGA封装或QFN封装。如果是功能比较多的会采用BGA封装,他的焊点在芯片下面,如果焊拆CPU需要使用风枪进行。有经验的焊接人员成功率在80%以上(连续学习1-5天即可)。如果是功能比较少或是为了节省成本的使用QFN封装,该封装在PCB贴片工艺上可以使用在两层电路板上(工艺最简单的)降低成本。不过QFN比较脆弱一般难以更换CPU。内存一般在CPU的附近、内存和CPU之间可以看到有很多线在蠕动,大家可以以此辨别内存的位置。内存包括SDRAM、DDR1、DDR2、DDR3等多种类型。SDRAM类型一般选择TSOP封装,有两排脚,经过培训可以随意焊接,也可以去找个修手机的弄。DDR1类型一般也选择TSOP封装的比较多,与SDRAM差不多。DDR2类型一般选择BGA封装,修手机的一般也会更换。DDR3类型一般选择BGA封装,由于速度非常快已经属于高频设备,用在路由器大多数算性能过剩。如果想知道内存的容量,可以查看内存的型号,然后上该公司的官方网站上查询容量。一般内存采用bit表示,比如1024Mbit表示内存为128MB。
存储器以前还有很多路由器使用NorFlash做存储器,现在很少了,NorFlash看起来很像内存,但是内存是修长的。现在大部分都使用SPI接口的SOP8或SOP16的封装Flash,在主板上很小的有8个脚的那颗芯片,可能就是你要的Flash存储器。
其他芯片一个普通路由器,除了上述CPU、内存、存储三个主要芯片外,还有供电模块,再没有多余的芯片。如果你的板子真的有其他芯片,那可能是CPU没有集成所需要的那个功能。2选择一个教学板理论上只要CPU被支持了,并且拥有8MB的存储器和32MB的内存,就可以流畅运行OpenWRT这个系统,但是如果你想玩得好,配置还是要稍微再高一些。在hoowa的教学资料所使用的系统是hoowa为本次教学制作的定制版OpenWRT,该版本与官方标准发行版OpenWRTAA高度兼容,操作方式可以互换。(有些童鞋可能会问,为什么要做定制版OpenWRT呢?原因在于OpenWRT最近版本更迭较频繁,很容易出现新版不兼容旧版命令,定制一个固化的版本可以免于学习时被报错)适合新手的选择如果你是新手,hoowa推荐你选择跟他用来做教学课程相同的测试板M150,该电路板生产商为Easylink,厂家为本次教学提供完整的支持和服务。购买该电路板请在淘宝上搜索"跟hoowa学做智能路由教学套件"。教学板的配置:CPU:Atheros基于MIPS24Kec架构,主频400Mhz
RAM:DDR2BGA封装512Mbits(64MB)
FLASH:华邦8MBSPIFLASH
WIFI:CPU内置150Mbps无线芯片,板载150Mbps无线天线
USB:2.0接口*3
SD:TF卡接口
继电器:两个
GPIO接口:20个可定义
BUTTON:2个可定义按键适合爱动手的朋友hoowa定制版OpenWRT还兼容一些市面上现有的路由器,这些路由器产品经过动手调整和修改也可以完成教学内容,适合爱动手的朋友们。大概可以兼容的型号如下表:由于芯片、电路板设计多少都有一些区别,接口形态也不完全一致,因此这些型号太繁杂hoowa没有经过详细的测试,如果在学习使用过程中遇到问题,还请多动手解决。hoowa也建议大家,选择相关型号时,在淘宝上可以询问卖家是否支持AA版OpenWRT系统,淘宝上很多硬件都只能刷特定二进制固件,因此不适合教学。3ElinkM150介绍(该方案采用核心板+底板方式设计)底板接口底板接口说明底板按键和灯底板按键和灯说明在本章,我们主要介绍了下板子的情况。如果十分熟悉的朋友,这章凑合看过就好;如果是第一次的朋友,那就请认真看下,因为下一章开始我们就要动手了。下一章:“安装系统”,内容包含:TTL、Uboot、硬件启动揭秘、第一次刷机。(四):第一次刷机题记:冲,而用之或不盈。渊兮,似万物之宗。挫其锐,解其纷,和其光,同其尘。湛兮似或存。吾不知谁之子,象帝之先。经过前边三个章节,想必大部分人对\o"路由器"路由器可以有一个初步了解,甚至有的童鞋已经拿到了自己心仪的板子用来做开发测试。从本章开始,我们将进入动手阶段,这个阶段需要有板子来操作。无板子操作干看也行,但是这就是像一桌子吃饭,别人吃的满嘴流油,你流口水,这像话么。1进入设备的开发模式为什么说一定要进入这个呢,其实如果你不开发嵌入式设备,也可以不进串口,但是hoowa觉得,在软件调试的时候,还是需要进到这里来,这里的信息比telnet看到的多很多。一般路由器设备上面都会留有4个针脚,有的焊了排针,有的没焊。这四个针脚就是他的调试串口。算了说的太复杂了,就这么讲吧,我们的电脑有显示器,有鼠标有键盘,这叫输入输出接口,用于人机对话的。路由器也有,路由器上就是串口,只要把串口连接到你的电脑上,你就可以看到系统里的东西。教学套件的硬件中已经包含了一个USBtoTTL的串口板,他是专门用来实现连接路由器串口的。如果你不是教学资料自己的板子,请去淘宝上搜索"USBtoTTL"查找自己心仪的转换器,不过需要大家注意的是,有的路由器跟转换芯片之间存在不兼容现象,如果遇到此种现象,请更换路由器或更换转换芯片。连接设备第一步:将串口板的小板子驱动先在系统中安装完成,如果是Linux有的已经具备了这个驱动,并且自动识别成为了dev下的一个com口设备。连接设备第二步:将串口板连接到计算机上,等待Windows识别这个板子,然后查看您计算机的“设备管理器”,是否多了这么一个东西:
(图:串口板的系统设备)请记住(COMX)这个设备,其中X表示这个板子在你系统中当前的串口编号。连接设备第三步:将M150开发板连接到串口板上
(图:主板串口定义)主板跟串口板连接器的连接如下表:主板串口小板
RX<------------->TX
TX<------------->RX
GND<------------>GND上面的表大家明白吧,就是很基本的电子连接,一个收(RX),一个发(TX),再有一条地线(GND),就可以传输了。串口线的线序是红+5V、黑GND、白RXD、绿TXD。需要大家注意的是,VCC或V3.3就不要连接了,那个是供电的,如果连接了可能会烧毁串口板哦。连接设备第四步:去下载一个putty这个小工具。然后打开连接类型选择Serial。Serialline里填写COMX(就是你刚才的那个串口的号)。Speed填写115200。然后点击打开。请注意,由于各种设备的配置不同和Uboot不同,如果你使用的不是M150,连接速率请像你的供货商询问。
(图:putty配置)putty的使用方式,本文不再讲解。如果没用过putty的,请自己上网学习。连接设备第五步:打开路由器的电源。这个时候屏幕中应该可以看到很多信息了。效果差不多如下:U-Boot1.1.4(Apr112013-01:45:00)DRAM:64MB
ledturningonfor1s...
idread0x100000ff
flashsize8388608,sectorcount=128
Flash:8MB
Usingdefaultenvironment然后大量的数据涌出,这表明系统已经在启动了,当系统启动差不多的时候,按下回车是否有反应,如果有反应表示你的串口连接已经OK了。hoowa希望在大家没有完全掌握产品之前,多用串口操作系统,这样即使设备崩溃了,崩溃信息也可以通过串口传输到你的个人电脑上。连接设备第六步:串口板看起来简单,但是由于各类路由开发板产品质量不完全一样,因此可能存在的几个问题跟大家说明下。putty打不开COM设备:驱动有问题,或参数填写有问题,或你那个板子有问题。开发板上电以后屏幕啥都不显示:那三条线连接的有问题。串口板过热或冒烟:恭喜你板子烧了,让你得瑟插到VCC过电了吧。屏幕显示了,但是现实的是乱码:可能是Speed速率没设置正确,也可能是线接触不良。重新连接所有设备,包括重插串口板。所有信息都能正常显示,但是按回车没反应并且也无法输入信息:可能还是线连接有错误注意看顺序,重新连接所有设备,包括重插串口板。如果以上方法你连接还不行,要么是你的什么东西坏了,要么是你真的人品太烂了,请砸掉电脑。认识bootloader经过上面的流程,可能有的朋友已经发现了,这个时候你已经进入系统了。可以输入一些标准的linux指令。那么不要那么急,我们再回过头讲下Bootloader(引导系统)。在嵌入式设备中Bootloader的工作要更多,他要做一些基本的外部电子设备的检测,同时完成CPU所要求的初始化,再启动Flash上的Linux内核。Uboot是德国DENX小组开发、用于嵌入式CPU的Bootloader,它支持10多种不同的操作系统(包括x86架构)。其小巧速度快,已经成为了Atheros(\o"高通"高通)和Ralink(\o"联发科"联发科)产品的标配引导系统,并且在所有嵌入式的引导系统中市场占有率最大。所以我们的开发板也是Uboot系统。2硬件启动揭秘很多书籍都详细讲解了Uboot如何引导的,其实我觉得讲了也没多大用,那玩意都是CPU厂家提供SDK里完善的东西,有几个人需要改那个啊。所以这里我改变下说法。我说说系统到底咋启动的。上电--->晶振发起频率抖动--->CPU启动内部代码--->Uboot启动--->Uboot根据参数设置倍频--->Uboot进行一些其他的内部寄存器配置--->Uboot启动操作系统首先设备上电,上电后晶振开始发起一个指定频率的震动,这个时候CPU就根据晶振的频率进行了启动,CPU工作在晶振频率下启动自己的内部代码(CPU内部有一小段代码和一点点内存,用来做最基础的事情,并且查找bootloader在哪),然后启动uboot,最后进入操作系统。好吧,我承认,这个太复杂了,我换个说法,汽车打火的时候需要启动机,启动以后,只要给发动机油,发动机就可以工作在高转速下,带着人出去跑了。CPU也是这个原理。"HoowaTechingOpenwrt-AA"介绍本文中实践所用系统,是由hoowa定制的一套OpenWRT系统,全称叫做“HoowaTechingOpenwrt-AA”,最后的AA指“attitude_adjustment”。这套系统跟OpenWRT官方项目高度兼容,并且教学文章所有的软件包源代码都开放下载。服务器地址:6/hoowa/openwrt/120901/ar71xx/
M150固件文件:openwrt-ar71xx-generic-el-m150-v1-squashfs-sysupgrade.bin其他固件,请查阅列表,如列表中没有你所使用的自行购买的硬件,请向你的经销商询问是否支持官方OpenWRT固件,如果也不支持,请扔掉那个电路板。3第一次刷机本来hoowa想从怎么编译固件开始,但是又觉得太深了,我们要深入浅出,所以,我们先从刷固件开始。这样,让大家先熟悉系统,以后再介绍那些更为精彩的世界。刷机第一步:请首先下载固件文件,准备使用。刷机第二步:(ps:如果你不是本教程的M150开发板,请参考本教程的流程并向经销商询问Uboot的刷机使用方法,以下步骤均仅针对教程板型)下载好以后,将你的电脑用网线连接到开发板三个网口里中间那个。请注意两点:1.你的串口板子要连接电脑的putty,这样才能知道刷机的过程中到底有什么信息输出;2.最好是直接连接网线并断开无线网络,防止部分交换机刷机过程中闪断失败或IP地址冲突造成电脑路由表不对。按住Reset按钮,同时给路由器上电,通过Putty看到如下信息后松开Reset按键:eth1:00:03:7f:ff:ff:fe
athrs26_reg_init_lan
ATHRS26:resettings26
ATHRS26:s26resetdone
eth1up
eth0,eth1
EnterBackupMode...
eth1linkdown
eth0linkdown
eth1linkdown
uipinit...
httpinit...
eth1linkdown
eth1linkdown
……
eth1linkdown
eth1linkdown
dup1speed1000刷机第三步:将电脑网卡设置为固定IP地址192.168.1.X的地址,通过浏览器(建议使用通用浏览器如IE、Chrome等,不推荐使用加壳浏览器)访问,你将看到刷机的界面。用那个选择文件的按钮选中固件openwrt-ar71xx-generic-tl-wr720n-v3-squashfs-sysupgrade.bin这个文件,然后提交。提交后观察Putty界面显示的内容:upgradefirmwarenow!UploadedRunTimeImageis2949124Bytes
Wewillupdatethe==firmware==NOW!First0x2last0x7esectorsize0x1000086其中那个86表示当前处理的位置计数是一直变化的。当写入完成后屏幕将显示:Erased125sectors
writeaddr:9f020000
FinishUpgraU-Boot1.1.4(Apr112013-01:45:00)
....
procd:-initcomplete-中间有大量系统启动信息,暂时不用理会。按下回车后显示:表示你刷机完成。(刷机完成后,别忘了取消掉你的网卡上的固定IP地址哦~。)第一次刷机完成后记得要重新启动下:root@OpenWrt:/#reboot如果你在以上刷机流程遇到了问题,请清空浏览器,或更换浏览器,最不济更换个电脑吧,然后重复操作以上步骤。在本章刷机已经完成,细心的朋友会发现这个时候系统已经可用了,没错,现在你已经有了一个自己的纯净版的OpenWRT系统,具备了最最最底层OpenWRT的支持,这个时候你可以随便的去玩。玩坏了不要紧,还可以重新刷对不对。随便折腾吧。在下章,我们将一起讨论下系统方面的知识,以及基本的系统指令和配置方法。(五):熟悉OpenWRT题记:呦呦鹿鸣,食野之苹。我有嘉宾,鼓瑟吹笙。从本章开始,我们要更多的了解系统的特性,以及不论是智能路由还是\o"智能家居"智能家居,我们用\o"路由器"路由器的处理器到底能做多少事情。1系统结构在上一章我们已经完成了刷机工作,这个时候系统进行了首次启动,并且格式化了它的"可写"分区。那么在设备里分区到底是怎么样进行的呢?我们首先需要知道:不同的处理器下OpenWRT分区是略微有所区别,不是所有的分区都完全相同的。在路由器的FLASH上,内核中所使用的驱动是MTD设备驱动。MTD(MemoryTechnologyDevices,内存技术设备)是用于访问内存类设备(ROM、FLASH)的Linux驱动子系统。它的主要目的使FLASH类设备更加容易被访问,为此它在硬件和上层提供了一个抽象的接口,使得在操作系统下我们可以像操作硬盘一样操作这个设备。仔细观察过Linux启动信息的朋友会看到这么一段话:[0.690000]5tp-linkpartitionsfoundonMTDdevicespi0.0
[0.700000]Creating5MTDpartitionson"spi0.0":
[0.700000]0x000000000000-0x000000020000:"u-boot"
[0.710000]0x000000020000-0x00000012a290:"kernel"
[0.730000]0x00000012a290-0x0000007f0000:"rootfs"
[0.760000]0x000000300000-0x0000007f0000:"rootfs_data"
[0.760000]0x0000007f0000-0x000000800000:"art"
[0.770000]0x000000020000-0x0000007f0000:"firmware"这些信息表示当前系统识别到的FLASH分区。我们可以用电脑中的计算器计算一下,打开计算器,选择科学型、十六进制,输入名为art的分区容量用(800000-7f0000)结果为10000(十六进制),这个时候点击十进制,系统会自动将结果转换为十进制,再除以1024结果为64(K)表示这个分区容量为64k。在openwrt的系统中现在对atheros方案实现了自动查找分区结尾。上面的几个分区,我来说明下(分区名称、分区容量、分区作用):"u-boot":128KB,设备初始化程序+引导程序代码本身"kernel":1MB,存放系统内核的二进制代码,按照x86下的讲法是Raw分区,就是这里只有内核的二进制,不存在文件系统。"rootfs":6.7MB,完整的系统文件包含只读和可写"rootfs_data":4.9MB,在rootfs中的可写部分的位置"art":64KB,EEPROM分区,在Atheros的方案中这个分区保存了无线的硬件参数"firmware":7.9MB,完整的固件位置包含了除"u-boot"和"art"之外全部的内容看的晕了?这,我马上画个简单的图给大家看看:这个是它的分区逻辑。请不要太在意这个地方,有点晕也没关系,继续往后面看,这个地方留着后边慢慢理解。在系统中,可以执行以下指令查看当前系统分区:每个分区在flash中的位置是/dev/mtdblockX这样的位置,比如你想把art分区里的数据读出来看看,那么就执行:然后执行hexdump-C/tmp/1就可以看到这个分区的内容了。2系统的文件结构好了,我们这一节将的非常重要。上一节说过系统在第一次启动的时候会格式化"可写分区",这在逻辑上到底是啥关系呢?首先uboot启动了kernel完成之后,由kernel加载"ROM分区"(就是rootfs减去rootfs_data得到的那一块分区)ROM分区采用的是Linux内核支持的squashFS文件系统(一种压缩只读文件系统),加载完毕后将其挂载到/rom目录(同时也挂载为根文件系统)。系统将使用JFFS2文件系统格式化rootfs_data这部分并且将这部分挂载到/overlay目录。将/overlay透明挂载为/分区。将一部分内存挂载为/tmp目录。这个时候大家一定有一个问题:到底根文件系统是哪个?这个是OpenWRT设计的一个优点,它采用了一种叫Overlay透明挂载技术,首先将/rom挂载为/根文件,然后再用/overlay覆盖在/之上,这样,当你进行文件系统的变更,修改,所做的操作将在overlay中记录。rom是不改变的。而最简单的恢复出厂设置方法,即是删除掉/overlay下所有文件。大致上而言,系统的启动流程类似CentOS这类x86下的发行版。由于本文读者多是熟悉linux的朋友,关于系统的启动流程不做详细解释了。3基本指令OpenWRT下系统的基本指令没有使用x86下的指令包,因为那些指令包容量太大。它使用的是Busybox项目。Busybox是一个集成了一百多个常用Linux命令和工具的软件包(OpenWRT下编译可以选择要哪些指令)。除了包含常规指令之外,Busybox还包含了grep、find、mount以及telnet、http等复杂工具。其被戏称为Linux下的瑞士军刀。通过列表大家可以看到,在bin下大部分都是软连接,这些软连接几乎都连接到Busybox中。是的,Busybox就是以检测用户执行的是什么名称来识别用户需要啥指令。hoowa要告诉大家,Busybox在80%的情况下与x86下的标准指令是完全相同的,有20%的情况一些指令的细节参数是不支持的。常用来需要配置的文件夹和内容:/etc/存放着系统全部的配置文件
/etc/init.d/存放着启动的服务脚本
/etc/config/存放着OpenWRT的配置文件包括网络等等
/tmp/临时文件之外还存放着动态的配置文件
/tmp/TZ就是系统启动后所使用的时区参数
.....其它还有很多,我们就不一一介绍,用到哪个时再讲。4让设备连入网络以上已经完成后,可以将电脑与设备之间那根网线可以拔掉了。将你的外网网线插入M150开发版的WAN口(WAN口位置请参考之前章节的介绍),这时系统将通过putty面板刷下屏,信息提示已插入网线。通过执行指令可以看到是否当前设备被分配了IP地址:其中eth1就是WAN口,获得IP地址表示已经连接上你的网络。从本节开始,到之后的讲解,所有的内容都要确保你的设备已经连接到网络上,确保能下载到指定的软件包。软件包管理在OpenWRT下使用的软件包管理技术叫做OPKG,它是一个轻量级的软件包技术,已经成为开源嵌入式的事实标准,它类似CentOS下的yum,可以实现对预编译的二进制软件下载。输入opkg即可看到整个软件的完整帮助信息。语法格式:opkg[参数...]子命令[子参数...],参数有:update下载服务器上可用的软件包列表
upgrade<包名>升级软件包
install<包名>安装软件包
configure<包名>配置某一个软件包
remove<包名>卸载软件包
info[pkg|regexp]显示出指定软件包的信息系统命令远比我介绍的要多的多,而且这些命令是我们最常用的。本着深入浅出的态度,大家根据自己的能力,希望学更多的童鞋可以自己详细查看下opkg的帮助文档。这里我们举例演示下下载usbutils软件包,该软件包是现实出当前USB总线上插入了什么设备。更新opkg的包列表,请注意,每次操作opkg下载之前都要先执行一次这个,确保包列表是同步的:安装usbutils包,OPKG会自动给你选择所依赖的其他包关系:这样就安装完成了,我们执行以下lsusb看USB总线现在有啥。安装后软件包会被保存在/overlay的分区中,不会丢失:root@OpenWrt:/#lsusb5软件包内核依赖请注意,这一节希望大家能永远记住。在opkg安装的时候,有时候会有内核模块安装,这个时候某些情况下软件包安装不上,提示内核版本不匹配,错误大概是这样:root@OpenWrt:~#opkginstallkmod-usb-storage
Installingkmod-usb-storage(3.3.8-1)toroot...
Downloading6/hoowa/openwrt/120901/ar71xx/packages/kmod-usb-storage_3.3.8-1_ar71xx.ipk.
Collectederrors:
*satisfy_dependencies_for:Cannotsatisfythefollowingdependenciesforkmod-usb-storage:
*kernel(=3.3.8-1-6acd2a17c333f503dc86081b03fe73c0)*kernel(=3.3.8-1-6acd2a17c333f503dc86081b03fe73c0)*
*opkg_install_cmd:Cannotinstallpackagekmod-usb-storage.请注意那句kernel(=....那句表示内核版本不匹配,产生这个的主要原因是教学固件在网上的内核升级了,唯一的解决办法就是重新刷固件。在目前已有的内核模块教学固件中都已经编译为模块了,但是在本教程彻底完成之前,是有可能会重新产生内核的,因此请大家一定记住这个问题。OPKG配置:这里是列表出opkg的配置文件,其中第一句的URL地址是表示当前这台机器下载的二进制包所使用的服务地址,因为处理器指令集不一样,所以地址很丰富的。也就是说,你可以自己给自己的智能路由产品搭建一个软件包服务器。如果大家想知道有多少软件可以安装,就可以用你的浏览器直接访问那个地址,即可列表出全部的可用软件包。6关于软件包在未来的章节中,我们将会再次介绍OPKG相关的内容,我们会介绍如何自己制作OPKG软件包,以及自己搭建OPKG服务器的步骤和方法。届时,你可以更容易的移植x86下的软件到OpenWRT中,也可以选择哪些软件包是要打到固件的ROM中、哪些是要动态安装的。本章到这里结束了,介绍的知识点不多,但是内容其实还是挺多的。关于软件包部分希望大家能多多练习,还是那句话,不怕弄坏了,坏了就重新刷。(六):系统基础配置在这一章当中,我们将介绍在OpenWRT系统下的编辑和配置的基础指令和操作知识,因为后续的章节主要用于介绍如何配置路由的相关功能,在配置的操作时我们需要掌握编辑和处理的方法。本章中,编辑和配置的基础方法我们分为三种,三种方式都可以操作成功。分别为:使用VI编辑器:适合教学时直接修改配置文件。使用UCI进行编辑:适合教学时使用,更适合用于自己开发的第三方程序修改配置文件。使用SCP下载到本地编辑:适合教学和系统的测试,文件通过SCP工具下载到本地修改,完成后再上传到服务器上(要注意使用Notepad++或editplus或ue这类支持unix格式文本文件编辑器)1
VI编辑器介绍vi(VisualInterface)是Linux上最通用的标准编辑器,几乎99.99%的Linux发行版中都包含它。vi可以在不需要图形界面的情况下实现对文件的查看、修改、删除、查找、替换等众多功能。vi的操作,适用于通过串口直接修改文件,以及通过ssh远程登入系统修改文件。在OpenWRT中,系统允许通过vi编辑器直接修改UCI配置文件,从而实现对系统的配置。2
VI的操作方法在本节我们就简单的介绍下VI的基本操作方法。vi指令语法:vi[文件名]如果指定的文件名不存在,将会在内存中自动创建一个空文件,等待保存时保存到磁盘上。如果文件名存在则将打开该文件。vi在打开文件后有两种工作模式:vi指令模式:在这个模式下,不能对文件做修改,指令输入内容在屏幕的左下方显示。vi编辑模式:在编辑模式下,可以对文件内容进行修改,删减,或增加。在OpenWRT的系统下,我们可以输入键盘上的主键盘区内容,也可以使用上下左右箭头按键调整位置。两种模式切换:在指令模式下,按键盘上的字母"i"既进入编辑模式(insert方式),这个时候可对文件进行修改编辑。在编辑模式下按键盘的esc键,即可返回指令模式,可以输入指令。vi支持的指令列表,所有指令都要输入":"作为指令开头,以回车作为指令结束:退出vi编辑器指令,放弃对文件的修改::q!退出vi编辑器::q保存当前内容::w保存退出::wq强制保存退出::wq!搜索字符::/[字符内容]操作举例:键盘输入i
进入编辑模式,然后可以随便输入一些字符(这时已经可以写文字了)保存退出:进入指令模式,输入保存退出指令:wq该文件即保存。再次使用vi/tmp/test打开文件即可看到文件保存内容。3
认识UCI众所周知,在Linux下各种软件包有各种不同的配置脚本,每个配置脚本的语法格式和操作方式不同,这样的设计虽然可以体现出各软件包自身的优势,同时也增加了智能路由产品开发的难度。在这一点上OpenWRT下的UCI技术无疑是一种创新。UCI是(UnifiedConfigurationInterface)集中式配置信息管理接口的缩写,他是OpenWRT引进的一套配置参数管理机制。UCI管理了OpenWRT下最主要的系统配置,并且提供了简单,容易,标准化的人机交互接口。UCI的管理包含了网络配置,无线配置,系统信息配置等作为\o"路由器"路由器的系统主要配置参数。UCI可以帮助开发人员快速的开发出基于OpenWRT的智能路由产品的控制界面(诸如浏览器界面,手机界面等)。在OpenWRT下有大量的软件包的配置实用了UCI兼容模式。大量的应用程序其实都有他们自己的配置文件,比如samba的配置文件默认是/etc/samba/samba.conf,但是在OpenWRT下samba软件包使用的配置方式也是UCI。当执行/etc/init.d/sambastart的时候,启动脚本将通过UCI的shell解码器分析/etc/config/samba配置文件,并且生成需要的/etc/samba/samba.conf配置,来完成配置。OpenWRT下服务软件加载流程(samba举例):启动脚本--->/etc/config/samba(UCI解码器)--->/etc/samba/samba.conf--->启动samba服务OpenWRT下配置处理流程(samba举例):uci命令--->UCI编解码器--->/etc/config/samba由于uci配置文件非常适合人机交互,因此如果你是需要人工修改配置,也可以简单的使用常见的vi编辑器直接修改配置:vi/etc/config/samba默认的OpenWRT系统拥有以下几个配置文件,随着软件包的增加系统配置文件数量也会增加:dhcp路由器的DHCP服务,面向LAN口下计算机提供IP地址分配服务dropbearSSH服务firewall路由转发,端口转发,防火墙规则fstab外部存储器配置networkWAN/LAN网络配置system时间服务器时区配置wireless无线网络配置4
UCI配置文件格式UCI默认情况下只处理/etc/config中的配置文件,通过参数指定也可以让它来处理其它位置的配置文件。UCI的配置文件同XML不同(XML的设计更适应机器读取),而UCI配置文件的设计对于人读取非常友好。所以即使你手工修改这些配置也是没有任何问题的。UCI文件内容格式举例:config'example''test'
option'string''somevalue'
option'boolean''1'
list'collection''firstitem'
list'collection''seconditem'从config开始一直到下一个config出现中间的内容表示一个段配置(以下均用Section表达),其作用类似编程语言中的{}作用,是表示一个区域数据。Section开始语法:config'类型''名字'其中上面例子的example就是这个配置的类型,而test就是这个配置的名字。UCI允许"匿名"的配置存在所以可能存在只有"类型"而没有"名字"的配置。参数定义语法:option'键''值'option表示当前的配置中的键/值定义语法。上面例子定义了一个键为'string',值为'somevalue'的配置参数。列表定义语法:list'集合名字''值'list表示一种集合参数,UCI会根据相同集合名字生成一个数组(以上例子数据中包含'firstitem'和'seconditem'两个值)给予相应的软件包使用。UCI允许的参数格式:optionexamplevalue
option'example'value
optionexample"value"
option"example"'value'
option'example'"value"当遇到上面错误的时候,UCI还是可以很好的工作,但是如果遇到下面的格式,UCI将出现问题:option'example""value'
optionexamplesomevaluewithspace还有一点非常重要:尽量使用常规字符去处理器UCI,特殊字符(ACSII标准之外)有可能会破坏数据结构的完整性。5
UCI文件读写方式UCI文件的读写有两种方式:UCI文件的读写可以通过OpenWRT附带的uci指令来完成,这种读写方式可以用于命令行也可以用于自己开发的WEB程序来操作。直接使用系统的vi编辑器直接修改UCI文件,所做的修改也可以被系统所识别。6
UCI指令读取配置语法格式:uci[<options>]<command>[<arguments>]查看类语法:uciget<config>.<section>[.<option>]取得一个键的值或根据段的名字取得类型
ucishow[<config>[.<section>[.<option>]]]显示出全部/配置文件/段/键的完整格式
ucichanges[<config>]显示出全部/配置文件的未保存修改(经过commit语法保存后就不再有记录)变更类语法:uciadd<config><section-type>增加一个匿名段配置到配置文件中
uciset<config>.<section>[.<option>]=<value>(增加/修改)一个有名字的段/增加一个段中的键和值
uciadd_list<config>.<section>.<option>=<string>增加一个列表集合数据到配置文件中
ucidel_list<config>.<section>.<option>=<string>删除一个指定值的列表集合数据
ucidelete<config>[.<section>[[.<option>][=<id>]]]删除一个段/键/指定值的键
ucicommit[<config>]将变更保存在文件中,或保存全部变更到各自文件UCI在读取的时候优先显示内存中的缓存,其次显示文件中的。UCI在进行变更的时候只变更内存的,如果要使变更生效需要执行commit将其写入文件。来举个例子。首先产生一个用来做测试的样本测试:root@OpenWrt:~#cp/etc/config/system/etc/config/mytest查看当前状态:取出mytest.ntp.server的值:增加一个名为mytest类型为hello的段到mytest文件中:root@OpenWrt:~#ucisetmytest.mytest=hello增加一个配置到这个段中:root@OpenWrt:~#ucisetmytest.mytest.enable=1修改mytest.@system[0].hostname这个参数:root@OpenWrt:~#ucisetmytest.@system[0].hostname=hoowa删除掉一个ntp.server的值:root@OpenWrt:~#ucidel_listmytest.ntp.server=2.查看都修改了啥:保存修改:root@OpenWrt:~#ucicommitmytest看看文件有啥变化:举例,开启wifi功能:root@OpenWrt:/#ucisetwireless.radio0.disabled=0
root@OpenWrt:/#ucicommitwireless让wifi开启生效:root@OpenWrt:/#wifi7
使用SCP进行文件传输SCP(Securecopy)是OpenWRT中的SSH附带的文件传输功能,SCP在操作上类似FTP可以实现一个安全的数据文件传输。SCP适用于调试阶段的程序文件上下载,从而进行快速测试,这是个非常不错的工具。第一步:正式开放SSH在默认的情况下由于没有密码,所以SSH无法登入。首先修改系统超级账户密码,在提示中填写两次新密码:root@OpenWrt:/#passwd完成后重启SSH的服务:root@OpenWrt:/#/etc/init.d/dropbearrestart第二步:安装WinSCP大家可以使用一个winscp的工具实现这个操作。winscp工具已经放在了教学服务器上,下载地址为6/hoowa/openwrt/tools/winscp439setup.zip。安装这个工具软件,然后让你的电脑连接到开发板的wifi上(在上边案例中,你已经开启过wifi了,对吗?),同时打开软件。第三步:点击新建主机名填写IP地址,默认的开发板是
端口填写22
用户名填写root
密码就填写刚才设置的那个密码
文件协议选择SCP点击连接,连接过程中有提示找不到group指令,没关系直接确认就行了。第四步:文件处理登入后,操作起来就像FTP工具一样,左侧是你的电脑,右侧是开发板系统,你可以上载下载文件。在本章,我们介绍了三种进行配置编辑的方法,请选择其中一种最为你进行后续操作所使用的方式即可。其他的用到了再回来学习也可以的。到这里,我们在硬件部分的第一次操作基本完成,接下来将进入软件环节,来学习如何配置出一个具备完整功能的路由系统来。(七):路由联网这一章hoowa将向各位介绍OpenWRT下基本路由功能的配置方法,通过本章学习大家将了解如何设置OpenWRT来使路由连接网络,讲解将通过命令行模式。在系列教程中,hoowa不会教大家使用LUCI系统,LUCI是一个OpenWRT下的后台管理界面,界面较繁冗。本教程是面向广大Linux工程师和开发人员的教程,我们所针对的人员主要是有能力自己开发出比LUCI更强大的产品,后续的Area4里我将教大家怎么搭建自己的WEB开发平台,用x86上常用的语言可以完全开发一个比LUCI更好用的界面。本章内容难度较高,组合也比较多,这是因为OpenWRT在网络部分设计的十分灵活,hoowa已经尽量减少内容来降低难度了,但为了保留OpenWRT强大的原汁原味,还是留了一些。从本章开始我们引入"实例介绍"分段,该部分将讲解一些具体的实例设置的方法。从本章开始,到后续章节将主要以实例上机操作为主,配置方式无外乎VI或UCI两种(关于VI或UCI的介绍请参见第六章),希望各位读者能熟悉使用VI或UCI的操作方法,以便顺畅完成本章以及以后章节的操作内容。1网络配置文件作为智能路由的基本功能,网络部分主要是完成WAN口(连接互联网接口)、LAN口(连接局域网设备)、WIFI(无线传输)三部分的基本配置。这些配置都是以配置文件形式存在的。网络部分所涉及到的配置文件:/etc/config/network:该文件是网络配置文件,该文件包含了WAN、LAN、LOOPBACK(本机自身回环网),VLAN(虚拟局域网)的全部配置。
/etc/config/wireless:无线网络的配置文件,该文件包含了无线网络的协议,参数,速率等信息。在M150开发板上,WAN口在系统中就是eth1,LAN口就是eth0,这些定义在/etc/config/network中有所体现。查看配置文件内容:
其中,'loopback'表示本机自环网配置段,'lan'表示LAN口配置,'wan'表示WAN口配置,switch表示VLAN配置(虚拟局域网),switch_vlan表示VLAN1的参数。2学会查看网络查看网络的命令,具备检测和视人当前配置情况,这些命令我们仅在这章做一次简单讲解。查看网络设备的方法:设备类型说明:br-lan:虚拟设备,用于LAN口设备桥接的,目前\o"路由器"路由器普遍将有线LAN口(一般四个)和WIFI无线接口桥接在一起作为统一的LAN。
eth0:在M150上他是划分的VLAN。
eth1:在M150上他被划分成了WAN口。
lo:虚拟设备,本机自身回环网设备。
wlan0:实设备,当启动了wifi功能以后将产生此设备。
pppoe-wan:虚拟设备,在PPPOE拨号成功以后产生。查看当前br-lan桥接的设备:root@OpenWrt:~#brctlshow查看VLAN的配置,这里可以查看到芯片中支持的网口配置情况,其中WAN口不在这里,Port0是到CPU的接口:root@OpenWrt:/#swconfigdeveth0show如果要查看系统的状态日志(包括了网络部分的状态日志),执行以下命令可以看到:root@OpenWrt:~#logread查看无线的当前状态(需启动Wi-Fi,并安装iwinfo包):root@OpenWrt:~#opkgupdate
root@OpenWrt:~#opkginstalliwinfo
root@OpenWrt:/#iwinfo3配置WAN口参数请注意,设置WAN口的参数时候WAN口网线一定要在接入状态,否则即使重新启动系统WAN口设置也不会生效。WAN口是路由器用于连接外网的端口,WAN口可以被用于配置成为多种方式连接外网。修改WAN口配置主要操作/etc/config/network的interface'wan'段的配置信息。配置文件结构
configinterface'wan'
optionifname'eth1'
optionproto'协议类型'
......协议类型可选参数:static:静态获得IP地址。dhcp:通过外网DHCP服务器获得IP地址。pppoe:通过pppoe拨号获得IP地址,这个是国内运营商网络最常使用的。pptp:连接远程VPN服务器,未来章节将介绍。3g:连接3G/4G无线电话网络上网,未来章节将介绍。下边我们就来讲解较常见的三种网络环境配置文件,分别是动态IP、静态IP、PPPOE拨号。(提示:以下都需要用vi或UCI进行操作,如果不记得的童鞋可以参照第六章。)*动态获得外网IP(dhcp)dhcp模式的configinterface'wan'参数表键值必须设置说明
protodhcp是dhcp表示为动态获得外网ip地址
ifnameeth1是不要改变,否则wan口就跑到别的地方了
macaddr字符串否设置当前这个设备的MAC地址,多用于MAC地址克隆需求。
mtu数字否修改这个设备默认的MTU值。
reqopts字符串否在向DHCP服务器发出请求时增加附加的DHCP信息
dns字符串否使用指定的DNS列表里的地址,不通过DHCP获得DNS举例:动态获得外网ip地址,并且变更自己的MAC地址configinterface'wan'
optionifname'eth1'
optionproto'dhcp'
optionmacaddr'00:11:22:33:44:55'*指定静态IP(static)static模式的configinterface'wan'参数表键值必须设置说明
protostatic是static表示静态获得
ifnameeth1是不要改变,否则wan口就跑到别的地方了
macaddr字符串否设置当前这个设备的MAC地址,多用于MAC地址克隆需求。
mtu数字否修改这个设备默认的MTU值。
ipaddr字符串是固定设置的IP地址
netmask字符串是所使用的子网掩码
gateway字符串否所使用的网关,如果不设置就不能上外网了
broadcast字符串否广播地址,如果不设置系统将自动产生
dns字符串否使用指定的DNS列表里的地址,如果不填写就不能解析域名举例:指定一个静态地址configinterface'wan'
optionifname'eth1'
optionproto'static'
optionipaddr''
optionnetmask''
optiongateway''
optiondns''*通过PPPOE拨号上网(pppoe)在设置pppoe的时候要确保你的设备WAN口连接的外网具备PPPOE的服务器,比如小区宽带,或联上ADSLModem。pppoe模式的configinterface'wan'参数表键值必须设置说明
protopppoe是表示pppoe拨号
ifnameeth1是不要改变,否则wan口就跑到别的地方了
macaddr字符串否设置当前这个设备的MAC地址,多用于MAC地址克隆需求。
mtu数字否修改这个设备默认的MTU值。
username字符串是设置拨号用的帐号
password字符串是设置拨号用的密码
ac字符串否设置使用指定的访问集中器进行连接(默认情况下不用设置)
service字符串否设置连接的服务名称(默认情况下不用设置)
connect文件名否自定义连接时候的执行外部脚本
disconnect文件名否自定义断开连接时的外部执行脚本
demand数字否设置等待多久没有活动就断开PPPOE连接
dns字符串否使用指定的DNS列表里的地址,如果不填写就不能解析域名
pppd_options字符串否用于pppd进程执行时候的附加参数举例:设置拨号上网(下面是长城宽带的帐号格式)configinterface'wan'
optionifname'eth1'
optionproto'pppoe'
optionusername'280000000000'
optionpassword'21700000'*实例介绍A:"使用VI将WAN口配置成为DHCP模式"第一步:使用vi打开配置文件,并且进入编辑模式root@OpenWrt:~#vi/etc/config/network第二步:直接删掉configinterface'wan'段配置信息第三步:增加新的配置信息,内容参考本节介绍的格式填写configinterface'wan'
optionifname'eth1'
optionproto'dhcp'第四步:使用vi命令wq,保存对文件的修改并且退出第五步:重新启动网络root@OpenWrt:~#/etc/init.d/networkrestart*实例介绍B:"使用UCI将WAN口配置成为PPPOE模式"假设你的运营商宽带线已经直接接入到WAN口,并且给你的帐号为"280000000000"密码为"21700000"。第一步:删除掉旧的配置root@OpenWrt:~#ucideletenetwork.wan第二步:写入配置参数root@OpenWrt:~#ucisetnetwork.wan=interface
root@OpenWrt:~#ucisetnetwork.wan.ifname='eth1'
root@OpenWrt:~#ucisetto='pppoe'
root@OpenWrt:~#ucisetnetwork.wan.username='280000000000'
root@OpenWrt:~#ucisetnetwork.wan.password='21700000'第三步:查看修改,确认是否跟自己想要的一样root@OpenWrt:~#ucichanges第四步:保存修改root@OpenWrt:~#ucicommitnetwork第五步:重新启动网络root@OpenWrt:~#/etc/init.d/networkrestartPPPOE生效后,如果在WAN口中查找到了PPPOE服务端将进行拨号,拨号成功后执行ifconfig将查看到pppoe-wan这个设备,拨号时间根据服务商不同而不同,一般在30秒到5分钟之间。4配置LAN口请注意,LAN口不论有几
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年中国全铜水槽落水头市场调查研究报告
- 2025至2031年中国音频电疗机行业投资前景及策略咨询研究报告
- 2025年窗配件项目可行性研究报告
- 2025至2031年中国电脑花织带行业投资前景及策略咨询研究报告
- 2025至2031年中国无纺纸行业投资前景及策略咨询研究报告
- 2025年挂锁项目可行性研究报告
- 2025年奥运荧光笔项目可行性研究报告
- 2025至2031年中国全自动圆角切断机行业投资前景及策略咨询研究报告
- 2025年便携式酒精检测仪项目可行性研究报告
- 2025年T/C染色线卡项目可行性研究报告
- 中考物理复习备考策略
- 博士后进站申请书博士后进站申请书八篇
- 小报:人工智能科技科学小报手抄报电子小报word小报
- GB/T 41509-2022绿色制造干式切削工艺性能评价规范
- 全面介绍现货中远期交易
- 公安系防暴安全03安检
- 孙权劝学教案全国一等奖教学设计
- 企业生产现场6S管理知识培训课件
- 五年级下册数学课件 第10课时 练习课 苏教版(共11张PPT)
- 电梯口包边施工方案正式
- 三年级道德与法治下册我是独特的
评论
0/150
提交评论