Linux 内核 ebtables bridge netfilter源代码分析求助

轮子学长 2014-12-18 04:19:06

在linux内核代码net/bridge/中发现文件夹netfilter,里面有如下文件。最近发现一个项目修改了其内容,谁能帮忙解释下这个目录有什么功能,最好能给些参考资料~~


ebt_802_3.c ebtable_nat.c ebt_arp.c ebt_ip6.c ebt_log.c ebt_nflog.c ebt_snat.c ebt_vlan.c
ebtable_broute.c ebtables.c ebt_arpreply.c ebt_ip.c ebt_mark.c ebt_pkttype.c ebt_stp.c Kconfig
ebtable_filter.c ebt_among.c ebt_dnat.c ebt_limit.c ebt_mark_m.c ebt_redirect.c ebt_ulog.c Makefile
...全文
1204 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
weimutouren 2015-09-29
  • 打赏
  • 举报
回复
引用 6 楼 zhangjing_bit 的回复:
在这碰到对iptables很熟悉的大侠,借问一下,广播帧可以过netfilter吗?iptables中的规则是否可对广播帧起作用,谢谢。
当然可以!
轮子学长 2014-12-26
  • 打赏
  • 举报
回复
引用 5 楼 ssjmhyvi 的回复:
讲个实例... 路由器lan口eth0跟无线虚拟接口ath0都在桥br0下,想实现在br0之上通过netfilter区分ath0与eth0流量,并对ath0接口的http请求做一个hijack动作,并redirect到某个网站上去.... 实现方法多种多样了..就讲一种用到ebtables跟iptables的. 先用ebtables对ath0上面的所有skb都打一个mark(broute表上,具体命令google下).这里就主要用到了ebt_mark.c等文件了。 然后再加一条iptables规则,match部份过滤ath0上所有http请求并且skb->mark跟ebtables上面设置一致的包,target部份就是做具体的redirect部份动作了..... 至于kernel里面对skb打mark的入口点自然就是handle_bridge函数了. 其实这个是为了实现一个facebook wifi功能....
有没有一些ebtables讲解的材料
zhangjing_bit 2014-12-21
  • 打赏
  • 举报
回复
在这碰到对iptables很熟悉的大侠,借问一下,广播帧可以过netfilter吗?iptables中的规则是否可对广播帧起作用,谢谢。
nfme 2014-12-20
  • 打赏
  • 举报
回复
讲个实例... 路由器lan口eth0跟无线虚拟接口ath0都在桥br0下,想实现在br0之上通过netfilter区分ath0与eth0流量,并对ath0接口的http请求做一个hijack动作,并redirect到某个网站上去.... 实现方法多种多样了..就讲一种用到ebtables跟iptables的. 先用ebtables对ath0上面的所有skb都打一个mark(broute表上,具体命令google下).这里就主要用到了ebt_mark.c等文件了。 然后再加一条iptables规则,match部份过滤ath0上所有http请求并且skb->mark跟ebtables上面设置一致的包,target部份就是做具体的redirect部份动作了..... 至于kernel里面对skb打mark的入口点自然就是handle_bridge函数了. 其实这个是为了实现一个facebook wifi功能....
奔跑的路 2014-12-19
  • 打赏
  • 举报
