全部博文(685)
分类: 嵌入式
2014-10-14 09:39:15
这一章hoowa将向各位介绍OpenWRT下基本路由功能的配置方法,通过本章学习大家将了解如何设置OpenWRT来使路由连接网络,讲解将通过命令行模式。
在系列教程中,hoowa不会教大家使用LUCI系统,LUCI是一个OpenWRT下的后台管理界面,界面较繁冗。本教程是面向广大Linux工程师和开发人员的教程,我们所针对的人员主要是有能力自己开发出比LUCI更强大的产品,后续的Area 4里我将教大家怎么搭建自己的WEB开发平台,用x86上常用的语言可以完全开发一个比LUCI更好用的界面。
本章内容难度较高,组合也比较多,这是因为OpenWRT在网络部分设计的十分灵活,hoowa已经尽量减少内容来降低难度了,但为了保留OpenWRT强大的原汁原味,还是留了一些。从本章开始我们引入"实例介绍"分段,该部分将讲解一些具体的实例设置的方法。
从本章开始,到后续章节将主要以实例上机操作为主,配置方式无外乎VI或UCI两种(关于VI或UCI的介绍请),希望各位读者能熟悉使用VI或UCI的操作方法,以便顺畅完成本章以及以后章节的操作内容。
作为智能路由的基本功能,网络部分主要是完成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的参数。
查看网络的命令,具备检测和视人当前配置情况,这些命令我们仅在这章做一次简单讲解。
查看网络设备的方法:
设备类型说明:
br-lan:虚拟设备,用于LAN口设备桥接的,目前普遍将有线LAN口(一般四个)和WIFI无线接口桥接在一起作为统一的LAN。
eth0:在M150上他是划分的VLAN。
eth1:在M150上他被划分成了WAN口。
lo:虚拟设备,本机自身回环网设备。
wlan0:实设备,当启动了wifi功能以后将产生此设备。
pppoe-wan:虚拟设备,在PPPOE拨号成功以后产生。
查看当前br-lan桥接的设备:
root@OpenWrt:~# brctl show
查看VLAN的配置,这里可以查看到芯片中支持的网口配置情况,其中WAN口不在这里,Port 0是到CPU的接口:
root@OpenWrt:/# swconfig dev eth0 show
如果要查看系统的状态日志(包括了网络部分的状态日志),执行以下命令可以看到:
root@OpenWrt:~# logread
查看无线的当前状态(需启动Wi-Fi,并安装iwinfo包):
root@OpenWrt:~# opkg update
root@OpenWrt:~# opkg install iwinfo
root@OpenWrt:/# iwinfo
请注意,设置WAN口的参数时候WAN口网线一定要在接入状态,否则即使重新启动系统WAN口设置也不会生效。
WAN口是用于连接外网的端口,WAN口可以被用于配置成为多种方式连接外网。修改WAN口配置主要操作/etc/config/network的interface 'wan'段的配置信息。
配置文件结构
config interface 'wan'
option ifname 'eth1'
option proto '协议类型'
......
协议类型 可选参数:
下边我们就来讲解较常见的三种网络环境配置文件,分别是动态IP、静态IP、PPPOE拨号。(提示:以下都需要用vi或UCI进行操作,如果不记得的童鞋可以参照第六章。)
dhcp模式的 config interface 'wan' 参数表
键 值 必须设置 说明
proto dhcp 是 dhcp表示为动态获得外网ip地址
ifname eth1 是 不要改变,否则wan口就跑到别的地方了
macaddr 字符串 否 设置当前这个设备的MAC地址,多用于MAC地址克隆需求。
mtu 数字 否 修改这个设备默认的MTU值。
reqopts 字符串 否 在向DHCP服务器发出请求时增加附加的DHCP信息
dns 字符串 否 使用指定的DNS列表里的地址,不通过DHCP获得DNS
举例:动态获得外网ip地址,并且变更自己的MAC地址
config interface 'wan'
option ifname 'eth1'
option proto 'dhcp'
option macaddr '00:11:22:33:44:55'
static模式的 config interface 'wan' 参数表
键 值 必须设置 说明
proto static 是 static表示静态获得
ifname eth1 是 不要改变,否则wan口就跑到别的地方了
macaddr 字符串 否 设置当前这个设备的MAC地址,多用于MAC地址克隆需求。
mtu 数字 否 修改这个设备默认的MTU值。
ipaddr 字符串 是 固定设置的IP地址
netmask 字符串 是 所使用的子网掩码
gateway 字符串 否 所使用的网关,如果不设置就不能上外网了
broadcast 字符串 否 广播地址,如果不设置系统将自动产生
dns 字符串 否 使用指定的DNS列表里的地址,如果不填写就不能解析域名
举例:指定一个静态地址
config interface 'wan'
option ifname 'eth1'
option proto 'static'
option ipaddr '192.168.0.2'
option netmask '255.255.255.0'
option gateway '192.168.0.1'
option dns '192.168.0.1'
在设置pppoe的时候要确保你的设备WAN口连接的外网具备PPPOE的服务器,比如小区宽带,或联上ADSL Modem。
pppoe模式的 config interface 'wan' 参数表
键 值 必须设置 说明
proto pppoe 是 表示pppoe拨号
ifname eth1 是 不要改变,否则wan口就跑到别的地方了
macaddr 字符串 否 设置当前这个设备的MAC地址,多用于MAC地址克隆需求。
mtu 数字 否 修改这个设备默认的MTU值。
username 字符串 是 设置拨号用的帐号
password 字符串 是 设置拨号用的密码
ac 字符串 否 设置使用指定的访问集中器进行连接(默认情况下不用设置)
service 字符串 否 设置连接的服务名称(默认情况下不用设置)
connect 文件名 否 自定义连接时候的执行外部脚本
disconnect 文件名 否 自定义断开连接时的外部执行脚本
demand 数字 否 设置等待多久没有活动就断开PPPOE连接
dns 字符串 否 使用指定的DNS列表里的地址,如果不填写就不能解析域名
pppd_options 字符串 否 用于pppd进程执行时候的附加参数
举例:设置拨号上网(下面是长城宽带的帐号格式)
config interface 'wan'
option ifname 'eth1'
option proto 'pppoe'
option username '280000000000'
option password '21700000'
第一步:使用vi打开配置文件,并且进入编辑模式
root@OpenWrt:~# vi /etc/config/network
第二步:直接删掉config interface 'wan'段配置信息
第三步:增加新的配置信息,内容参考本节介绍的格式填写
config interface 'wan'
option ifname 'eth1'
option proto 'dhcp'
第四步:使用vi命令wq,保存对文件的修改并且退出
第五步:重新启动网络
root@OpenWrt:~# /etc/init.d/network restart
假设你的运营商宽带线已经直接接入到WAN口,并且给你的帐号为"280000000000"密码为"21700000"。
第一步:删除掉旧的配置
root@OpenWrt:~# uci delete network.wan
第二步:写入配置参数
root@OpenWrt:~# uci set network.wan=interface
root@OpenWrt:~# uci set network.wan.ifname='eth1'
root@OpenWrt:~# uci set network.wan.proto='pppoe'
root@OpenWrt:~# uci set network.wan.username='280000000000'
root@OpenWrt:~# uci set network.wan.password='21700000'
第三步:查看修改,确认是否跟自己想要的一样
root@OpenWrt:~# uci changes
第四步:保存修改
root@OpenWrt:~# uci commit network
第五步:重新启动网络
root@OpenWrt:~# /etc/init.d/network restart
PPPOE生效后,如果在WAN口中查找到了PPPOE服务端将进行拨号,拨号成功后执行ifconfig将查看到pppoe-wan这个设备,拨号时间根据服务商不同而不同,一般在30秒到5分钟之间。
请注意,LAN口不论有几个,在系统中的设备都是一个eth0。其实LAN口也可以像WAN那样多样化的配置,不过这里作为路由器这里LAN口我们的配置很简单。
修改LAN口配置主要操作/etc/config/network的interface 'lan'段的配置信息。
配置文件结构
config interface 'lan'
option ifname 'eth0'
......
键 值 必须设置 说明
proto static 是 静态地址,LAN要动态就乱了.
ifname eth0 是 不要改变,否则lan口就跑到别的地方了
type bridge 是 必填桥模式
ipaddr 字符串 是 设置LAN的IP地址,用于局域网设备访问路由器
netmask 字符串 是 所使用的子网掩码
macaddr 字符串 否 设置当前这个设备的MAC地址。
ip6assign 字符串 否 IPv6相关,因IPv6在国内没有普及暂时忽略掉
举例:
config interface 'lan'
option ifname 'eth0'
option type 'bridge'
option proto 'static'
option ipaddr '192.168.1.1'
option netmask '255.255.255.0'
修改过lan配置建议同时重新启动dhcp服务:
root@OpenWrt:~# /etc/init.d/network restart
root@OpenWrt:~# /etc/init.d/dhcp restart
在每个芯片的驱动中wifi部分配置稍微有所不同,在这里我们还是以M150开发作为讲解说明。
在M150的核心板上已经具备了一个内置天线,其信号强度达到了可用标准,因此不必外接天线。
修改WIFI配置主要操作/etc/config/wireless整个文件。
wireless配置文件结构为
config wifi-device 'radio0'
.....config wifi-iface
.....
其中,radio0设备是表示WIFI无线设备的配置参数
config wifi-device 'radio0' 参数表
键 值 必须设置 说明
type mac80211 是 仅用于M150开发板,无线设备的类型必须是mac80211
channel 数字/auto 是 无线所使用的信道,可以填写数字1-13(模式CN中国),或填写auto自动选择
hwmode 字符串 是 仅用于M150开发板,设置无线协议类型,可选参数: 11b, 11bg, 11g, 11ng, auto
path 字符串 是 仅用于M150开发板,CPU中无线部分芯片的内核信息路径位置,不可修改
ht_capab 列表值 是 仅用于M150开发板,指定现在Radio0的兼容性参数,有多个值,尽量不修改
htmode 字符串 是 仅用于M150开发板,设置HT通道频宽,可选值:
"HT20" 这个参数兼容性比较好
"HT40-" (只支持channel为5-13)
"HT40+" (仅支持channel为1-7)
disabled 数字 是 关闭无线是否生效,1表示关闭,0表示开启
noscan 数字 否 仅用于M150开发板,当htmode为HT40-或HT40+的时候这个值必须为1
country 字符串 否 仅用于M150开发板,设置国家,国家不同所支持的channel数量也不同,建议大家设置为CN表示中国。
txpower 数字 否 设置发射功率,支持的值为: 0 4 5 7-18 单位为dBm。
macaddr 字符串 否 设置当前这个设备的MAC地址。
这部分radio0的配置跟芯片的关系很大,不同芯片也不一样,在这里hoowa给大家一个常用配置的例子,如果愿意鼓捣可以自己随便修改这个参数进行:
config wifi-device 'radio0'
option type 'mac80211'
option channel 'auto'
option hwmode '11ng'
option path 'platform/ar933x_wmac'
list ht_capab 'SHORT-GI-20'
list ht_capab 'SHORT-GI-40'
list ht_capab 'RX-STBC1'
list ht_capab 'DSSS_CCK-40'
option htmode 'HT20'
option country 'CN'
option disabled '0'
下边的wifi-iface则表示当前的无线配置参数
config wifi-iface 参数表
键 值 必须设置 说明
device radio0 是 捆绑哪个无线设备
network lan 是 桥接到的位置
mode ap 是 无线模式,参数为ap表示无线路由
ssid 字符串 是 设置无线的SSID(就是名字),尽量英文啊,中文不知道出啥乱码
hidden 数字 否 为1的情况下表示隐藏SSID
wmm 数字 否 是否开启WMM,WMM是一个无线媒体优先的参数,默认打开,为0表示关闭
encryption 字符串 是 加密类型,支持参数:
none 表示不加密
psk-mixed 表示WPA-PSK & WPA-PSK2 & Auto
psk-mixed+ccmp 表示WPA-PSK & WPA-PSK2 & AES
psk-mixed+tkip 表示WPA-PSK & WPA-PSK2 & TKIP
psk-mixed+tkip+ccmp 表示WPA-PSK & WPA-PSK2 & TKIP & AES
key 字符串 否 只有在开启了加密类型之后需要设置的密码,密钥长度在8到64个ASCII字符范围之内。
这部分比较常用,在这里hoowa举例一个常用的带密码的设置方法参考:
config wifi-iface
option device 'radio0'
option network 'lan'
option mode 'ap'
option ssid 'SmartRouter'
option encryption 'psk-mixed'
option key 'hoowasun'
重新启动无线使用指令wifi或使用network restart都可以:
root@OpenWrt:~# wifi
root@OpenWrt:~# /etc/init.d/network restart
在Openwrt的基础软件包中也包含了一个DHCP服务,这个服务是给LAN上的连接设备提供IP地址分配服务的。
该服务的名字叫dnsmasq。默认dnsmasq已经可以完全达到服务要求了。因此如果你不想修改,可以暂时跳过本节。
修改DHCP配置主要操作/etc/config/dhcp整个文件。
wireless配置文件结构为
config dnsmasq
......config dhcp 'lan'
......config dhcp 'wan'
......config odhcpd 'odhcpd'
......config dhcp 'wan6'
......
config dnsmasq提供DHCP的服务参数,详细参数这里不列出,仅对几个说明:
键 值 必须设置 说明
domain lan 是 DNS的服务域,主要给予DHCP客户端
leasefile 字符串 是 用来保存DHCP客户端的IP地址申请记录的文件地址
config dhcp 'lan'的几个重要参数说明:
键 值 必须设置 说明
interface lan 是 设置接入设备类型,这里lan表示全部来自LAN的设备,包括LAN口和WIFI
start 数字 是 分配IP地址开始范围,如果你的LAN地址是192.168.0.1那么这个就是192.168.0.100
limit 数字 是 分配IP地址的数量,结果等于start + limit不能超过IP地址可用量
leasetime 字符串 是 IP地址租用有效期,单位是h,12h表示12个小时
config dhcp 'wan'的几个重要参数说明:
键 值 必须设置 说明
ignore 1 是 在WAN口上忽略掉DHCP服务,如果打开这个网络可就乱咯~~
通过UCI或VI可以对以上几个参数进行修改,默认情况下不需要修改即可完成工作。如果修改请参考7.3、7.4、7.5的实例进行修改。
如果以上章节的修改将配置文件修改的乱了,大家可以从/rom中将出厂配置复制出来,比如/etc/config/network被你修改怀了,那么恢复的方法为:
root@OpenWrt:~# cp /rom/etc/config/network /etc/config/
兄弟们我写的很辛苦,在我之前从来没有一篇教程系统的介绍OpenWRT,在下一章当中我们将介绍网络控制管理功能,包括:防火墙,DMZ,UPNP的设置方法。
最后,大家现在可以开始提问,在雷锋网文章评论、公众号「宅客」:letshome、QQ群:196302618、邮箱:DIYRouter#163.com都可以提交,问题我将会在下章的时候统一解答。需要提醒下,我并不是高手,我回答问题有三个原则:1、我会的我直接回答 2、我不太会的我看着回答 3、我不会的我瞎忽悠 所以我给的答案是否正确需要大家自行判断。