据我所知,只有一个进程可以绑定到同一协议的端口,并且为了将传入的信息读取到端口,必须将套接字绑定到该相关端口。 有没有办法与另一个进程或类似的东西共享套接字?
答案 0 :(得分:1)
有没有办法与另一个进程或类似的东西共享套接字?
共享一个套接字,因此两个进程之间的端口是可能的(比如fork之后),但这可能不是你想要的数据分析,因为如果一个进程读取数据,另一个进程不再得到它们。
firewall / iptables如何检查已绑定端口的传入tcp流量?
像iptables这样的数据包过滤器在内核中工作,并在数据发送到套接字之前获取数据。如果有一个套接字绑定到这个特定端口甚至没有关系。除非数据包过滤器拒绝数据,否则它们将不变地转发到套接字(如果有的话)。
像snort这样的被动IDS或像tcpdump这样的工具获取原始数据包,如果有一个套接字也没关系。它们只能读取数据包,即不能修改或阻止。
应用程序级防火墙或(反向)代理具有自己的套接字并在那里接收数据(直接或由数据包过滤器重定向)。然后,他们可以分析数据,并将数据(可能在修改后)明确转发到原始应用程序。