net.bridge.bridge-nf-call-iptables对Netfilter中数据包的影响

当开启时:sysctl -w net.bridge.bridge-nf-call-iptables=1

skb中存在physin和physout的接口信息,此时iptables规则可以使用-m physdev --physdev-in 和-m physdev --physdev-out去匹配物理接口。

PREROUTING-MANGLE-SSH-71: IN=br-lan0 OUT= PHY-m physdev --physdev-in=eth1
MAC=70:f1:a1:aa:bd:60:00:23:cd:9c:e7:0a:08:00 SRC=192.168.1.254 DST=192.168.1.130 LEN=92 TOS=0x00 PREC=0x00 TTL=64 ID=25901 DF PROTO=TCP SPT=55377 DPT=22 WINDOW=16395 RES=0x00 ACK PSH URGP=0

当关闭时:sysctl -w net.bridge.bridge-nf-call-iptables=0

skb中没有physin和physout的接口信息,此时iptables规则无法使用-m physdev --physdev-in 和-m physdev --physdev-out去匹配物理接口。

PREROUTING-MANGLE-SSH-71: IN=br-lan0 OUT= MAC=70:f1:a1:aa:bd:60:00:23:cd:9c:e7:0a:08:00 SRC=192.168.1.254 DST=192.168.1.130 LEN=52 TOS=0x00 PREC=0x00 TTL=64 ID=26088 DF PROTO=TCP SPT=55757 DPT=22 WINDOW=8192 RES=0x00 SYN URGP=0

其原因是:

在内核代码中net/bridge/br_netfilter.c --> br_nf_pre_routing()函数(对应Netfilter/Iptables中的PREROUTING hook之前)有一段代码用来控制2层数据是否发送到3层中:

#ifdef CONFIG_SYSCTL

if (!brnf_call_iptables)

return NF_ACCEPT;//该ACCEPT动作将该数据直接从2层转发,不经过三层处理,即该数据包skb不会经过iptables的chains(PREROUTING)处理。

#endif

skb和物理接口有关的数据结构是skb->nf_bridge,该数据结构是在net/bridge/br_netfilter.c --> br_nf_pre_routing()函数的代码nf_bridge_alloc(skb)进行分配,并在同文件下的setup_pre_routing()函数进行初始化。

-->配置该参数:

当在linux命令行执行sysctl -w net.bridge.bridge-nf-call-iptables=x命令的时候,会通过系统调用执行net/bridge/br_netfilter.c 中的brnf_sysctl_call_tables()函数将变量static int brnf_call_iptables __read_mostly = 1;设置为x值。相关结构定义如下:

{

.procname
= "bridge-nf-call-iptables",

.data = &brnf_call_iptables,

.maxlen
= sizeof(int),

.mode = 0644,

.proc_handler
= brnf_sysctl_call_tables,

},

时间: 2024-08-28 09:56:27

net.bridge.bridge-nf-call-iptables对Netfilter中数据包的影响的相关文章

iptables or netfilter

netfilter 内部有三个表:filter .nat .mangle 每个表又有不同的操作链: 1.在filter这个防火墙功能的表中有三个chain:INPUT.FORWARD.OUTPUT. 也就是对包的入.转发.出进行定义的三个过滤链 2.在nat(Network Address Translation,网络地址翻译 )表中,也有三个chain:PREROUTING POSTROUTING OUTPUT三个链 3.mangle是个自定义的表,里面包含上边的filter nat所有的ch

针对Red Hat Enterprise Linux 6.5 的防火墙详细讲解,iptables(netfilter)规则的

防火墙基础 Linux的防火墙体系主要工作在网络层,针对TCP/IP数据包实施过滤和限制,属于典型的包过滤防火墙(或网络层防火墙).基于Linux内核编码实现,具有非常稳定的性能和高效率,因此获得广泛使用. 在Linux系统中,netfilter和iptables都用来指Linux防火墙. netfilter:指的是Linux内核中实现包过滤防火墙的内部结构,不以程序或文件的形式存在,属于"内核态"(Kernel Space,又称为内核空间)的防火墙功能体系. iptables:指的是

编译内核启用iptables及netfilter

在Network Packet Filtering Framework(Netfilter)一节中还有两个额外的配置节--Core Netfilter Configuration(核心Netfilter配置)和IP:Netfilter Configuration(IP:Netfilter配置). 1. 核心Netfilter配置 核心Netfilter配置节中包含的一些重要选项都应该被启用: l    Comment match support(comment匹配支持): l    FTP su

Linux数据包路由原理、Iptables/netfilter入门学习

相关学习资料 https://www.frozentux.net/iptables-tutorial/cn/iptables-tutorial-cn-1.1.19.html http://zh.wikipedia.org/wiki/Netfilter http://www.netfilter.org/projects/iptables/ http://linux.vbird.org/linux_server/0250simple_firewall.php http://linux.vbird.o

org.jetbrains.android.uipreview.RenderingException: Failed to load the LayoutLib: com/android/layoutlib/bridge/Bridge : Unsupported major.minor version 52.0

在Android Studio使用的时候,突然发现Preview功能不能用了,报了一个错,错误如下 org.jetbrains.android.uipreview.RenderingException: Failed to load the LayoutLib: com/android/layoutlib/bridge/Bridge : Unsupported major.minor version 52.0 主要原因就是前几天Android N出来了,然后我就使用Android SDK Man

防火墙、Iptables、netfilter/iptables、NAT 概述

防火墙.Iptables.netfilter/iptables.NAT 概述 - 如果你真的想做一件事,你一定会找到方法: 如果你不想做一件事,你一定会找到借口. - ITeye技术网站 一.防火墙的简介 防火墙是指设置在不同网络或网络安全域之间的一系列部件的组合,它能增强机构内部网络的安全性.它通过访问控制机制,确定哪些内部服务允许外部访问,以及 允许哪些外部请求可以访问内部服务.它可以根据网络传输的类型决定IP包是否可以传进或传出内部网 防火墙通过审查经过的每一个数据包,判断它是否有相匹配的

IPTables 和 Netfilter 框架

前言 防火墙是保护服务器的重要工具. Linux中最常用的基本防火墙软件是iptables.iptables通过与Linux内核网络堆栈(networking stack)中的包过滤钩子(packet filtering hooks)进行交互来工作. 出入网络系统的数据包将在通过网络堆栈时会触发这些钩子.这些内核钩子称为netfilter框架. Netfilter 钩子 一个程序可以注册5个netfilter钩子. 当数据包通过网络堆栈时,将触发与被注册钩子相关的内核模块.下面介绍钩子 NF_I

iptables和netfilter

1.iptables和netfilter说明 netfilter/iptables组成Linux平台下的包过滤防火墙,iptables是用户空间的管理工具,netfilter是内核空间的包处理框架. 2.数据包处理流程 首先数据包进入PREROUTING链,之后根据路由决策进入INPUT(本机)还是FORWARD(转发),进入INPUT后会继续进入OUTPUT链,最后都走到POSTROUTING链. 另外,如果加入各种规则之后,则数据包进入某个链之后,还要顺序执行链上的规则,如果匹配某个规则,则

深入理解 iptables 和 netfilter 架构

Published at 2019-02-18 | Last Update 译者序 本文翻译自 2015 年的一篇英文博客 A Deep Dive into Iptables and Netfilter Architecture . 这篇对 iptables 和 netfilter 的设计和原理介绍比较全面,美中不足的是没有那张 内核协议栈各 hook 点位置和 iptables 规则优先级的经典配图,这里补充如下(来自 Wikipedia ): 另外,本文只讲理论,而下面这篇则侧重实战(基于