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、nathook:定义链挂载的基本链,如ingress、prerouting、input等policy:定义默认策略,如accept、droppriority:定义链的执行优先级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:匹配特定端口的流量accept、drop、reject、jump:流量处理动作snat、dnat:网络地址转换redirect:流量重定向
热门推荐
什么叫过敏性哮喘
世界十大最美丽可爱的捕虫植物(食虫草)
居民存款余额8年增长超一倍,意味着什么?
英国国王查尔斯患癌后首次公开亮相,重回公众视野“谨慎的第一步”?
新活素注射用重组人脑利钠肽作用机制及适应症是什么
ComfyUI中Flux插件生成xyz图表的三种方法
生物絮团养虾:甘蔗渣和米糠作为碳源的效果研究
如何有效开展项目管理
二手房契税计算方法是什么,契税的计税依据是什么
清末人物 | “大刀王五”王正谊
怎么缩小云盘空间
平面设计中图形处理与组合的三大策略
道家思想能量,以自然为师,与生命共振
桂林艺术节:山水与戏剧相遇 自然与艺术共生
关于甲流,你需要知道的都在这!
面对甲流应如何科学防治?谨遵医嘱勤洗手保持卫生!
核能制氢:高温气冷堆终极应用场景
汽车工厂能源管理4.0建设路线
竣工验收资料组检查内容详解
咖啡冲煮技术贴:萃取、浓度与冲煮比例
信息技术学科核心素养
养牛入门基础知识 新手养殖户必备的养牛基础入门知识
如何理解IGCSE经济中的生产可能性曲线
如何合理计算期货出金的手续费?这些手续费的计算方法有何特点?
C语言如何编写矩阵乘法
碳纤维行业将迎增量市场
直播切片:提高学习效率的有效工具
南宁周边游攻略:两条精选自驾路线及景点详解
黄精长什么样?带你识别各种黄精
喝酒后小便有酒味?了解背后的原因与健康提示!