TEE 之后如何处理镜像(重复)的 iptables 流量?

2024-01-06

我有一个关于使用 TEE 选项 iptables 流量进行镜像的问题。主要目标是将服务器 A(端口 1935)上服务的所有流量复制到服务器 B 上同一端口(端口 1935)上运行的相同服务。 例如: 如果我开始将视频流式传输到 192.168.0.200:1935 - 视频应该位于两台服务器上(在 192.168.0.201:1935 和 192.168.0.200:1935 上)。 Google 向我指出 iptables -TEE 选项。我尝试在 Ubuntu 上使用它: 服务A -192.168.0.200 服务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 上,但视频应该在两台服务器上。 任何建议都会很高兴。 谢谢。


我认为这样是不可能的。

看来您正在使用 TEE 来处理 TCP 流量。

TCP 是一种有状态协议(与 UDP 不同),它要求用户端计算机参与连接的每个步骤,并且它不适用于尝试与一台服务器通信的两个单独的客户端。

一些替代方案:

  1. 使用 UDP 流代替(当然,您必须更改服务器、客户端和 iptable 规则)。
  2. 使用某种 TCP 代理,该代理从一侧接受 TCP 视频流(或透明地拦截它),并从另一侧针对多个客户端打开 2 个(或更多)不同的 TCP 会话。 也许这可以帮助这里:https://github.com/agnoster/duplicator https://github.com/agnoster/duplicator
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

