我有一个关于使用TEE选项iptables流量镜像的问题。主要目标是将服务器A(端口1935)上的所有服务流量复制到同一端口(端口1935)上的服务器B上运行的相同服务。 例如: 如果我开始将视频流传输到192.168.0.200:1935 - 视频应该在两台服务器上(在192.168.0.201:1935和192.168.0.200:1935上)。 谷歌指向iptables -TEE选项。我尝试在Ubuntu上使用它: SERV A -192.168.0.200 SERV B -192.168.0.201
在SERV A上(192.168.0.200)我在端口1935上为传入流量添加了镜像:
root@ubuntu_200:~# iptables -t mangle -A PREROUTING -p tcp --dport 1935 -d 192.168.0.200 -j TEE --gateway 192.168.0.201
我现在在SERV B(192.168.0.201)界面上获得了所有包。
root@ubuntu_201:~# tcpdump 'tcp port 1935'
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
18:14:47.503241 IP 192.168.0.10.49984 > 192.168.0.200.1935: Flags [S], seq 3961116317, win 8192, options [mss 1460,nop,wscale 2,nop,nop,sackOK], length 0
18:14:47.503258 IP 192.168.0.10.49985 > 192.168.0.200.1935: Flags [S], seq 1849647427, win 8192, options [mss 1460,nop,wscale 2,nop,nop,sackOK], length 0
18:14:47.752702 IP 192.168.0.10.49986 > 192.168.0.200.1935: Flags [S], seq 3102326921, win 8192, options [mss 1460,nop,wscale 2,nop,nop,sackOK], length 0
18:14:47.999309 IP 192.168.0.10.49984 > 192.168.0.200.1935: Flags [S], seq 3961116317, win 8192, options [mss 1460,nop,wscale 2,nop,nop,sackOK], length 0
18:14:48.008983 IP 192.168.0.10.49985 > 192.168.0.200.1935: Flags [S], seq 1849647427, win 8192, options [mss 1460,nop,wscale 2,nop,nop,sackOK], length 0
18:14:48.253066 IP 192.168.0.10.49986 > 192.168.0.200.1935: Flags [S], seq 3102326921, win 8192, options [mss 1460,nop,wscale 2,nop,nop,sackOK], length 0
18:14:48.499660 IP 192.168.0.10.49984 > 192.168.0.200.1935: Flags [S], seq 3961116317, win 8192, options [mss 1460,nop,nop,sackOK], length 0
18:14:48.508964 IP 192.168.0.10.49985 > 192.168.0.200.1935: Flags [S], seq 1849647427, win 8192, options [mss 1460,nop,nop,sackOK], length 0
18:14:48.751863 IP 192.168.0.10.49986 > 192.168.0.200.1935: Flags [S], seq 3102326921, win 8192, options [mss 1460,nop,nop,sackOK], length 0
如您所见,我在第二台服务器接口上获得所有流量,但目标IP为SERV A(192.168.0.200)。现在我需要在1935端口将此流量路由到我的服务。我尝试在SERV B上添加规则:
iptables -t nat -A PREROUTING -p tcp --dport 1935 -d 192.168.0.200 -j DNAT --to-destination 192.168.0.201:1935
还尝试重定向和转发 - 但没有使其正常工作...... SERV B端口1935上没有视频。
有人能指出我正确的方向吗? 正如我之前提到的:我需要在端口1935上看到两个服务器上的视频流。发布仅在SERV A上,但视频应该在两者上。 任何建议都会很高兴。 谢谢。
答案 0 :(得分:4)
我认为不可能这样做。
您似乎正在使用TEE进行TCP流量。
TCP是一种有状态协议(与UDP不同),它要求用户终端计算机参与连接的每一步,并且它不适用于尝试与一台服务器通信的两个独立客户端。
一些替代方案: