OpenWrt防火墙配置(极路由)
说明:
1、极路由使用的是OpenWrt做为操作系统,本身就是一个Linux,包管理使用opkg,只是改了一个界面而已。
2、Linux下的防火墙最终都会归iptables进行管理,OpenWrt的防火墙机制同样也是,最上层采用了自己基于UCI标准的配置方法管理防火墙firewall,最终写入到iptables。
3、UCI是OpenWrt统一配置文件的标准,真心不太喜欢这种语法,没iptables来的清晰。
4、OpenWrt基于firewall的配置,由于涉及到多个网口,有Wan和Lan这些,最终会转换成很多自定义的链,看来来很吃力,我的建议是直接在firewall层全部开启,然后自己使用iptables做限制。不建议停掉之后再自己写配置,不然你无法知道哪些网口是走向什么地方的。
5、firewall不能单独关闭,不然会无法上网。
简单教程:
OpenWrt下的NAT、DMZ、Firewall rules都是由配置文件“/etc/config/firewall”进行控制管理的。此文件可以使用UCI进行控制,也可以使用vi编辑器直接修改。
该文件最后会在/etc/init.d/firewall启动的时候由UCI进行解码并且生成iptables规则生效。因此使用者不需要了解iptables即可通过配置文件实现防火墙规则。
防火墙的修改生效,需要重启防火墙执行一下命令:
/etc/init.d/firewall reload
或
/etc/init.d/firewall restart
查看当前iptables的已启用策略语法为:
iptables -L
防火墙的基本设置
- config defaults防火墙默认参数表
键 值 是否必须设置 说明 input ACCEPT 是 设置 INPUT 链(chain) 的过滤策略,可选值: ACCEPT 允许, REJECT 拒绝 output ACCEPT 是 设置 OUTPUT 链(chain) 的过滤策略,可选值: ACCEPT 允许, REJECT 拒绝 forward REJECT 是 设置 FORWARD 链(chain) 的过滤策略,可选值: ACCEPT 允许, REJECT 拒绝 syn_flood 1 是 是否启用防洪水攻击。可选值:0关闭,1启用。 synflood_rate 字符串 否 设置 SYN 包传输洪水攻击检测比率值,默认为:25 单位(包/秒) synflood_burst 字符串 否 设置 SYN 包传输比率值识别洪水攻击,默认为:50 单位(包/秒) disable_ipv6 1 否 设置关闭掉 IPv6 的防火墙策略, 可选值:0忽略,1关闭。  
这部分参考值使用系统默认值即可,无需修改:
config defaults
option syn_flood
option input ACCEPT
option output ACCEPT
option forward REJECT
# Uncomment this line to disable ipv6 rules
# option disable_ipv6
- config zone用于WAN/LAN域(zone)的参数表
键 值 是否必须设置 说明 name 字符串 是 域,必须是唯一值,可选值:wan,lan network 列表值 否 哪些接口被捆绑到这个域中,可选接口的名称,比如:lan,wan,wan6 input ACCEPT 否 设置INPUT链(chain)的过滤策略,可选值: ACCEPT 允许, REJECT 拒绝 output ACCEPT 否 设置OUTPUT链(chain)的过滤策略,可选值: ACCEPT 允许, REJECT 拒绝 forward ACCEPT 否 设置FORWARD链(chain)的过滤策略,可选值: ACCEPT 允许, REJECT 拒绝 masq 1 否 设置传输伪装,如果是WAN口必须为1 mtu_fix 1 否 设置MTU的MSS钳制,如果是WAN口请为1  
这部分配置也不需要做修改,参考:
config zone
option name lan
list network 'lan'
option input ACCEPT
option output ACCEPT
option forward ACCEPT config zone
option name wan
list network 'wan'
list network 'wan6'
option input REJECT
option output ACCEPT
option forward REJECT
option masq
option mtu_fix
- config forwarding路由转发参数表
键 值 是否必须设置 说明 src lan 是 设置转发来源 dest wan 是 设置转发目标  
这部分也需要修改,参考:
config forwarding
option src lan
option dest wan
防火墙的规则
如果在路由产品中需要开发 “允许 WAN 口访问设备的特定端口”,可以设置本规则(比如开放 WAN 口允许 SSH 登入,或允许 WAN 口访问设备的 FTP),一般情况下无需设置。
防火墙规则在 /etc/config/firewall 中可以有任意数量的规则,这些规则定义了数据传输的动作和行为是被允许还是拒绝。
config rule
option name '规则名称'
.....
| 键 | 值 | 是否必须设置 | 说明 | 
| name | 字符串 | 是 | 设置当前这个 rule 的名称 | 
| target | 字符串 | 是 | 设置防火墙的动作,可选值:ACCEPT 许可, REJECT 拒绝, DROP 抛弃 | 
| src | 字符串 | 否 | 数据源的zone域是哪个。可选值: wan / lan | 
| src_ip | 字符串 | 否 | 数据源的IP地址是哪个。 | 
| src_mac | 字符串 | 否 | 数据源的 MAC 地址是哪个。 | 
| src_port | 字符串 | 否 | 数据源的端口,可以是一个端口,或一个端口范围,但是必须同时指定了协议类型 | 
| proto | 字符串 | 否 | 数据源的协议类型,可选值: tcp, udp, tcpudp, udplit, icmp, esp, ah, sctp, 或all表示全部 | 
| dest | 字符串 | 否 | 数据目标的 zone 域是哪个,可选值:wan / lan | 
| dest_ip | 字符串 | 否 | 数据目标的IP地址。 | 
| dest_port | 字符串 | 否 | 数据目标的端口,可以是一个端口,或一个端口范围,但是必须同时指定了协议类型 | 
| family | 字符串 | 否 | 数据的协议族,可选值: ipv4, ipv6, any | 
rule规则可以灵活设置,比如允许WAN口可以ssh到系统,举例:
config rule
option name wan-ssh
option src wan
option dest_port
option proto tcp
option target ACCEPT
端口转发和 DMZ(demilitarized zone 隔离区)
端口转发是路由产品中常见的配置,它允许使用者通过WAN口访问特定的端口转发给局域网的一台电脑设备(比如WAN口访问80端口(HTTP)将转发给局域网某台网站服务器)。
端口转发也是在防火墙配置/etc/config/firewall中定义redirect段策略实现的。所有匹配的来源数据将根据目标设置转发到目标主机上。
firewall配置中可以有多个redirect转发策略,默认是没有开放任何转发的,如果需要转发请使用vi或UCI进行配置。
规则配置文件结构
config redirect
option name '名称'
....
config redirect可选参数表
| 键 | 值 | 是否必须设置 | 说明 | 
| name | 字符串 | 是 | 设置当前这个 redirect 的名称 | 
| src | 字符串 | 是 | 转发源的 zone 域,一般转发都是转发从 wan 过来的访问 | 
| src_ip | 字符串 | 否 | 转发源的 IP 地址指定 | 
| src_mac | 字符串 | 否 | 转发源的 MAC 地址指定 | 
| src_port | 字符串 | 否 | 转发源的端口指定 | 
| proto | 字符串 | 否 | 转发源的协议类型,可选值:tcp, udp, tcpudp, udplit, icmp, esp, ah, sctp, 或all表示全部 | 
| dest | 字符串 | 是 | 转发目标的 zone 域 | 
| dest_ip | 字符串 | 否 | 转发目标的IP地址指定 | 
| dest_mac | 字符串 | 否 | 转发目标的MAC地址指定 | 
| dest_port | 字符串 | 否 | 转发目标的端口指定 | 
端口转发的可配置性十分灵活,比如我们将 9020 这个端口转发给内网一台服务器的 80,举例:
config redirect
option name '9020-80'
option proto 'tcp'
option src 'wan'
option src_dport ''
option dest 'lan'
option dest_ip '192.168.1.100'
option dest_port ''
将电脑192.168.1.2设置DMZ隔离区,举例:
config redirect
option src wan
option proto all
option dest_ip 192.168.1.2
参考:
http://wiki.openwrt.org/zh-cn/doc/uci(UCI)
http://wiki.openwrt.org/zh-cn/doc/uci/firewall(防火墙配置)
https://www.haiyun.me/archives/openwrt-iptables.html(自定义iptables替换firewall)
http://blog.csdn.net/u011641885/article/details/49303699(以上内容部分转自此篇文章)
OpenWrt防火墙配置(极路由)的更多相关文章
- 极路由2(极贰)ROOT并刷了OpenWrt
		
