澄清在Linux内核的Netfilter部分深度包检测

Linux内核提供Netfilter作为NAT和防火墙function的机制。 这两种function都需要对传入数据包进行分析和分类,这被称为“状态数据包检测”。

对于大多数stream量来说,查看IP数据包头是足够的。 但是,像FTP,IRC,H.323(以及更多)的协议在内核configuration中都有特定的模块,以便为这些数据包提供正确的NAT穿越。 在内核中,这些被称为“conntrack模块”。

现在,我的理解是检查这些数据包的有效负载,以便netfilter能够识别外部连接何时到达并需要路由到相应的客户端。 这是因为协议期望在OSI层7上发送的信息直接影响在第3层上发送的实际IP分组。换句话说,应用程序代码导致创build另一个TCP连接,该连接必须由NAT设备。

现在我的问题:

  • 为什么这个地方没有(好吧,我只是做了一个快速的谷歌search)标签为深度包检测?
  • 鉴于在GNU / Linux上运行的大量塑料路由器设备,在深度包检测被认为是非法的地区,这可能是一个合法的问题吗? 想到有关networking中立性和stream量机密性的可能的规定,可能会影响networking服务提供商,他们希望为客户提供更好的服务,并且需要在特定的环境中使用NAT。