Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 内核内数据包从一个端口转发到多个端口_Linux_Port_Iptables_Forwarding_Splice - Fatal编程技术网

Linux 内核内数据包从一个端口转发到多个端口

Linux 内核内数据包从一个端口转发到多个端口,linux,port,iptables,forwarding,splice,Linux,Port,Iptables,Forwarding,Splice,在基于Linux的系统上,我需要TCP端口上传入的数据自动重定向到其他50个本地端口,而无需通过用户空间的send/recv。每个端口都需要接收所有传入流量的副本。所有端口都是同一台机器的本地端口 由于一个端点是一个文件的限制,我已经放弃了splicesyscall。我想,iptables是用于此目的的正确工具,但我无法找到用于此目的的正确语法。它应该类似于: iptables -t nat -A PREROUTING -p tcp --dport <in_port> -j REDI

在基于Linux的系统上,我需要TCP端口上传入的数据自动重定向到其他50个本地端口,而无需通过用户空间的send/recv。每个端口都需要接收所有传入流量的副本。所有端口都是同一台机器的本地端口

由于一个端点是一个文件的限制,我已经放弃了
splice
syscall。我想,
iptables
是用于此目的的正确工具,但我无法找到用于此目的的正确语法。它应该类似于:

iptables -t nat -A PREROUTING -p tcp --dport <in_port> -j REDIRECT --to-ports <out_port1>-<out_port50>
iptables-t nat-A预路由-p tcp-dport-j重定向-到端口-

例如,我想知道是否需要选项
-m multiport

我的第一个猜测是使用iptables
TEE
target,但是。我想我应该使用
——match multiport
…嗯。。。实际上,使用
TEE
来破坏目标端口可能会起作用,但是为端点使用常规TCP套接字(而不是原始套接字)可能不会起作用。我认为您无法为此编写用户空间应用程序。您可以使用
tee
man2tee
)系统调用。你看到了吗?是的。不幸的是,
splice
在TCP套接字上工作,但另一个端点不能是套接字(例如,它必须是文件/管道)。