我们有一台生产服务器,我们在该服务器上接收连续的 UDP 数据包流(约 15 Mbps)。我们有一个小型研究团队,他们想在另一台服务器上处理完全相同的数据包流,以用于某些研究目的。研究团队的服务器也位于同一子网中。首先,我们考虑在交换机上创建数据包流的副本,并将研究团队的服务器置于混杂模式,但 IT 团队不愿意以这种方式对交换机进行编程。因此,我们想知道是否可以在生产服务器上为研究服务器重新创建数据包流。
生产服务器足够强大,可以处理因创建重复数据包而产生的任何 CPU 负载。但是,流重建确实需要接近实时(几秒钟的延迟是可以接受的)。该服务器在 x64 处理器上运行 Debian,并拥有大量可用 RAM。
常规谷歌搜索告诉我有关 GitHub 上的 UDP samplicator。但是,我想知道是否有更简洁的方法(例如 OS 级原语/工具)来实现这一点?
答案1
感谢 Brandon Xavier 为我们指明了正确的方向。生产服务器上的命令如下:
sudo iptables -t mangle -A PREROUTING -i enp10s0 -p udp --dport 35000 -j TEE --gateway 192.168.100.8
其中 enp10s0 是接收 NIC 设备,35000 是数据包的目标端口,192.168.100.8 是研究团队服务器的 IP 地址。笔记数据包在 IP 层上按原样重新创建给另一台机器。因此,在另一台机器上,您的解析程序必须处于混杂模式才能读取它。