回复
引用 3 楼 hnwyllmm 的回复:
[quote=引用 2 楼 lee244868149 的回复:] ........................ 4.桥接方式的处理流程 当数据帧进入Linux网桥后,先通过Ebtables的BROUTING链和PREROUTING链;接下来,经过Iptables的PREROUTING链,这时还是在数据链路层,而不是在Iptables通常起作用的网络层,这就是br_nf帮助数据帧在数据链路层可以经过Iptables链的作用;然后,经过Ebtables的FORWARD链和Iptables的FORWARD链;最后,先后经过Ebtables和Iptables的POSTROUTING链。
这位大神有没有这些资料的链接,让我们学习下[/quote] http://man.chinaunix.net/network/iptables-tutorial-cn-1.1.19.html#IMPLICITMATCHES http://bbs.chinaunix.net/thread-2198016-1-1.html http://bbs.chinaunix.net/thread-2038522-1-1.html http://www.shorewall.net/index.html http://wenku.baidu.com/link?url=Obb8WQPoZfUj7OcwYoCCMXG7mze4ji2axy7_6SnBPBdA8o4UOFGbXJvf-rHPkBml2ITTZPv2vEeXztKblxp67nH5a4vpEdcmZ8HeHoiTrD7 http://blog.chinaunix.net/uid-25237671-id-4319418.html (这个系列从内核角度讲的很详细,推荐) http://blog.csdn.net/ixidof/article/details/5764946 这些链接讲iptables的比较多,挑netfilter的部分看就好了,ebtables是基于链路mac地址的包处理,iptables是基于ip和端口号协议等信息进行的包处理,netfilter是内核的一个框架,将两者结合在一起,使用注册的钩子函数,结合起来对包进行过滤,丢包,修改,转发等处理。
羽飞 2014-12-19
  • 打赏
  • 举报
回复
引用 2 楼 lee244868149 的回复:
........................ 4.桥接方式的处理流程 当数据帧进入Linux网桥后,先通过Ebtables的BROUTING链和PREROUTING链;接下来,经过Iptables的PREROUTING链,这时还是在数据链路层,而不是在Iptables通常起作用的网络层,这就是br_nf帮助数据帧在数据链路层可以经过Iptables链的作用;然后,经过Ebtables的FORWARD链和Iptables的FORWARD链;最后,先后经过Ebtables和Iptables的POSTROUTING链。
这位大神有没有这些资料的链接,让我们学习下
奔跑的路 2014-12-19
  • 打赏
  • 举报
回复


1.数据帧进入数据链路层,首先经过BROURING链的Broute处理,决定是直接路由该数据帧还是让它进入到PREROUTING链
2.如果数据帧的目的地址和源地址在同一个网段,网桥会屏蔽它;如果数据帧是多播帧或广播帧,则要在同一网段中除了接收端口以外的其他端口发送这个数据帧。
3..接下来,数据帧到达PREROUTING链后可以改变目的MAC地址(DNAT);当数据帧通过PREROUTING链后,Ebtables将会根据该数据帧的目的MAC地址决定是否转发该帧,如果这个帧的目的MAC是本机的,就会进入到INPUT链,在这个链中,可以过滤进入本机的数据帧,通过INPUT链后,就到达网络层,数据帧变成数据包;如果数据帧的目的MAC不是本机的,它进入FORWARD链,FORWARD链将过滤 数据帧;然后这个数据帧就会到达POSTROUTING链,在这里可以改变数据帧的源MAC地址(SNAT)。由本机产生的帧,首先判断是否需要Bridging,如果不需要则进行直接路由;如果需要就会进入到OUTPUT链中,以对数据帧改变目的MAC地址(DNAT)和过滤,接下来这个帧到达POSTROUTING链,这个链可以改变数据帧的源MAC地址(SNAT);最后,这个帧就到达了NIC。  
4.桥接方式的处理流程 当数据帧进入Linux网桥后,先通过Ebtables的BROUTING链和PREROUTING链;接下来,经过Iptables的PREROUTING链,这时还是在数据链路层,而不是在Iptables通常起作用的网络层,这就是br_nf帮助数据帧在数据链路层可以经过Iptables链的作用;然后,经过Ebtables的FORWARD链和Iptables的FORWARD链;最后,先后经过Ebtables和Iptables的POSTROUTING链。
羽飞 2014-12-18
  • 打赏
  • 举报
回复
不懂这个,呵呵,不过看着很像这个: http://blog.csdn.net/zhaihaifei/article/details/38585279

4,436

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 内核源代码研究区
社区管理员
  • 内核源代码研究区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