TEE 之后如何处理镜像(重复)的 iptables 流量? 的相关文章

  • 使用 TCP 时是否需要使用校验和来保护我的消息?

    使用 TCP 作为网络协议 在通过线路发送消息之前 我会为每条消息的大小 以及可能的校验和 添加前缀 我想知道 计算和传输消息的校验和是否有意义 以确保消息将被不变地传递 如果以及何时传递 例如因为一些网络错误 目前 我在发送消息本身之前发
  • Oracle 数据库 12c 尝试连​​接时出错:网络适配器无法建立连接

    我第一次安装Oracle数据库12c 我正确地遵循了所有步骤并将其安装在 Windows 7 64 位上 但是当我单击 SQL Developer 并尝试创建新连接时 我输入了用户名和密码等信息 最后单击 测试 按钮 我得到了这个错误消息
  • Android:如何监控WiFi信号强度

    当信号强度发生变化时我会收到通知 我尝试创建以下方法并在 onCreate 中调用它 private void initializeWiFiListener Log i TAG executing initializeWiFiListene
  • SqlException超时未达到

    我们的服务器有时会抛出这个众所周知的异常 超时已过 操作完成之前超时时间已过 或者服务器未响应 当服务器处理大请求时 这种情况会在压力下发生 我做了一些研究 发现我可以改变连接字符串连接超时设置和 或SqlCommand 超时数据读取器属性
  • IPAddress.[Try]Parse 将 192.168 解析为 192.0.0.168

    我有以下场景 IPAddress ip IPAddress TryParse 192 168 out ip if ip null do something with IP 我预计解析会失败 但它被解析为 192 0 0 168 我在这里缺少
  • 为什么WebRTC需要ICE协议才能运行?

    据我了解 ICE协议用于发现从最终用户设备到 外部 的节点 设备 我不明白为什么需要它 数据包路由不是由路由器和交换机等网络设备负责吗 他们应该找到从网关到最终用户设备的最短路径 实际上 路由器会记住他们之前发现的那些路由 此外 NAT 协
  • Git在Windows中的克隆比在Linux中慢得多

    我一直在追寻 Windows 上 github 克隆速度极慢的问题 Linux kali 没有这个问题 我的下行连接速度为 100 40 megabit s 我可以获得接近 8mb s 的下载速度 没有问题 我已将电脑直接插入互联网插座 无
  • Docker 容器是否有自己的 TCP/IP 堆栈?

    我试图了解来自连接到主机的线路并定向到 Docker 容器内的应用程序的网络数据包在幕后发生了什么 如果它是一个经典的 VM 我知道到达主机的数据包将由虚拟机管理程序 例如 VMware VBox 等 传输到 VM 的虚拟 NIC 并从那里
  • Docker容器内的动态监听端口

    我有一个应用程序 在使用其默认端口建立一些连接后 开始打开 侦听 新的随机端口来处理现有连接 然后删除它们 视频通话 它还在通信协议内交换其IP地址和端口 我能够解决IP地址问题 但仍然无法找到一种方法来动态告诉主机的IPTABLES在Do
  • 如何使用 NETEM 进行 tc 过滤?

    我需要一些帮助将 netem 延迟定向到特定 IP 我已正确输入所有命令 没有错误 如附图所示 我的速度测试中没有添加任何延迟 有关更多信息 当我使用以下命令时 tc qdisc add dev eth0 root netem delay
  • 如何限制 Android 设备网络速度以进行测试

    我正在测试一个 Android 应用程序 该应用程序在低质量网络上管理其内容时遇到一些问题 我无法验证问题是否仍然存在 因为以我家的网络速度 120mb s 在我设法开始复制路线之前 所有内容都已经下载完毕 在这种情况下 不能选择使用 An
  • 慢速网络上的 MS Access 数据库:分离后端是否更快?

    我有一个 Access 数据库 其中包含有关人员的信息 员工资料和相关信息 前端有一个类似控制台的界面 一次修改一种类型的数据 例如一种形式的学位 另一种形式的联系信息 它当前链接到多个后端 一个用于每种类型的数据 一个用于基本配置文件信息
  • CDN DNS 如何工作 [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 最近 我在CDN上看到了我的介绍 http www aflexi net technology how aflexi cdn works http w
  • SO_REUSEPORT 可以在 Unix 域套接字上使用吗?

    Linux 内核 gt 3 9 允许通过设置在内核负载平衡的进程之间共享套接字SO REUSEPORT http lwn net Articles 542629 http lwn net Articles 542629 这如何用于类型的套接
  • Kubernetes,无法访问其他节点服务

    我正在 3 个带有 CentOS 7 的 VirtualBox 虚拟机 1 个 master 和 2 个 minions 中使用 Kubernetes 不幸的是安装手册说的是这样的every service will be accessib
  • 发布/订阅架构

    我尝试编写一个发布 订阅系统 客户端和服务器端 其中客户端接收定期更新 如心跳 消息控制 并可以向服务器发出命令 订阅某些源 这样做的好方法是什么 我已经有一个实现线程池的服务器来管理传入的客户端连接 我想知道如何处理连接双方都可以在 Ne
  • 如何才能将 TCP 连接返回到同一端口?

    机器是 RHEL 5 3 内核 2 6 18 有时我在 netstat 中注意到我的应用程序有连接 建立了 TCP 连接本地地址 and 国外地址是一样的 其他人也报告了同样的问题 症状与链接中描述的相同 客户端连接到本地运行的服务器的端口
  • 使用Powershell在断开的网卡上设置静态IP,可能吗?

    我需要在 Windows 10 上未连接到网络时设置网卡的 IP 地址 我试过了 Set NetIPAddress InterfaceAlias Ethernet IPAddress 192 168 5 10 PrefixLength 24
  • Docker 容器与主机网络的网络性能非常慢

    我遇到了 Docker 容器和主机网络之间网络性能缓慢的问题 我在 Docker 论坛上提出了这个问题 但到目前为止还没有收到答案 Problem 设置 同一本地网络上的两台 Mac 第一个运行 MQTT 代理 mosquitto 第二个运
  • 使用 IP 地址连接到另一台计算机

    我在计算机上安装了 NodeJS 并运行了一些测试 一切正常my机器 现在我想要一个不在同一网络中的朋友连接到我的计算机 以便 NodeJS 可以响应我朋友的请求 但我不知道 我必须在哪个IP和端口上监听 我也不知道 我必须给我的朋友哪个I

随机推荐