当前位置 博文首页 > 想要去旅行:OpenWrt 防火墙组件

    想要去旅行:OpenWrt 防火墙组件

    作者:[db:作者] 时间:2021-08-31 15:52

    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
    
    cs