OpenWrt 防火墙组件

OpenWrt 防火墙组件

OpenWrt 防火墙实现是过滤通过路由器的网络流量的机制,在高层次上,将发生以下三种结果之一:数据包被丢弃(丢弃)而不采取任何进一步行动、拒绝(对源进行适当的响应)或接受(路由到目的地)。

OpenWrt 防火墙围绕 Linux netfilter项目展开。OpenWrt 防火墙有以下主要组件:

  1. firewall3应用
  2. 内核网络堆栈中的一组 netfilter 钩子
  3. 一组处理网络数据包检查的 linux 内核模块
  4. 一组用于配置网络堆栈和防火墙模块的内核调整参数

Firewall3 (fw3)

所述fw3 是用于提供防火墙主应用程序。它是由 OpenWrt 团队专门为该项目开发的。

Kernel netfilter hooks

每个网络堆栈都在代码的特定位置嵌入了netfilter 函数调用hooks ,当网络数据包通过堆栈时,每个钩子都会被调用,来检查相应的过滤规则

netfilter 钩子代码使用NF_HOOK宏集。每个钩子都接受以下参数:

  • network protocol: unspec (all), ipv4, ipv6, arp, bridge, decnet
  • hook num: PRE_ROUTING, LOCAL_IN, FORWARD, LOCAL_OUT, POST_ROUTING
  • net structure: context for the network stack
  • socket: BSD socket used for packet
  • network packet: a socket buffer containing the network packet
  • incoming device (interface): the source of the packet
  • outgoing device (interface): the destination of the packet after routing
  • a function callback if the packet passes the filter

Kernel netfilter modules

netfilter kernel modules 在启动时根据配置加载,大约有 35 个内核模块来支持标准的 netfilter 功能,但根据路由器的要求,还有更多。例如,许多路由器使用ipset功能。这增加了大约 16 个额外的内核模块。

大多数 netfilter 模块都很小,提供单一的特定功能。例如:

  • ipt_REJECT performs REJECT (target),
  • xt_multiport performs match of the IP port (match)
  • xt_TCPMSS performs Maximum Segment Size adjustment in the TCP header (target in mangle table)

几个 netfilter 模块更大。例如:

  • nf_conntrack为伪装 ( NAT ) 和数据包碎片整理执行连接跟踪。

Kernel tuning via sysctl

/etc/init.d/sysctl 在启动时执行,它这是个shell 脚本负责加载 /etc/sysctl.conf/etc/sysctl.d/* ,这些设置/调整内核参数以提供 OpenWrt 功能。请参阅sysctl.conf

都是Documentation/networking内核源码树目录下的参数,这里不再赘述。见ip-sysctl.txtnf_conntrack-sysctl.txt供参考。

注:由于 OpenWrt 功能集是相当静态的,因此内核参数几乎不需要进行调整。

请注意,内核中的 netfilter 桥接支持已禁用!见ip-sysctl.txt

bridge-nf-call-iptables - BOOLEAN
	1 : pass bridged IPv4 traffic to iptables' chains.
	0 : disable this.
	Default: 1

Guess you like

Origin blog.csdn.net/agave7/article/details/119916005