绕过官方的ROOT 查了一下root教程, 如果还需要保留保修, 则需要自己想办法回退版本, 下载搜狐插件到sd卡, 找个linux系统修改sd卡上程序的执行权限, 然后才能开启ssh, 具体的方法可 ...
 - MIPS(极路由1s[mt7620a])平台OpenWrt路由器系统内的Go应用程序开发
		
起因,由于coolpy5核心转换到go语言开发,所以目前超人正在进行相关的技术攻关,在程序编写方面一切都相对顺利.由于coolpy5是一个真正的商业级性能的系统也考滤到coolpy之前的版本已经确定的 ...
 - 如何用极路由+OpenWrt+SDR电视棒搭建SDR服务器
		
0×00 前言 近期因为有个从异地捕获无线信号的需求,便尝试着用OpenWrt+公网IP搭建了一台SDR服务器.如果有小伙伴嫌SDR硬件天线看起来太乱.或者电脑没有足够的USB接口也可在局域网搭建SD ...
 - 如何用极路由+OpenWrt+RTL电视棒搭建一台SDR服务器,并隐秘地捕获和传输数据
		
0×00 前言 近期因为有个从异地捕获无线信号的需求,便尝试着用OpenWrt+公网IP搭建了一台SDR服务器.如果有小伙伴嫌SDR硬件天线看起来太乱.或者电脑没有足够的USB接口也可在局域网搭建SD ...
 - OpenWrt-19.07.2 For HC5861(极路由3) /HiWiFi/Gee最新固件,极路由3刷openwrt
		
