linux Bridge mirror port

linux Bridge是内核支持的网桥设备,可以实现简单的交换机功能。现在的需求就是想监听云平台下,云主机所有的流量。我们用的是Bridge,没有使用vswitch这种功能强大的软件设备。通过查阅资料

http://backreference.org/2014/06/17/port-mirroring-with-linux-bridges/

http://superuser.com/questions/753294/mirror-port-via-iptables

http://askubuntu.com/questions/22562/copy-all-bridge-traffic-to-a-specific-interface

有以下几种方式:

iptables

利用iptables来,编辑

mangle table specific

-j ROUTE            (explicitly route packets, valid at PREROUTING)

options:

--iface <iface_name>

--ifindex <iface_idx>

也可以直接输入命令。

iptables –I PREROUTING –t mangle –i eth0 –j TEE –gateway 192.168.200.1

iptables –I POSTROUTING –t mangle –j TEE –gateway 192.168.200.1

文档上的说明:

The TEE target will clone a packet and redirect this clone to another machine on the local network segment. In other words, the nexthop must be the target, or you will have to configure the nexthop to forward it further  if

so desired.

--gateway ipaddr

Send the cloned packet to the host reachable at the given IP address.  Use of 0.0.0.0 (for IPv4 packets) or :: (IPv6) is invalid.

To forward all incoming traffic on eth0 to an Network Layer logging box:

-t mangle -A PREROUTING -i eth0 -j TEE --gateway 2001:db8::1

目标是TEE,把数据包克隆到另外一个本地网络机器。但是需要注意到修改是的mangle表,到这一步的时候,数据包其实都已经做过snat dnat,显然已经不是云主机原来出来的包了。

tc工具

Daemonlogger

sudo daemonlogger -i <input_interface> -o <mirror_interface>

where the arguments are explained as

   -i <interface>
   Set interface to grab data from to <interface>.

   -o <interface>
   Disable logging, instead mirror  traffic  from  -i  <interface>  to  -o
   <interface>.

这个就很简单了

小实验:

在bond0上抓包

tcpdump -i bond0 -n|grep 223.5.5.5
tcpdump: WARNING: bond0: no IPv4 address assigned
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on bond0, link-type EN10MB (Ethernet), capture size 65535 bytes
10:51:01.160065 IP 10.10.82.226 > 223.5.5.5: ICMP echo request, id 15978, seq 182, length 64
10:51:01.163128 IP 223.5.5.5 > 10.10.82.226: ICMP echo reply, id 15978, seq 182, length 64
10:51:02.161217 IP 10.10.82.226 > 223.5.5.5: ICMP echo request, id 15978, seq 183, length 64

在vnet0上抓包

[email protected]:~# tcpdump -i vnet0 -n|grep 223.5.5.5
tcpdump: WARNING: vnet0: no IPv4 address assigned
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on vnet0, link-type EN10MB (Ethernet), capture size 65535 bytes
17:31:42.458344 IP 192.168.138.14 > 223.5.5.5: ICMP echo request, id 30953, seq 1, length 64
17:31:42.461327 IP 223.5.5.5 > 192.168.138.14: ICMP echo reply, id 30953, seq 1, length 64

可以发现在bridge上vlnet0出来的包都是原生的!也就是没有经过iptables上网

特别需要注意的是为什么不是直接导出bond0上的流量,是因为我们在iptables上做了snat、dnat的规则,具体的参考前面的文章。正是因为有了snat、dnat这样原来的包已经发生了变化,也就无法更具src或者dest来监视相关的云主机的流量了。

时间: 2024-10-07 06:18:31

linux Bridge mirror port的相关文章

OpenStack —— 网络进阶Linux Bridge(七)

一.配置Linux Bridge Neutron默认使用ML2作为core plugin,其配置位于/etc/neutron/neutron.conf,控制节点和计算节点都需要在各自的neutron.conf 中配置core_plugin选项. 然后需要让ML2使用linux-bridge mechanism driver,ML2的配置文件位于/etc/neutron/plugins/ml2/ml2_conf.ini. [ml2] # ... mechanism_drivers = linuxb

一个关于Linux Bridge配置的吐嘈

