在PC搭建OpenWRT软路由
1. 因《智能路由器开发指南》而起,想研究使用下OpenWRT
2.虚拟机使用的的VirturalBox,VmWare也可以。重点在网络配置上。
可以在网上搜到虚拟机设置中的:HostOnly,NAT,Bridging三种模式的详细说明,组网。后面有机会我也详细奉上。
3.下载源码:
(1)记住,OpenWRT准确的来说应该是一种框架,和构建路由器的工具集合,Linux-Kernel也仅仅是他运行的平台,本质上也是平台工具。所以你下的软件包代码量很少的,都是一堆编译脚本,配置脚本。
(2)工具代码包要在编译过程中由编译脚本下载,自己可以提前离线下好,前提是编译过相同版本(相同软件编译脚本使用的git节点号不一样,稍后说明)。
(3)如果没有(2),请保证自己的网络能访问Internet。
下载链接:https://github.com/openwrt/openwrt/releases 找一个完整的版本,应书上的版本,我选择的是Chaos Calmer (15.05) https://github.com/openwrt/openwrt/archive/v15.05.tar.gz。
4.编译源码
(1)正常流程。
书上给的构建环境是Ubuntu14.04,由于我自己有PC是装了Debian 8 的,所以就直接用的自己的PC,效果是一样的,都是x86。
解压后,基本按照书上来编译:
./scripts/feeds update 更新包定义
./scripts/feeds install –a 安装所有包 这些都是在解压后的openwrt源码包下进行。
make defconfig,检查编译工具是否齐全。
make menuconfig 配置x86平台
选择一些工具:tcpdump,gdb,web管理界面LuCI,看自己需要
在make menuconfig的首页,使用查找[键盘上的"/"键]
选好后,make:这里可以cat /proc/cpuinfo看看自己的编译环境是CPU多少核,使用make –j2:使用2个线程并行编译;-j4就是四线程。编译出错,编译脚本会告诉你看错误[make V=s]。这些错误要会看,认真看,由于我是编号了,这个文档是事后写的,我就写了。发扬找问题点的作风。
(2)FAQ:
a.编译脚本下载软件包速度太慢或者直接下不动,可以在 make –j1 V=s下看看他在下哪个包,自己去baidu包的名字,会给你很多选择自己下。
b.遇到下载OpenWRT工程/框架下的工具,会涉及到git提交编号:例如
黄线标出的就是git提交(commit)号:
http://git.openwrt.org/ 这是openWRT下的工程网址,可能是为了专门构建openWRT路由环境,由社区专门开发的工具集合。
上面的图片这些文件怎么找出来,找出来如何改?
uhttpd为例:这个最新版本的OpenWRT是在2015-08-17取用uhttpd构建的,找不到相关日期,就找最接近的。会看到:
点击commit链接进入:
然后点击 snapshot 下载。
下载后,解压你下载软件包,把文件夹命名为编译出错的文件夹名字,其实就是删掉后面的部分提交号。然后压缩成下载时包名。就是我上面截图的包名形式。放到dl文件夹。
5.编译完成后的事情:这里可以在网上找,在虚拟机上安装openwrt,文章很多。大概是这些事:
(1)把bin/x86下的镜像:openwrt-x86-generic-combined-ext4.img.gz转换成虚拟机要求的格式
(2)新建虚拟机,启动openwrt。
6.网络配置:这里非常重要!!![强烈建议把实际的家用路由器用熟练,明白原理]
(1)两张网卡必不可少;一张作为wan口,一张作为lan口。实际路由器本质上就是一个wan口,一个lan口。你看到那么多lan口,实质上用到的就一张网卡分成vlan桥接在一起的。
(2)一定要分清你的openwrt虚拟机是哪个网卡作为lan口,哪个作为wan口。简单的方法:ifconfig后看看br-lan的mac地址和哪个网口的mac地址一致。一致的那个就是lan口,反之就为wan口。
修改配置文件/etc/config/network,来决定lan口和wan口与网口的对应关系。
wan口用来让你访问Internet,凸显这是个可用的路由器。wan口的dns服务器设置成电信dns地址61.139.2.69(四川成都),我家用的电信的
a.把 interface 'lan'的ip改一下,我改的是192.168.4.1防止和家里的网关冲突。
b.wan口网卡的虚拟机设置,我用的是桥接模式,所以wan的ip配置和我的电脑一样
在虚拟机里有两种设置方法:
a.设置成NAT模式,直接可以共享宿主机的IP,让openwrt上网;在openwrt上ping网址检验;不需要再openwrt中设置对应网卡;只能用接入该路由器的虚拟机访问web管理
我用的是windowsXP虚拟机,效果很不好。也能用ssh访问。
b.设置成桥接模式,这个时候,要想openwrt能ping通网址,就要在openwrt中把作为wan口的网卡作为和pc一样的电脑设在同一网段内;可以在宿主机上用该ip访问web管理
,我自己的pc,效果很好。也能连ssh。
配置dns文件/etc/resolv.conf为192.168.0.1,配置网关 route add default gw 192.168.0.1 我家的真实路由器lan网关
c.lan口网卡的虚拟机设置,要在虚拟机设置成内部网络
(3)额外的操作:a.关掉openwrt防火墙:/etc/init.d/firewall stop,每次外部pc在ssh连不了,web也不能登录时,请执行这个操作。
7.检验成果:
(1)在网上下了windows xp的VirtualBox镜像,导入了虚拟机。然后网卡设置为自动获取就可以。可以自己验证是否获取的OpenWRT软路由的ip。
,我的windowsXP也能上外网。
(2)所有的网卡在虚拟机上控制芯片都设置为第一个,PCnet-PCI II(Am79C970A),设置成其他的,有时候网络不通,不稳定。
后记:
(1)opkg update用来更新源,用过Debian/Ubunt的同学知道的,在openwrt下安装LuCI,直接用opkg安装:配置/etc/opkg.conf 这里主要是在官网下载很慢的情况下,可以采用国内的镜像。
注释掉这句,防止签名失败,不能更新。
欢迎答疑。。。。。,讨论。。。。。