【硬创邦】跟hoowa学做智能路由(八):防火墙/DMZ/UPNP

  

  在上一章,我们已经介绍了关于网络部分的配置,今天这章我们将深入介OpenWRT下的防火墙类功能。

在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 1

config 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、我不会的我瞎忽悠 所以我给的答案是否正确需要大家自行判断。

  

 

  本文作者:孙冰

本文转自雷锋网禁止二次转载,原文链接

时间: 2024-11-02 08:04:12

【硬创邦】跟hoowa学做智能路由(八):防火墙/DMZ/UPNP的相关文章

【硬创邦】跟hoowa学做智能路由(三):选择合适的设备

  选板子最纠结.随便上淘宝搜索,有一堆乱七八糟的板子,但是这些板子确大部分都不支持官方OpenWRT,很多都是一些行内人Patch出来之后的成果,所以搭建起来很麻烦. 认识基本的电路 我们先说说,认识基本的电路,不论路由器有多大变化,他一定遵循一个原则"CPU里带的不外挂芯片,CPU里不带的外挂芯片".对于软件开发者,我们不需要对整个电路十分熟悉或了解.我们只需要了解大概意思即可. CPU 一般路由器的电路板,CPU都设计在中间位置,旁边有一颗晶振.目前主流的路由器CPU基本采用BG

【硬创邦】跟hoowa学做智能路由(二):从芯片开始

  上一章我们讲了这次DIY活动的来龙去脉,本章我们将一起了解下路由器的架构,芯片,操作系统相关的知识.我们的目标是让大家都能做智能路由,所以hoowa会尽可能少涉及到嵌入式的知识,因为这孩子本身学习就不好,他自己也害怕那些所谓的各种"定义"会让他联想到上学的时候理科从来都不及格. 嵌入式的架构定义 略.刚说了不讲这些的,就算我给大家讲了我也是从别的书里抄过来的,有意义么,我一定讲我自己的.谢谢鼓掌!!! MIPS处理器架构 现在的路由器基本架构和性能已经非常接近于我们的电脑了.近十年

【硬创邦】跟hoowa学做智能路由(十一):实现网络存储与文件共享

     本章将介绍使用Samba实现Windows网上邻居以及使用FTP两种方式进行文件共享,这样你就可以把经常使用和需要交换的文件存放于你的智能路由存储器里了. 文件共享和传输的协议有很多种,但是hoowa为了让大家使用最常用的,hoowa选择了介绍Windows文件共享服务器和FTP文件传输服务器的实现方法.Windows文件共享服务器更适合局域网内部进行文件共享管理,简单方便容易.FTP文件服务器适合局域网及公网远程文件共享服务. 选择存储器 还记得我们之前讲解过如何加载外部存储器吗?

【硬创邦】跟hoowa学做智能路由(六):系统基础配置

     在这一章当中,我们将介绍在OpenWRT系统下的编辑和配置的基础指令和操作知识,因为后续的章节主要用于介绍如何配置路由的相关功能,在配置的操作时我们需要掌握编辑和处理的方法. 本章中,编辑和配置的基础方法我们分为三种,三种方式都可以操作成功.分别为: 使用VI编辑器: 适合教学时直接修改配置文件. 使用UCI进行编辑: 适合教学时使用,更适合用于自己开发的第三方程序修改配置文件. 使用SCP下载到本地编辑: 适合教学和系统的测试,文件通过SCP工具下载到本地修改,完成后再上传到服务器上

【硬创邦】跟hoowa学做智能路由(七):路由联网

  这一章hoowa将向各位介绍OpenWRT下基本路由功能的配置方法,通过本章学习大家将了解如何设置OpenWRT来使路由连接网络,讲解将通过命令行模式. 在系列教程中,hoowa不会教大家使用LUCI系统,LUCI是一个OpenWRT下的后台管理界面,界面较繁冗.本教程是面向广大Linux工程师和开发人员的教程,我们所针对的人员主要是有能力自己开发出比LUCI更强大的产品,后续的Area 4里我将教大家怎么搭建自己的WEB开发平台,用x86上常用的语言可以完全开发一个比LUCI更好用的界面.

【硬创邦】跟hoowa学做智能路由(十):扩充RAM和FLASH

  前几篇好多人都说路由器的内存太小了,FLASH太小了怎么办.那我们这章就介绍下怎么给路由器扩充内存和存储器. 站在玩家兴趣身份上来说,这章的内容会让以后更精彩,操作技术上也存在一些难度,请大家认真操作一次. 实现原理 在M150开发板上我们拥有3个USB接口以及1个TF卡接口,这些接口足够我们连接各种外部存储设备. 使用Linux的SWAP技术(交换内存分区技术,类似Windows虚拟内存)还可以让外部存储设备承担一部分内存工作,慢是慢了点,但是聊胜于无啊. 至于扩展Flash的容量,我们有

【硬创邦】跟hoowa学做智能路由(十三):网络音箱之Android篇

        我们继续网络音箱的专题,这章将介绍安卓系统下的MP标准软件控制路由器播放音乐. 什么是MP MP全称为音乐播放进程(Music Player Daemon).它是一个可定制化功能强大的服务端播放音乐软件,通过其自身的插件和库系统即可完成通过网络控制播放音乐.MP具备一个自己的控制管理协议,这些协议是基于TCP协议进行传输的.客户端连接到服务器上控制服务端进行处理.MPD表示服务端,MPC表示客户端. MP是一个完全开放源代码的整体系统,因此有很多操作系统下的客户端,在安卓手机中即

【硬创邦】跟hoowa学做智能路由(十二):网络音箱之声卡驱动

  题记:忽闻水上琵琶声,主人忘归客不发.转轴拨弦三两声,未成曲调先有情. 对于大多数年轻的女性来说,她们最关心的是生活和自己的男人.男人应该更多的关系自己身边的女人,人生是苦比乐多的,因此要乐观的面对自己好好的对家人.尤其是IT男们,不要因为只顾自娱自乐的这种自私而忽略了身边人.为什么不为你的女朋友准备一台网络音箱?在她繁忙工作下班回来,可以一边开心的听音乐一边给你烧菜呢? 从这章开始我们将花费一些时间介绍下使用路由器实现网络音箱的功能,这些功能都有一个特点"只需要软件包修改和配置"

系统才是智能路由角逐的战场

摘要: 路由器 以前是一个默默工作的幕后英雄,因其具有家庭网络枢纽的特性,慢慢被戴上了智能的帽子,被各大互联网大佬在互联网思维的改造下,推到了幕前,成为镁光灯下面的新宠儿, 路由器 以前是一个默默工作的幕后英雄,因其具有家庭网络枢纽的特性,慢慢被戴上了智能的帽子,被各大互联网大佬在互联网思维的改造下,推到了幕前,成为镁光灯下面的新宠儿,带着智能家居的愿景和革新,智能路由试图影响每一个互联网参与者,奋力的刷出存在感. 我们身边每天都充斥着最新鲜劲爆的消息,某某互联网巨头又要在智能路由这盘旗上铺下筹