这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » DIY与开源设计 » 开源硬件 » 【Joytag 香蕉R1学习】让新系统(OpenWrt for R1)上网

共2条 1/1 1 跳转至

【Joytag 香蕉R1学习】让新系统(OpenWrt for R1)上网

专家
2015-02-12 12:09:15     打赏
在前文《【Joytag 香蕉R1学习】自己动手组装OpenWrt for R1》中,
我们讲述了如何一步一步组装出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设置步骤如下:
  1. uci set network.wan.proto=static
  2. uci set network.wan.ipaddr=74.125.115.103
  3. uci set network.wan.netmask=255.255.255.0
  4. uci set network.wan.gateway=74.125.115.1
  5. uci set network.wan.dns='8.8.8.8 8.8.4.4'
  6. uci commit network
  7. ifup wan
复制代码 (注:IP地址,网关等换成自己对应的内容)

也就是说,如果我们上级路由支持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
  1. config interface 'loopback'
  2.         option ifname 'lo'
  3.         option proto 'static'
  4.         option ipaddr '127.0.0.1'
  5.         option netmask '255.0.0.0'

  6. config globals 'globals'
  7.         option ula_prefix 'fda3:539b:8994::/48'

  8. config switch 'eth0'
  9.         option enable '1'
  10.         option enable_vlan '1'
  11.         option reset '1'

  12. config interface 'lan'
  13.         option ifname 'eth0.1'
  14.         option force_link '1'
  15.         option type 'bridge'
  16.         option proto 'static'
  17.         option ipaddr '192.168.1.1'
  18.         option netmask '255.255.255.0'
  19.         option ip6assign '60'

  20. config interface 'wan'
  21.         option ifname 'eth0.2'
  22.         option proto 'dhcp'

  23. config interface 'wan6'
  24.         option ifname 'eth0.2'
  25.         option proto 'dhcpv6'

  26. config switch
  27.         option name 'switch0'
  28.         option reset '1'
  29.         option enable_vlan '1'

  30. config switch_vlan
  31.         option device 'switch0'
  32.         option vlan '1'
  33.         option ports '4 0 1 2 8t'

  34. config switch_vlan
  35.         option device 'switch0'
  36.         option vlan '2'
  37.         option ports '3 8t'

复制代码
虽然有些迷糊,但是看起来貌似也没啥问题啊。

好吧,发挥拿来主义精神,找一个可用的R1镜像,把/etc/config/network 抽取出来
  1. config interface 'loopback'
  2.         option ifname 'lo'
  3.         option proto 'static'
  4.         option ipaddr '127.0.0.1'
  5.         option netmask '255.0.0.0'

  6. config globals 'globals'
  7.         option ula_prefix 'fd1f:939a:121e::/48'

  8. config switch 'eth0'
  9.         option enable '1'
  10.         option enable_vlan '1'
  11.         option reset '1'

  12. config interface 'lan'
  13.         option proto 'static'
  14.         option ipaddr '10.0.1.1'
  15.         option netmask '255.255.255.0'
  16.         option defaultroute '0'
  17.         option peerdns '0'
  18.         option nat '1'
  19.         option ifname 'eth0.1'
  20.         option type 'bridge'

  21. config switch_vlan
  22.         option device 'eth0'
  23.         option ports '0 1 2 4 8t'
  24.         option vlan '1'

  25. config interface 'wan'
  26.         option ifname 'eth0.2'
  27.         option proto 'dhcp'

  28. config switch_vlan
  29.         option device 'eth0'
  30.         option vlan '2'
  31.         option ports '3 8t'
复制代码 貌似没啥本质的区别啊,不管了,替换上去,尝试一下。
结果,依旧失败。这么说来,也不是这个配置文件的问题。


发现线索

现在似乎陷入迷途,不知道该如何继续了。
在OpenWrt网站各种查阅技术资料,依旧无法找到头绪。
然后回头去看启动时串口的输出信息,突然发现这样几句信息
  1. /etc/preinit: line 1: swconfig: not found
  2. /etc/preinit: line 1: swconfig: not found
  3. /etc/preinit: line 1: swconfig: not found
复制代码 swconfig是用来配置以太网交换机的工具。
http://wiki.openwrt.org/doc/techref/swconfig
如果这个不存在,那么我配置文件中的那些个switch, VLAN啥的,是不是都没有生效呢?
所以虽然配置文件正确,但是实际上没有工作呢?

不浪费脑细胞,尝试一下。装个swconfig试试看。


安装swconfig

问题来了,咋用串口装程序?
安装swconfig要联网,而联网需要系统里有swconfig.......
这莫非无解了?
突然间灵机一动,既然swconfig是负责switch相关功能,那么我不用switch功能呢?
将/etc/config/network备份后,修改为如下内容:
  1. config interface 'loopback'
  2.         option ifname 'lo'
  3.         option proto 'static'
  4.         option ipaddr '127.0.0.1'
  5.         option netmask '255.0.0.0'

  6. config interface 'wan'
  7.         option ifname 'eth0'
  8.         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

哈哈,是不是连上网了?

然后就简单了:
  1. # opkg update
  2. # 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

菜鸟
2015-02-12 12:36:07     打赏
2楼

 


共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]