我们讲述了如何一步一步组装出OpenWrt for R1。
相比现有的R1镜像,这个OpenWrt for R1更小巧洁净,
但是同时这也是缺点,因为少了很多软件包,无法直接让其进入角色,比如说作为一个路由器来使用。
所以要想让其好好工作,我们还需要进一步折腾。
在《Joytag 香蕉R1学习】R1初印象并点亮》这篇文章中,我们讲述了如何使用串口连接R1。
但是安装软件包等都需要使用网络,所以让R1连到网络上,是我们首先需要解决的问题。
官方内容
按照OpenWrt的文档
http://wiki.openwrt.org/doc/howto/internet.connection
系统装上之后,以太网部分应该是直接可以工作的。
链接中“via plain Ethernet”部分说明了如何设置OpenWrt设备的以太网。
其中,DHCP为默认方式。
静态IP设置步骤如下:
-
uci set network.wan.proto=static
-
uci set network.wan.ipaddr=74.125.115.103
-
uci set network.wan.netmask=255.255.255.0
-
uci set network.wan.gateway=74.125.115.1
-
uci set network.wan.dns='8.8.8.8 8.8.4.4'
-
uci commit network
- ifup wan
也就是说,如果我们上级路由支持DHCP,那么连接上就可以上网。是不是很简单呢?
实际测试
1)
将R1 WAN口与上级路由器通过网线相连,上电。
ping 网关IP,无法ping通。
ifconfig查看,发现WAN口没有分配到IP。
莫非是DHCP没成功?不怕,我们还可以设置静态IP嘛。
2)
将R1 WAN口与上级路由器通过网线相连,上电。
按照上边设置静态IP的方法设置(修改为自己对应的内容)
ping 网关IP,无法ping通。
ifconfig查看WAN口IP信息,貌似无误。
重启之,依然无法访问网络。
配置文件
使用上述方法测试之后,发现并不能是R1上网,这很是不科学。
然后该怀疑啥呢,去看看配置文件是否有误吧。
文件位置: /etc/config/network
-
config interface 'loopback'
-
option ifname 'lo'
-
option proto 'static'
-
option ipaddr '127.0.0.1'
-
option netmask '255.0.0.0'
-
-
config globals 'globals'
-
option ula_prefix 'fda3:539b:8994::/48'
-
-
config switch 'eth0'
-
option enable '1'
-
option enable_vlan '1'
-
option reset '1'
-
-
config interface 'lan'
-
option ifname 'eth0.1'
-
option force_link '1'
-
option type 'bridge'
-
option proto 'static'
-
option ipaddr '192.168.1.1'
-
option netmask '255.255.255.0'
-
option ip6assign '60'
-
-
config interface 'wan'
-
option ifname 'eth0.2'
-
option proto 'dhcp'
-
-
config interface 'wan6'
-
option ifname 'eth0.2'
-
option proto 'dhcpv6'
-
-
config switch
-
option name 'switch0'
-
option reset '1'
-
option enable_vlan '1'
-
-
config switch_vlan
-
option device 'switch0'
-
option vlan '1'
-
option ports '4 0 1 2 8t'
-
-
config switch_vlan
-
option device 'switch0'
-
option vlan '2'
-
option ports '3 8t'
-
虽然有些迷糊,但是看起来貌似也没啥问题啊。
好吧,发挥拿来主义精神,找一个可用的R1镜像,把/etc/config/network 抽取出来
-
config interface 'loopback'
-
option ifname 'lo'
-
option proto 'static'
-
option ipaddr '127.0.0.1'
-
option netmask '255.0.0.0'
-
-
config globals 'globals'
-
option ula_prefix 'fd1f:939a:121e::/48'
-
-
config switch 'eth0'
-
option enable '1'
-
option enable_vlan '1'
-
option reset '1'
-
-
config interface 'lan'
-
option proto 'static'
-
option ipaddr '10.0.1.1'
-
option netmask '255.255.255.0'
-
option defaultroute '0'
-
option peerdns '0'
-
option nat '1'
-
option ifname 'eth0.1'
-
option type 'bridge'
-
-
config switch_vlan
-
option device 'eth0'
-
option ports '0 1 2 4 8t'
-
option vlan '1'
-
-
config interface 'wan'
-
option ifname 'eth0.2'
-
option proto 'dhcp'
-
-
config switch_vlan
-
option device 'eth0'
-
option vlan '2'
- option ports '3 8t'
结果,依旧失败。这么说来,也不是这个配置文件的问题。
发现线索
现在似乎陷入迷途,不知道该如何继续了。
在OpenWrt网站各种查阅技术资料,依旧无法找到头绪。
然后回头去看启动时串口的输出信息,突然发现这样几句信息
-
/etc/preinit: line 1: swconfig: not found
-
/etc/preinit: line 1: swconfig: not found
- /etc/preinit: line 1: swconfig: not found
http://wiki.openwrt.org/doc/techref/swconfig
如果这个不存在,那么我配置文件中的那些个switch, VLAN啥的,是不是都没有生效呢?
所以虽然配置文件正确,但是实际上没有工作呢?
不浪费脑细胞,尝试一下。装个swconfig试试看。
安装swconfig
问题来了,咋用串口装程序?
安装swconfig要联网,而联网需要系统里有swconfig.......
这莫非无解了?
突然间灵机一动,既然swconfig是负责switch相关功能,那么我不用switch功能呢?
将/etc/config/network备份后,修改为如下内容:
-
config interface 'loopback'
-
option ifname 'lo'
-
option proto 'static'
-
option ipaddr '127.0.0.1'
-
option netmask '255.0.0.0'
-
-
config interface 'wan'
-
option ifname 'eth0'
-
option proto 'dhcp'
-
重启后
ping baidu.com
PING baidu.com (220.181.57.217): 56 data bytes
64 bytes from 220.181.57.217: seq=0 ttl=51 time=96.658 ms
64 bytes from 220.181.57.217: seq=1 ttl=51 time=103.038 ms
^C
--- baidu.com ping statistics ---
2 packets transmitted, 2 packets received, 0% packet loss
round-trip min/avg/max = 96.658/99.848/103.038 ms
哈哈,是不是连上网了?
然后就简单了:
-
# opkg update
- # opkg install swconfig
见证奇迹
接下来,是见证奇迹的时刻了。
恢复/etc/config/network备份
重启系统
# ifconfig
br-lan Link encap:Ethernet HWaddr 02:87:02:C1:4D:E2
inet addr:192.168.1.1 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fda3:539b:8994::1/60 Scope:Global
inet6 addr: fe80::87:2ff:fec1:4de2/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:10 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:1404 (1.3 KiB)
eth0 Link encap:Ethernet HWaddr 02:87:02:C1:4D:E2
inet6 addr: fe80::87:2ff:fec1:4de2/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:21 errors:0 dropped:0 overruns:0 frame:0
TX packets:55 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:2850 (2.7 KiB) TX bytes:6419 (6.2 KiB)
Interrupt:117
eth0.1 Link encap:Ethernet HWaddr 02:87:02:C1:4D:E2
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:11 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:1450 (1.4 KiB)
eth0.2 Link encap:Ethernet HWaddr 02:87:02:C1:4D:E2
inet addr:192.168.249.201 Bcast:192.168.249.255 Mask:255.255.255.0
inet6 addr: fe80::87:2ff:fec1:4de2/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:21 errors:0 dropped:0 overruns:0 frame:0
TX packets:28 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:2472 (2.4 KiB) TX bytes:3097 (3.0 KiB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:64 errors:0 dropped:0 overruns:0 frame:0
TX packets:64 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:5584 (5.4 KiB) TX bytes:5584 (5.4 KiB)
WAN口正确的获取了IP。
# ping baidu.com
PING baidu.com (220.181.57.217): 56 data bytes
64 bytes from 220.181.57.217: seq=0 ttl=51 time=86.624 ms
64 bytes from 220.181.57.217: seq=1 ttl=51 time=88.857 ms
64 bytes from 220.181.57.217: seq=2 ttl=51 time=87.214 ms
64 bytes from 220.181.57.217: seq=3 ttl=51 time=87.540 ms
^C
--- baidu.com ping statistics ---
4 packets transmitted, 4 packets received, 0% packet loss
round-trip min/avg/max = 86.624/87.558/88.857 ms
上网啥的也都正常了。
好了,现在有系统了,有网络了,接下来可以更加开心的胡搞了。
参考链接:
http://wiki.openwrt.org/doc/howto/internet.connection
http://wiki.openwrt.org/doc/uci/network
http://wiki.openwrt.org/doc/techref/swconfig
http://wiki.openwrt.org/doc/uci/network/switch