最近一直在研究旁路監測,須要設置一個源端口鏡像給兩個目的端口(分別接兩個監測設備),無奈ip-com交換機沒配置明白,研究下使用軟件實現暫時代替。服務器
發行版、內核、iptables版本信息以下tcp
[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
部署圖大體以下spa
辦公網某主機IP: 192.168.118.1(演示時用的VMware的NAT模式,宿主機)code
監測服務器A網卡eth0:192.168.118.134(演示時用的VMware的NAT模式,VM)blog
監測服務器A網卡eth1:192.168.12.13(演示時用的VMware的VMnet9,VM)ip
監測服務器B網卡eth0:192.168.12.12(演示時用的VMware的VMnet9,VM)路由
在監測服務器A上執行以下命令部署
查看路由設置it
[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直連)io
配置只需一條命令
[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上就能夠啦~~
哪位大神有更好的方案還請指點~