【发布时间】:2013-03-15 02:02:39
【问题描述】:
我想转储特定应用程序的所有网络数据包(IP 数据包),然后丢弃它们(就像一个哑 NIC),这样实际上没有数据包通过 NIC。所有这些都是在没有应用程序意识的情况下完成的。 (这意味着应用程序认为包发送成功,但实际上它们被丢弃了。)
我这样做是为了可以将转储的数据发送到另一台机器并重新发送这些包,只需稍作修改。
平台是Linux,我认为必须有一些不错的方法来做到这一点,例如使用iptables、netfilter 或tap/tun。问题是倾倒和丢弃应该只针对一个应用程序进行。在这种情况下如何设置规则?
最后的方法是修改内核并添加一些接口供应用程序调用。我希望这不是唯一的方法。
【问题讨论】:
-
您可以通过 LD_PRELOAD 技术或 ptrace 拦截系统调用 send/recv。 iptables 或 pcap 不捕获进程信息。
-
不能用netfilter过滤特定的进程,但是可以过滤特定的用户。见unix.stackexchange.com/questions/68956/…,unix.stackexchange.com/questions/12499/…
-
谢谢雍正和吉尔斯 :)
标签: linux networking tcp iptables