软路由-openwrt
2018年02月01日

概述

openwrt是嵌入式设备上运行的linux系统。OpenWrt的文件系统是可写的,开发者无需在每一次修改后重新编译,令它更像一个小型的 Linux 电脑系统,也加快了开发速度。你会发现无论是 ARM, PowerPC或MIPS的处理器,都有很好的支持。并且附带3000左右的软件包,用户可以方便的自定义功能来制作固件。也可以方便的移植各类功能到openwrt下。

小技巧

默认密码

默认账号:root
默认密码:root

ssh 登陆路由器

  1. 路由背板拿针捅5秒,重置路由设置
  2. 路由lan口和电脑直连
  3. 192.168.1.1 登陆路由
  4. System - Administration
    Allow SSH password authentication
    Allow the root user to login with password
  5. 删除 $HOME/.ssh/known_hosts 文件
  6. ssh -l root ip 登陆openwrt

连接上级路由

由于连接wifi需要创建一个interface,但是手动创建的interface无法激活wifi链接(web配置页面不知道怎么用),所以使用手机热点自动创建interface

  1. 打开手机热点
  2. Network - wifi - Scan
  3. 选择刚才的手机热点名称 Join Network
    WPA passphrase 上级路由密码
    Name of the new network interface 名称(随便起,容易区分开就可以)
    然后点击Submit
General Setup
    Operating frequency     N   6   20
    ESSID                   连接的上级路由SSID
    BSSID                   上级路由的mac地址 以冒号分隔 xx:xx:xx:xx:xx:xx 不知道可以不填
    Mode                    Client          连接上级路由模式
    Network                 刚才起的interface名称,默认就是这个
        
Wireless Security
    Encryption      WPA2-PSK
    Cipher          auto
    key             上级路由密码    这个也在刚才的页面自动填上了,不用动
save and accept

更新语言包

  1. 更新 并 安装语言包
opkg update
opkg install luci
opkg install luci-i18n-base-zh-cn
opkg install luci-i18n-firewall-zh-cn

安装 基础包 语言包 防火墙语言包
2. web 更改配置
System - System - Language and Style
language - 普通话
3. 注销 重新登陆

创建wifi热点

  1. 网络 - wifi - 添加
  2. 配置
General Setup
    ESSID       SSID名称(wifi名称)
    Mode        Access Point(接入点AP)
    Network     lan
Wireless Security
    Encryption      WPA2-PSK
    Cipher          auto
    key             wifi密码
  1. save and accept
  2. system - interface
    IPV4 address        192.168.5.1
DNS Server
    高级设置
    动态DHCP            选中
    强制开启DHCP        选中
    DHCP选项            3,192.168.5.1

保存并应用
5. 至此本地连接已经无法连接,可以用手机连接wifi 查看连同效果了

一级路由 内网设备 与 openwrt连同

network - firewall
wan:
input accept
output accept
forward accept
save and accept

映射81端口为openwrt80端口

网络 - 防火墙 - 端口转发 - 添加
外部端口 81
内部ip地址 openwrt IP (192.168.5.1)
内部端口 80

DMZ主机

网络 - 防火墙 - 端口转发 - 添加
内部ip地址 子网主机ip
注意:设置完dmz以后,访问路由页面直接映射到子网主机,所以一定要修改默认的路由端口映射

设置pppoe连接猫

  1. Network - Interfaces - WAN - Edit
  2. Protocal PPPoE
  3. 输入 账号 密码
  4. Save & Apply

访客网络

首先需要建立一个guest接口

vim /etc/config/network
config interface 'guest'
    option _orig_ifname 'wlan0-1'
    option _orig_bridge 'true'
    option proto 'static'
    option ipaddr '192.168.2.1'
    option netmask '255.255.255.0'
    
vim /etc/config/dhcp
config dhcp 'guest'
    option start '100'
    option leasetime '12h'
    option limit '150'
    option interface 'guest'

接着新建一个用于Guest的无线网络

vim /etc/config/wireless
config wifi-iface
    option device 'radio0'
    option mode 'ap'
    option ssid 'guestwifi'
    option encryption 'psk2'
    option key '88888888'
    option network 'guest'
#   option isolate '1'

如果你希望guest下的客户端间不能相互访问,可以使用 option isolate ‘1’ 属性进行隔离。
这样,你在luci界面下可以看出有一个白色的叫做“guest”的接口,并与一个叫做momo的AP进行了桥接,但是现在是无法上网的,因为并没有配置防火墙。

现在进行配置防火墙

vim /etc/config/firewall 
config zone
    option name 'guest'         #这里的 guest是防火墙的名称
    option input 'ACCEPT'
    option forward 'REJECT'
    option output 'ACCEPT'
    option network 'guest'      #这里的 guest是将要进行管理的网络
    
# 配置端口转发
config forwarding
    option src 'guest'
    option dest 'wan'

可选操作
与其它接口隔离
如果在lan下的AP拥有自己私有的NAS,电视等设备,想象一下自己的照片、备份肯定不想暴露给访客吧,由于guest -> lan 的访问默认是打开的,所以需要将此防火墙规则进行设置

