共计 1614 个字符,预计需要花费 5 分钟才能阅读完成。
背景
最近一直在研究旁路监测,需要设置一个源端口镜像给两个目的端口(分别接两个监测设备),无奈 ip-com 交换机没配置明白,研究下使用软件实现暂时代替。
环境
发行版、内核、iptables 版本信息如下
[root@ted ~]# uname -a
Linux ted 3.10.0-327.el7.x86_64 #1 SMP Thu Nov 19 22:10:57 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
[root@ted ~]# cat /etc/RedHat-release
CentOS Linux release 7.2.1511 (Core)
[root@ted ~]# rpm -qi iptables
Name : iptables
Version : 1.4.21
Release : 17.el7
Architecture: x86_64
配置
部署图大致如下
办公网某主机 IP: 192.168.118.1(演示时用的 VMware 的 NAT 模式,宿主机)
监测服务器 A 网卡 eth0:192.168.118.134(演示时用的 VMware 的 NAT 模式,VM)
监测服务器 A 网卡 eth1:192.168.12.13(演示时用的 VMware 的 VMnet9,VM)
监测服务器 B 网卡 eth0:192.168.12.12(演示时用的 VMware 的 VMnet9,VM)
在监测服务器 A 上执行如下命令
查看路由设置
[root@ted ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.118.2 0.0.0.0 UG 100 0 0 eth0
192.168.12.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
192.168.118.0 0.0.0.0 255.255.255.0 U 100 0 0 eth0
所有 192.168.12.0 网段的流量都走 eth1 网卡(此网卡与服务器 B 的 eth0 直连)
配置只需一条命令
[root@ted ~]# iptables -I PREROUTING -t mangle -i eth0 -j TEE --gateway 192.168.12.12
[root@ted ~]# iptables-save
所有 eth0 的进口流量包都会被复制一份发到 192.168.12.12 上(从路由表上看出,先走 eth1 网卡,再到服务器 B 的 eth0)
使用
在服务器 A 上用 tcpdump 抓包(开两个终端)
[root@ted ~]# tcpdump -i eth0 tcp port 80 -w A-eth0.pcap
[root@ted ~]# tcpdump -i eth0 tcp port 80 -w A-eth1.pcap
在服务器 B 上用 tcpdump 抓包
[root@min-base ~]# tcpdump -i eth0 tcp port 80 -w B-eth0.pcap
在服务器 A 上开 httpd 服务器,用办公网主机访问该服务
结果
监测服务器 A、B 都得到了镜像流量。
这里为了演示,使用“办公机访问服务器 A 的 httpd 服务”代替“办公网镜像流量”,实际情况应该是服务器 A 网卡 eth0 是不配置 IP 的。
缺点
iptables-TEE 实现端口镜像会改变源 MAC、目的 MAC
TODO
这里没有实现回包镜像,我再研究研究。。。
在服务器 A 上再执行一条 iptables 规则
[root@ted ~]# iptables -I POSTROUTING -t mangle -o eth0 -j TEE --gateway 192.168.12.12
把从 eth0 出去的流量包都镜像一份发到 192.168.12.12 上就可以啦~~
更多 CentOS 相关信息见 CentOS 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=14
本文永久更新链接地址 :http://www.linuxidc.com/Linux/2017-03/141388.htm