er4*_*53r 5 linux networking network-interface
是否有可能在数据包数据到达接口之前和接收之后拦截它?例如预处理它并在途中将其送回?
我想创建一个自定义解决方案,就像这个名为 vtun 的伟大程序一样。它创建了一个充当接口的虚拟设备。这使其能够执行各种操作,例如流量压缩、加密、整形等。
我想知道现在是否可以更轻松地完成(vtun 已经很老了……)。我的目标操作系统是 Ubuntu 14.04。
是的,Linux 内核的 Netfilter 框架足够灵活,足以使这成为可能。
我不确定您所说的“自定义解决方案”和“现在是否可以更容易地完成”有何期望。我假设您准备编写代码来进行低级数据包处理。
总体思路如下:
iptables规则,将流量从所需的表 ( filter、nat、mangle) 通过目标传递到用户空间QUEUE。请记住,您将使用原始 IP 数据包、TCP 分段或 UDP 数据报(取决于您要处理的流量类型),并且您有责任正确地重新组装流量、维护数据包级别的校验和正确性以及操作系统的 TCP/IP 堆栈在幕后神奇地处理的所有其他事情。
如果您打算使用 Python 工作,我建议您使用dpkt或scapy来处理数据包或 TCP 段。这将使事情变得更加容易。