用iptables做端口镜像(复制报文)

最近调试一个功能需要用到端口镜像技术,将一个网卡上经过的报文复制到另一个网卡上。试用了几个方法,发现iptables TEE不错。因为iptables能够指定各种规则,只复制需要的报文。这里介绍一下TEE的编译和使用。


操作系统是CentOS 6.3,64位(内核版本2.6.32-279),iptables版本是自带的v1.4.7。


首先去下载页面:

http://sourceforge.net/projects/xtables-addons/files/Xtables-addons/1.47/

下载xtables-addons-1.47.1.tar.xz。不要下载2.x版本,因为我发现2.4版本没有TEE模块,奇怪。


编译之前需要安装iptables-devel。

tar xvf xtables-addons-1.47.1.tar.xz
cd xtables-addons-1.47.1
./configure
先不要编译,打开当前目录下的mconfig文件,看看TEE模块是否配置上。没有的话,按如下修改:
build_TEE=m

好了,开始编译安装:

make && make install


我们的调试机器上有两块网卡,eth0和eth1,eth0是局域网,eth1能够上互联网。现在我们要把经过eth1的上网报文通过eth0镜像到另一个监控机器上(192.168.2.55):

iptables -A INPUT -i eth1 -p tcp -m tcp --sport 80 -j TEE --gateway 192.168.2.55
iptables -A OUTPUT -o eth1 -p tcp -m tcp --dport 80 -j TEE --gateway 192.168.2.55

一切正常的话,在192.168.2.55上面就能抓到镜像出来的报文了。需要注意的是,192.168.2.55这台机器上最好关闭forward功能,不然可能对局域网造成奇怪的影响,呵呵。

你可能感兴趣的:(用iptables做端口镜像(复制报文))