iptables & physdev-is-in & physdev-is-out -- net.bridge.bridge-nf-call-iptables对Netfilter中数据包的影响
来源:互联网 发布:ammo.js 编辑:程序博客网 时间:2024/06/05 12:46
http://blog.csdn.net/zxygww/article/details/45028731
当开启时: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=eth1MAC=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,
},
- iptables & physdev-is-in & physdev-is-out -- net.bridge.bridge-nf-call-iptables对Netfilter中数据包的影响
- iptables的physdev配置说明 --physdev-in --physdev-out --physdev-is-in --physdev-is-out
- net.bridge.bridge-nf-call-iptables对Netfilter中数据包的影响
- bridge-nf-call-iptables
- net.bridge.bridge-nf-call-iptables=1
- Docker容器启动报WARNING: IPv4 forwarding is disabled.bridge-nf-call-iptables is disabled
- docker1.8.2 在centos7 中docker info报错docker bridge-nf-call-iptables is disabled解决办法
- iptables支持physdev参数
- docker安装完成后碰到如下警告:bridge-nf-call-iptables is disabled
- 关于bridge-nf-call-iptables的设计问题
- Kernel Source片段 -- bridge-nf-call-iptables的处理
- 关于bridge-nf-call-iptables的设计问题
- sysctl -p net.bridge.bridge-nf-call-ip6tables" is an unknown key 问题的解决。。
- 执行sysctl -p时报net.bridge.bridge-nf-call-ip6tables is an unknown key错误的解决
- linux sysctl -p 报error: "net.bridge.bridge-nf-call-ip6tables" is an unknown key
- linux sysctl -p 报error: "net.bridge.bridge-nf-call-ip6tables" is an unknown key
- linux sysctl -p 报error: "net.bridge.bridge-nf-call-ip6tables" is an unknown key
- linux sysctl -p 报error: "net.bridge.bridge-nf-call-ip6tables" is an unknown key
- ARP协议
- [2017/07/12]后台检查cpu性能常用命令
- Java多线程____wait(), notify(), notifyAll()等方法介绍
- row_number() over(partition by a order by b desc) 用法
- 电话号码正则表达式
- iptables & physdev-is-in & physdev-is-out -- net.bridge.bridge-nf-call-iptables对Netfilter中数据包的影响
- 华为软件开发云发布管理测评报告
- word2vec简要教程
- POJ 3179 Corral the Cows 笔记
- 51nod 1962 区间计数
- 解决按Home键后再点击icon图标程序重新启动问题
- 面向对象程序设计六大原则-里氏替换原则
- Ubuntu 在更改错误路径之后,导致终端命令行失效
- DevOps工程师成长秘籍