问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

OpenWrt防火墙分析及Nftables配置方法详解

创作时间:
作者:
@小白创作中心

OpenWrt防火墙分析及Nftables配置方法详解

引用
CSDN
1.
https://m.blog.csdn.net/weixin_39580537/article/details/141056845

OpenWrt是一个基于Linux的嵌入式操作系统,主要用于路由器等网络设备。Nftables是Linux内核中用于包过滤、网络地址转换(NAT)和包标记的框架,是iptables的继任者。本文将详细介绍OpenWrt防火墙的配置方法以及Nftables的具体使用。

一、OpenWrt原生页面

OpenWrt的防火墙配置可以通过Web界面进行,但更推荐使用命令行方式进行配置,以便于自动化和版本控制。

二、配置文件

OpenWrt的防火墙配置文件位于/etc/config/firewall,主要包含以下几个部分:

defaults

这部分定义了全局的防火墙设置,例如SYN洪水攻击保护、默认的输入、输出和转发策略等。

config defaults
    option syn_flood '1'
    option input 'ACCEPT'
    option output 'ACCEPT'
    option forward 'REJECT'

zone

安全域(zone)是防火墙配置中的一个重要概念,用于划分不同的网络区域。每个安全域可以包含一个或多个接口,并定义了流量的处理规则。

forwarding

转发配置节用于控制不同安全域之间的数据流量。例如,可以设置最大分片大小(MSS)或启用连接跟踪。

rule

规则部分用于定义具体的接受、丢弃或拒绝规则。规则可以基于源地址、目的地址、端口等条件进行匹配。

include

include部分用于包含自定义的防火墙规则。这允许用户添加更复杂的iptables规则或流量整形所需的tc命令。

三、配置生效流程

总流程

OpenWrt在初始化时会加载/etc/config目录下的所有配置文件,并对这些文件进行MD5校验。配置文件的更改会触发/sbin/reload_config脚本,该脚本会通过ubus总线通知procd进程重新加载防火墙配置。

procd初始化注册config.change事件流程

procd进程在初始化时会注册一个service事件处理函数,用于处理配置更改事件。当检测到配置文件发生变化时,会调用/etc/init.d/firewall reload命令重新加载防火墙配置。

四、Nftables

ruleset层级操作常用命令

  • 显示所有family的所有rule规则:nft list ruleset
  • 显示某个集合的所有规则:nft list ruleset <family>
  • 清除所有集合的所有规则:nft flush ruleset
  • 备份规则到文件:nft list ruleset >> backup.nft
  • 从文件恢复规则:nft -f backup.nft

表table

  • 添加表格:nft add table [family] <table_name>
  • 显示表格:nft list tables
  • 删除表格:nft delete table [family] <table_name>

Family集合

  • ip:监听IPv4流量
  • ip6:监听IPv6流量
  • inet:同时监听IPv4和IPv6流量
  • arp:监听ARP-level地址解析流量
  • bridge:监听桥接流量
  • netdev:监听特定网卡流量

链chain

常用命令

  • 建立基本链:nft add chain [<family>] <table_name> <chain_name> { type <type> hook priority <value> \; [policy <policy> \;] [comment “text comment” \;]}
  • 清空链:nft flush chain [family] <table_name> <chain_name>
  • 删除链:nft delete chain [family] <table_name> <chain_name>

参数解析

  • type:指定链的类型,如filter、route、nat
  • hook:定义链挂载的基本链,如ingress、prerouting、input等
  • policy:定义默认策略,如accept、drop
  • priority:定义链的执行优先级
  • comment:添加注释

规则rule

常用命令

  • 添加规则:nft add rule <family> <table_name> <chain_name> <...>
  • 显示规则:nft -n -a list table <family> <table_name>
  • 插入规则:nft insert rule <family> <table_name> <chain_name> position <handle_num> <...>
  • 替换规则:nft replace rule <family> <table_name> <chain_name> handle <handle_num> <...>
  • 删除规则:nft delete rule <family> <table_name> <chain_name> handle <handle_num>

参数解析

  • counter:流量统计
  • masquerade:源地址自动设置为出口地址
  • meta:通过meta选择器进行流量匹配或设置
  • ip {saddr | daddr}:匹配IPv4的源地址或目标地址
  • icmp type:匹配ICMP流量
  • ip protocol:匹配IP协议
  • meta l4proto:匹配L4协议
  • tcp dport:匹配特定端口的流量
  • acceptdroprejectjump:流量处理动作
  • snatdnat:网络地址转换
  • redirect:流量重定向
© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号
OpenWrt防火墙分析及Nftables配置方法详解