在OpenWRT下防火墙的默认行为已经可以满足路由器的需要,一般情况下也无需修改,所以本章作为了解阅读即可。 如果想设置端口转发、uPNP等更多功能可以参考本章的配置方法进行设置。
OpenWRT内置防火墙介绍
OpenWRT下的NAT、DMZ、Firewall rules都是由配置文件“/etc/config/firewall”进行控制管理的。此文件可以使用UCI进行控制,也可以用vi编辑器直接修改。
而该文件最总会在/etc/init.d/firewall启动的时候由UCI进行解码并且生成iptables规则生效。因此使用者不需要了解iptables即可通过配置文件实现防火墙控制。
防火墙的修改生效,需要重启防火墙执行以下指令:
root@OpenWrt:/# /etc/init.d/firewall reload
或执行:
root@OpenWrt:/# /etc/init.d/firewall restart
查看当前iptables的已启用策略语法为:
root@OpenWrt:/# 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 1
option input ACCEPT
option output ACCEPT
option forward REJECT
# Uncomment this line to disable ipv6 rules
# option disable_ipv6 1
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 wan
list network 'wan'
list network 'wan6'
option input REJECT
option output ACCEPT
option forward REJECT
option masq 1
option mtu_fix 1config zone
option name lan
list network 'lan'
option input ACCEPT
option output ACCEPT
option forward ACCEPT
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 '规则名称'
.....
config rule可选参数表:
键 值 必须设置 说明
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口的ping,举例:
config rule
option name Allow-Ping
option src wan
option proto icmp
option icmp_type echo-request
option family ipv4
option target ACCEPT
比如,我们希望WAN口可以ssh到系统,那么举例:
config rule
option name wan-ssh
option src wan
option dest_port 22
option proto tcp
option target ACCEPT
在firewall配置中有大量rule可以参考各位去学习配置方法。默认情况下的规则设置已经足够作为路由器使用。
端口转发和DMZ
端口转发是路由产品中常见的配置,它允许使用者通过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 '9020'
option dest 'lan'
option dest_ip '192.168.1.100'
option dest_port '80'
将电脑192.168.1.2设置DMZ隔离区,举例:
config redirect
option src wan
option proto all
option dest_ip 192.168.1.2
安装UPnP
UPnP是一种对等即插即用网络协议,主要用于视频,音频领域的传输协议,对使用者来说,打开UPnP之后可以增加迅雷等下载软件的下载速度。
提示:UPnP服务开机启动会消耗一点CPU和内存资源。
第一步:安装必要的包
确保你的开发板已经连入互联网,并执行以下命令:
root@OpenWrt:/# opkg update
root@OpenWrt:/# opkg install miniupnpd
第二步:配置UPnP参数
UPnP的配置参数在/etc/config/upnp当中。
config upnpd config的配置参数:
键 值 必须设置 说明
enable_natpmp 1 是 开启NAT-PMP支持,1表示开启
enable_upnp 1 是 开启UPnP支持,1表示开启
secure_mode 1 是 安全模式,客户端只能给自己转发一个输入口
log_output 0 是 日志输出级别,0表示不输出日志,如果设置了将输出到syslog中
download 数字 是 允许来自wan口的数据输入带宽,单位是(KB/秒)。
upload 数字 是 允许输出到wan口的数据输入带宽,单位是(KB/秒)。
external_iface 字符串 是 外网的设备域,默认是wan
internal_iface 字符串 是 内网的设备域,默认是lan
port 数字 是 监听的端口
upnp_lease_file 文件名 是 的upnp客户端租用记录文件
config perm_rule许可设置配置参数:
键 值 必须设置 说明
action 字符串 是 设置是否许可:allow许可,deny不许可
ext_ports 字符串 是 外部端口范围
int_addr 字符串 是 IP地址,如果是0.0.0.0/0表示全部
int_ports 字符串 是 内部端口范围
在安装UPnP的时候已经生成的/etc/config/upnp默认配置,如果要修改请使用vi或UCI对起进行修改。
第三步:设置miniupnpd开机启动
root@OpenWrt:~# /etc/init.d/miniupnpd enable
设置完毕以后,下次开机即可驻留内存,使用/etc/init.d/miniupnpd start可以临时开启一次看看。
第四步:检测是否有效开启
root@OpenWrt:~# netstat -lnp|grep miniupnpd
如果查看到监听的端口,表示开启完成。
本章到这里就结束了,下章开始,我们将了解OpenWRT作为普通路由器的其它设置部分,包括时区、SSH远程登入服务等。感谢大家的耐心学习!
最后,大家现在可以开始提问,在雷锋网(公众号:雷锋网)文章评论、公众号「宅客」:letshome、QQ群:196302618、邮箱:DIYRouter#163.com都可以提交,问题我将会在下章的时候统一解答。需要提醒下,我并不是高手,我回答问题有三个原则:1、我会的我直接回答 2、我不太会的我看着回答 3、我不会的我瞎忽悠 所以我给的答案是否正确需要大家自行判断。