vim /etc/config/firewall
config rule                                     
    option dest 'lan'                       
    option name 'Deny Guest -> LAN'        
    option proto 'all'                      
    option target 'DROP'
    option src '*'                      

最后配置限速,这里的限速是接口级限速,所有访问Guest-AP的用户共享此限速带宽,而不用采用Mac或者IP等占用CPU的上层协议限速了。
限速问题不太好优化,暂时忽略掉

opkg update
opkg install luci-app-wshaper

安装完成后,在浏览器中在wshaper中进行配置即可,注意单位是bit,所以假如需要限速125KB/S时,需要填写为1000kbit

IP 与 MAC 地址绑定

方法一:

  1. 添加映射
vim /etc/config/dhcp
config host
        option name 'hostname'              #主机名称,自定义 不能有空格
        option mac 'xx:xx:xx:xx:xx:xx'      #设备的mac地址
        option ip 'xxx.xxx.xxx.xxx'         #要绑定的ip

每个映射一个config块 web页面里,可以在网络-DHCP/DNS-静态地址分配中添加
2. 重启路由器
3. 设备重新连接路由器

方法二:

  1. 确保读取ethers文件
vim /etc/config/dhcp
找到dnsmasq一节,确保readethers值为1
config dnsmasq
    ...
    option readethers '1' #读取ethers文件的映射信息
  1. 设定绑定信息
vim /etc/ethers

填写[mac地址] [ip]的对应列表
xx:xx:xx:xx:xx:xx xxx.xxx.xxx.xxx
例如:
00:15:17:CB:65:D4 192.168.1.101
中间可以用空格或者tab隔开,不可以添加注释

  1. 重启路由器
reboot

按照网上说,重启dns和断开手机重新连接路由器就可以,但是实际测试无效.索性直接重启路由(web界面重启也可能无效,必要时需要断电重启)
最近的一次发现,配置完mac地址映射,重启路由也无效,主机分配的IP地址依然是旧的,所以openwrt进行了断电重启

mac 白名单

vim /etc/config/wireless
config wifi-iface
        option device 'radio0'              #无线所从属的网卡组
        option mode 'ap'                    #无线模式 ap 代表对外的热点信号
        option hidden '1'                   #隐藏SSID
        option encryption 'psk2'            #加密方式
        option key 'mypassword'             #密码
        option ssid 'myssid'                #ssid
        option network 'lan'                #所在的接口
        option macfilter 'allow'            #mac地址过滤模式 白名单/黑名单
        list maclist 'xx:xx:xx:xx:xx:xx'    #mac列表,列表内地址根据过滤模式而更改行为 
        list maclist 'yy:yy:yy:yy:yy:yy'

只允许特定mac地址登陆路由器管理界面

vim /etc/config/firewall
# 允许 特定mac地址访问路由器
config rule
        option enabled '1'
        option target 'ACCEPT'
        option src 'lan'
        option dest 'wan'
        option name 'Only PC admin'
        option src_mac 'xx:xx:xx:xx:xx:xx'
        option dest_ip '192.168.1.1'
        
# 禁止所有mac地址访问路由器
config rule
        option enabled '1'
        option dest 'wan'
        option name 'Deny Other mac admin'
        option src '*'
        option dest_ip '192.168.1.1'
        option target 'REJECT'

根据mac地址限制上网时间

  1. ssh连接到openwrt
  2. 打开防火墙配置文件,添加规则
vim /etc/firewall.user
iptables -I FORWARD -m mac --mac-source xx:xx:xx:xx:xx:xx -m time --timestart 13:30:00 --timestop 00:00:00 -j DROP

值得注意的是iptables 使用的UTC时间,如果和本地时间存在时区差异,请先把时间修正为UTC时间,再添加规则
例如:中国位于东八区,所以本地时间(CST)需要在UTC时间的基础上加8小时
上述规则:–timestart 13:30:00 --timestop 00:00:00 应该理解为21:30:00 至 08:00:00

根据url过滤网址

vim /etc/firewall.user
iptables -I FORWARD -s display.intdmp.com -m state --state NEW,RELATED,ESTABLISHED -j DROP

更新rom

  1. 下载固件:
    如果是原厂固件下载这个
    如果已经是OpenWrt下载这个
  2. web界面更新
    打开路由web界面-系统-备份/升级-刷写新的固件-选择文件-刷写固件
    提前下载配置文件备份,以防万一
    勾选保留配置,可以在更新完固件省去配置的过程
    更新完毕后,重新安装luci的语言包,就可以了

更新hosts

  1. 网络-DHCP/DNS-HOSTS和解析文件-额外的HOSTS文件-填写一个文件
  2. ssh连接openwrt,编辑刚才的配置文件
vim /etc/myhosts
[ip] [url]
127.0.0.1 www.baidu.com
  1. 重启dnsmasq服务
    电脑网卡配置的dns必须是路由上的dns才能生效
cat /etc/resolv.conf

相关链接

常用操作 介绍