OpenWrt For HiWiFi(HC5861) 自编译精减固件,极路由3自用固件 HC5861-uboot.bin v19.07.2 下载 支持 NTFS 读写 支持 Wi-Fi 5G 驱动 默 ...
 - 教你如何在Drcom下使用路由器上校园网(以广东工业大学、极路由1S HC5661A为例)
		
免责声明: 在根据本教程进行实际操作时,如因您操作失误导致出现的一切意外,包括但不限于路由器变砖.故障.数据丢失等情况,概不负责: 该技术仅供学习交流,请勿将此技术应用于任何商业行为,所产生的法律责任 ...
 - 极路由U-boot解锁刷root固件教程,root后可刷华硕、如意云等多种固件,附赠全套刷软
		
9008正式版固件将会封堵此漏洞,想root的同学尽快了.安装新工具箱里的root保留,可升级官方最新固件并保留root. 此方法并非本人原创,只是将root的过程和经验做个总结,比较适合菜鸟做参考, ...
 - Linux 学习之防火墙配置
		
1.安装iptables防火墙 yum install iptables 2. 清除已有的iptables规则 iptables -F iptables -X iptables -Z 3.显 ...
 - 极路由4pro(HC5962)安装python
		
基本配置 其实极路由4.极路由4 pro.极路由B70都是一个型号的(HC5962) CPU:MT7621AT + MT7612EN + 7603EN 内存:256MB DDR3 RAM 闪存:128 ...
 
随机推荐
- koa中间层 文件下载的请求转发
			
背景: 前端用a标签发起下载文档的get请求 node中间层接到get请求后将请求转发到java后端 java后端返回文档流传递给node中间层 好处: 后端的java业务逻辑层接口.数据库不向外部暴 ...
 - 002利用zabbix监控某个目录大小
			
近期,因为JMS的消息堆积导致ApacheMQ频率故障(消息没有被消费掉,导致其数据库达到1.2G,JMS此时直接挂掉),很是郁闷!刚好自 己在研究zabbix.既然zabbix如此强大,那么它可以监 ...
 - Python连接Access数据库
			
前言 今天想要用Python访问Access数据库,折腾了半天,特记录一下 背景 最近想将一些文件记录下来,存入数据库,为此拿LabVIEW写了一个版本,记录环境配置为: LabVIWE:2015 A ...
 - HDU 1560 DNA sequence(IDA*)
			
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1560 题目大意:给出n个字符串,让你找一个字符串使得这n个字符串都是它的子串,求最小长度. 解题思路: ...
 - sin()函数的实现
			
计算如下公式,并输出结果: 其中r.s的值由键盘输入.sin x的近似值按如下公式计算,计算精度为10-10: 程序说明: #include <math.h>和#include<cm ...
 - DotNetOpenAuth实践之Windows签名制作
			
系列目录: DotNetOpenAuth实践系列(源码在这里) 在上篇中我们搭建了一个简单的认证服务器,里面使用到了Windows签名证书,这一篇则是教大家如何制作Windows签名证书,下面进入正题 ...
 - node+express+socket.io+mysql=通讯服务器搭建(一)
			
首发github/blog 欢迎大家评论给星 安装 首先假定你已经安装了 Node.js,接下来为你的应用创建一个目录,然后安装express-generator应用骨架 $ mkdir node-d ...
 - ArrayList to Array Conversion in Java
			
ArrayList to Array Conversion in Java Following methods can be used for converting ArrayList to Arra ...
 - 【C#】IEnumrator的枚举数和IEnumerable接口
			
声明IEnumerator的枚举数 要创建非泛型接口的枚举数,必须声明实现IEnumerator接口的类,IEnumerator接口有如下特性: 1.她是System.Collections命名空间的 ...
 - thinkphp5.0独立配置
			
独立配置文件 新版支持配置文件分离,只需要配置extra_config_list参数(在应用公共配置文件中). 例如,不使用独立配置文件的话,数据库配置信息应该是在config.php中配置如下: / ...