话说有些事情十分适合在放假前的一天折腾一天,但绝对不适合在你准备去吃饭前多看一眼...我上周就碰到了这么一件揪心的事,终于以低血糖收场.十分狼狈地四处觅食,却觅到了一包超级辣的鸡爪.吃完后感觉症状加重了.于是向邻座的同事乞讨了巧克力糖.唉...这一切起源于我在准备吃午饭前一头扎进了一个技术问题,本以为能靠配置搞定,终于却还是不得不以改动The Fxxxing code告终!事情起源于公司的一个禁令:禁止上外网! 禁止工作时间上外网,碰到问题就仅仅能拖着.多么奇葩的行政管理策略. 事实上.想在工作

Linux Bridge的IP NAT细节探析-填补又一坑的过程

前序 近日温州皮鞋厂老板正在忙着学习Linux Bridge以及诸多虚拟网卡相关的东西,老湿给了一些指导,但最根本的还要靠温州老板自己.就好像有仙灵在聆听心声,我正因为温州老板的缘故一而再再而三地怀念曾经玩转Linux Bridge,Linux Netfilter的那段痛并快乐着的时光,另外一个好玩的东西恰在此时切入. 大概有三年多没有玩Linux Bridge了,甚是想念.感谢同事给我一个Bridge方面的疑难杂症让我诊断!        凭着经验,很快搞定了问题,但是如果就此了断怕是在多年后

Netruon 理解(12):使用 Linux bridge 将 Linux network namespace 连接外网

学习 Neutron 系列文章: (1)Neutron 所实现的虚拟化网络 (2)Neutron OpenvSwitch + VLAN 虚拟网络 (3)Neutron OpenvSwitch + GRE/VxLAN 虚拟网络 (4)Neutron OVS OpenFlow 流表 和 L2 Population (5)Neutron DHCP Agent (6)Neutron L3 Agent (7)Neutron LBaas (8)Neutron Security Group (9)Neutro

Neutron 理解(14):Neutron ML2 + Linux bridge + VxLAN 组网

http://www.cnblogs.com/sammyliu/p/4985907.html 1. 基础知识 1.1 VXLAN 和 Linux 以及 Linux bridge 的关系 VXLAN 是一个新兴的SDN 标准,它定义了一种新的 overlay 网络,它主要的创造者是 VMware, Cisco 和 Arista.它被设计来消除虚拟化网络世界中的 VLAN 数目的限制.VXLAN 本身是一个多播标准,但是大多数的企业既不情愿启用多播,而且许多网络设备也不支持多播.因此,许多 VXLA

openstack queens 版本 linux bridge起不来的解决办法

报错如下:Apr 3 03:52:48 neutron neutron-linuxbridge-agent: elif tornado and tornado.gen.is_coroutine_function(f):Apr 3 03:52:48 neutron neutron-linuxbridge-agent: AttributeError: 'module' object has no attribute 'is_coroutine_function'Apr 3 03:52:48 neut

Linux : Bridge support not available: brctl not found

Getting this error message while trying to bring up your newly configured bridge interface on RHEL/CentOS Linux? You are missing "bridge-utils" package. Simply install it as followed and bring up the interface again : yum install bridge-utils NO

Linux bridge

CentOS bridge 配置: 1.创建br0配置文件  touch /etc/sysconfig/network-scripts/ifcfg-br0 2.修改bro配置文件 vi /etc/sysconfig/network-scripts/ifcfg-br0 DEVICE=br0 TYPE=Bridge BOOTPROTO=static IPADDR=0.0.0.0 ONBOOT=yes 3.添加网卡到网桥 vi /etc/sysconfig/network-scripts/ifcfg-

11、网络--Linux Bridge(网桥基础)

a. 网桥的工作原理初识 l 缓存:网桥首先会对收到的数据帧进行缓存并处理: 学习:当帧经过网桥,网桥首先在网桥表中查找帧的源MAC地址,如果该地址不在网桥表中,则将有该MAC地址及其所对应的网桥端口信息加入(逆向学习法): l 过滤:判断入帧的目标节点是否位于发送这个帧的网段中(同一端口中) ,如果是,网桥就不把帧转发到网桥的其他端口: l 转发:如果帧的目标节点位于另一个网络,网桥就将帧发往正确的网段 (向另一端口转发) : 每个桥维护了一个基于MAC地址的过滤数据库,网桥根据这个数据库,把