文档章节

跟 UMU 一起玩 OpenWRT(入门篇4):启用工作模式开关和联网

UMU
 UMU
发布于 2014/06/16 19:23
字数 679
阅读 1924
收藏 6

    在上篇《跟 UMU 一起玩 OpenWRT(入门篇3):工作模式开关》(http://my.oschina.net/umu618/blog/273945)中介绍了如何通过 GPIO 读取获得当前工作模式,现在来实现这个开关的功能。

    主要配置 rc.local 脚本,内容如下:

read_gpio() {
 (echo $1 > /sys/class/gpio/export) >& /dev/null
 (echo "in" > /sys/class/gpio/gpio$1/direction) >& /dev/null
 return `cat /sys/class/gpio/gpio$1/value`;
}
read_gpio 19;
v=$?;
read_gpio 20;
v=$v$?;
read_gpio 21;
v=$v$?;
read_gpio 22;
v=$v$?;
read_gpio 23;
v=$v$?;
case "$v" in
 10001) v="ap";;
 11001) v="repeater";;
 01001) v="hotspot";;
 11000) v="4th";;
 *) v="error";;
esac
cp /etc/config/$v/* /etc/config/
logger working mode: $v
exit 0

    原理是开机自动复制配置文件覆盖到 /etc/config/ 下,配置文件不需要全部,只要 firewall、network 和 wireless 就行了。按工作模式命名,创建三个目录:

mkdir /etc/config/ap
mkdir /etc/config/repeater
mkdir /etc/config/hotspot

    后面,我们会把配置文件写好了,放在这些目录里。下面以 ap 为例,此模式是网口做 WAN,无线做 LAN,WAN 以 ADSL 接入为例,其它情况自行变通:

uci set wireless.@wifi-device[0].disabled=0;
uci set wireless.@wifi-iface[0].ssid='umu618.com';
uci set wireless.@wifi-iface[0].encryption='psk2+ccmp';
uci set wireless.@wifi-iface[0].key='WiFi 密码';
uci commit wireless;
wifi

uci delete network.lan.ifname
uci delete network.lan.type
uci add network interface
uci rename network.@interface[-1]='wan'
uci set network.@interface[-1].ifname='eth1'
uci set network.@interface[-1]._orig_ifname='eth1'
uci set network.@interface[-1]._orig_bridge='false'
uci set network.@interface[-1].proto='pppoe'
uci set network.@interface[-1].username='宽带账号'
uci set network.@interface[-1].password='宽带密码'
uci commit network

cp /etc/config/firewall /etc/config/ap/
cp /etc/config/network /etc/config/ap/
cp /etc/config/wireless /etc/config/ap/

    再来说一下 repeater,网口做 LAN,无线做一个 AP Client 和一个 AP。注意,以下命令以初始化的配置文件为基础,请事先备份、还原,不要在配置过前面的 ap 模式后直接继续配置,可能会有问题。

uci add network interface
uci rename network.@interface[-1]='wwan'
uci set network.@interface[-1].proto='dhcp'
uci commit network
uci set wireless.@wifi-device[0].disabled=0;
uci set wireless.@wifi-iface[0].ssid='umu618.com';
uci set wireless.@wifi-iface[0].encryption='psk2+ccmp';
uci set wireless.@wifi-iface[0].key='WiFi 密码';

uci add wireless wifi-iface
uci set wireless.@wifi-iface[-1].network='wwan'
uci set wireless.@wifi-iface[-1].ssid='现有 WiFi 名字'
uci set wireless.@wifi-iface[-1].device='radio0'
uci set wireless.@wifi-iface[-1].mode='sta'
uci set wireless.@wifi-iface[-1].bssid='现有无线路由器的 MAC 地址'
uci set wireless.@wifi-iface[-1].encryption='psk2+ccmp'
uci set wireless.@wifi-iface[-1].key='现有 WiFi 密码'
uci commit wireless;
wifi
uci get firewall.@zone[1].network
uci show firewall.@zone[1]
uci set firewall.@zone[1].network='wan wan6 wwan'
uci commit firewall
/etc/init.d/firewall restart

cp /etc/config/firewall /etc/config/repeater/
cp /etc/config/network /etc/config/repeater/
cp /etc/config/wireless /etc/config/repeater/

© 著作权归作者所有

UMU

UMU

粉丝 119
博文 112
码字总数 44043
作品 0
厦门
程序员
私信 提问
加载中

评论(4)

UMU
UMU 博主

引用来自“文质彬彬90”的评论

设置最后一步报错,wifi也找不到
root@OpenWrt :~# /etc/init.d/firewall restart
Warning: Unable to locate ipset utility, disabling ipset support
Warning: Section @zone 1 (wan) cannot resolve device of network 'wan'
Warning: Section @zone 1 (wan) cannot resolve device of network 'wan6'
* Flushing IPv4 filter table
* Flushing IPv4 nat table
* Flushing IPv4 mangle table
* Flushing IPv4 raw table
* Flushing IPv6 filter table
* Flushing IPv6 mangle table
* Flushing IPv6 raw table
* Flushing conntrack table ...
* Populating IPv4 filter table
* Zone 'lan'
* Zone 'wan'
* Rule 'Allow-DHCP-Renew'
* Rule 'Allow-Ping'
* Rule 'Allow-IGMP'
* Rule #7
* Rule #8
* Forward 'lan' -> 'wan'
* Populating IPv4 nat table
* Zone 'lan'
* Zone 'wan'
* Populating IPv4 mangle table
* Zone 'lan'
* Zone 'wan'
* Populating IPv4 raw table
* Zone 'lan'
* Zone 'wan'
* Populating IPv6 filter table
* Zone 'lan'
* Zone 'wan'
建议先不要动防火墙,配好其它参数,设置方法参考官网。
文质彬彬90
文质彬彬90
设置最后一步报错,wifi也找不到
root@OpenWrt :~# /etc/init.d/firewall restart
Warning: Unable to locate ipset utility, disabling ipset support
Warning: Section @zone 1 (wan) cannot resolve device of network 'wan'
Warning: Section @zone 1 (wan) cannot resolve device of network 'wan6'
* Flushing IPv4 filter table
* Flushing IPv4 nat table
* Flushing IPv4 mangle table
* Flushing IPv4 raw table
* Flushing IPv6 filter table
* Flushing IPv6 mangle table
* Flushing IPv6 raw table
* Flushing conntrack table ...
* Populating IPv4 filter table
* Zone 'lan'
* Zone 'wan'
* Rule 'Allow-DHCP-Renew'
* Rule 'Allow-Ping'
* Rule 'Allow-IGMP'
* Rule #7
* Rule #8
* Forward 'lan' -> 'wan'
* Populating IPv4 nat table
* Zone 'lan'
* Zone 'wan'
* Populating IPv4 mangle table
* Zone 'lan'
* Zone 'wan'
* Populating IPv4 raw table
* Zone 'lan'
* Zone 'wan'
* Populating IPv6 filter table
* Zone 'lan'
* Zone 'wan'
UMU
UMU 博主

引用来自“shytian”的评论

我用网线连接505和上一级路由器,电脑通过无线网络连接到505,该怎么配置啊。能贴一下具体配置吗?我的配置如下,怎么都连不到外网,电脑是可以练到505的。。。

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 'fd6f:b322:6d26::/48'


config interface 'lan'
option force_link '1'
option proto 'static'
option ipaddr '192.168.2.1'
option netmask '255.255.255.0'
option ip6assign '60'


config interface 'wan'
option ifname 'eth1'
option _orig_ifname='eth1'
option _orig_bridge='false'
option proto 'dhcp'
option defaultroute '0'
option peerdns '0'

用 uci 参考我文中的命令
shytian
shytian
我用网线连接505和上一级路由器,电脑通过无线网络连接到505,该怎么配置啊。能贴一下具体配置吗?我的配置如下,怎么都连不到外网,电脑是可以练到505的。。。

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 'fd6f:b322:6d26::/48'


config interface 'lan'
option force_link '1'
option proto 'static'
option ipaddr '192.168.2.1'
option netmask '255.255.255.0'
option ip6assign '60'


config interface 'wan'
option ifname 'eth1'
option _orig_ifname='eth1'
option _orig_bridge='false'
option proto 'dhcp'
option defaultroute '0'
option peerdns '0'
跟 UMU 一起玩 OpenWRT(入门篇1):硬件选型和刷机

看了《跟hoowa学做智能路由》系列,http://www.leiphone.com/diy-a-smart-router.html,也想写点自己的经验,大家可以先看 hoowa 童鞋的,他已经写得很好了,UMU 的不同观点是硬件的选择而已...

UMU
2014/05/24
10K
4
跟 UMU 一起玩 OpenWRT(高级篇1):编译不死 U-Boot

UMU 2010 年初就玩 OpenWRT/DD-WRT 了,蛋似编译东西还是初学者,本文纯属蛋疼的过程,欢迎批评教育,谢谢…… 首先到 https://github.com/pepe2k/u-bootmod 看明白作者的说明。这里简单说一...

UMU
2014/05/21
8.4K
1
跟 UMU 一起玩 OpenWRT(入门篇8):网络摄像机

  买了一个微软 LifeCam HD-3000,已经过了视频聊天的年纪,插到 DIR-505 玩一下吧。   安装过程出奇简单: opkg updateopkg install kmod-video-uvc   如果安装失败,看看是不是固件应...

UMU
2014/07/14
1K
0
跟 UMU 一起玩 OpenWRT(高级篇2):不拆机刷不死 U-Boot

在上一篇《编译 D-Link DIR-505 的不死 U-Boot》介绍了如何编译不死 U-Boot,但是不死 U-Boot 的作者只介绍了用 TTL 线刷方法,UMU 可不想拆机,毕竟拆机感觉并不好…… 第一个思路是刷上 DD...

UMU
2014/05/23
8.7K
3
跟 UMU 一起玩 OpenWRT(入门篇9):远程监听

  在《跟 UMU 一起玩 OpenWRT(入门篇8):网络摄像机》介绍的 mjpg_streamer 并不能传输声音,所以有了本文,主要参考:http://forum.anywlan.com/thread-282658-1-1.html,硬件还是选用微...

UMU
2014/07/21
2.4K
0

没有更多内容

加载失败,请刷新页面

加载更多

nginx学习笔记

中间件位于客户机/ 服务器的操作系统之上,管理计算机资源和网络通讯。 是连接两个独立应用程序或独立系统的软件。 web请求通过中间件可以直接调用操作系统,也可以经过中间件把请求分发到多...

码农实战
今天
5
0
Spring Security 实战干货:玩转自定义登录

1. 前言 前面的关于 Spring Security 相关的文章只是一个预热。为了接下来更好的实战,如果你错过了请从 Spring Security 实战系列 开始。安全访问的第一步就是认证(Authentication),认证...

码农小胖哥
今天
11
0
JAVA 实现雪花算法生成唯一订单号工具类

import lombok.SneakyThrows;import lombok.extern.slf4j.Slf4j;import java.util.Calendar;/** * Default distributed primary key generator. * * <p> * Use snowflake......

huangkejie
昨天
12
0
PhotoShop 色调:RGB/CMYK 颜色模式

一·、 RGB : 三原色:红绿蓝 1.通道:通道中的红绿蓝通道分别对应的是红绿蓝三种原色(RGB)的显示范围 1.差值模式能模拟三种原色叠加之后的效果 2.添加-颜色曲线:调整图像RGB颜色----R色增强...

东方墨天
昨天
11
1
将博客搬至CSDN

将博客搬至CSDN

算法与编程之美
昨天
13
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部