非管理网络相关工具

非管理网络相关工具

我知道有一些工具可以检查数据包(例如wireshark)或模拟延迟/数据包丢失(例如netem),但它们似乎都需要管理权限来检查/修改数据包。

我正在寻找可以拦截单个应用程序的数据包并可供标准(非根)用户使用的东西。

我想要某种valgrind网络工具,您可以使用它来包装您的应用程序,并拦截网络请求以检查/修改它们。

我的主要用例是使学生能够以简单的方式在大学计算机上使用此类工具(即不需要虚拟机或管理员的支持)。

这样的工具存在吗?否则,是什么阻止它们实际存在呢?

注意:诸如 之类的工具setcap需要由系统管理员进行配置,并且可能会授予用户过多的权力(例如检查每个数据包,而不仅仅是其应用程序生成的数据包),因此不适合。

编辑: 好的,经过一番研究,我发现了LD_PRELOAD技巧,它可以用作穷人的包装器来拦截特定的库函数(例如connectsendto等)并计数/修改数据包。显然,基于此的免root工具之所以没有那么多,是因为:

  • 它对于安全目的没有用(它很容易被绕过),并且
  • 无论如何,大多数人在使用网络进行有用的事情时已经需要root访问权限,因此除了为学习量身定制的非常具体的应用程序之外,没有真正的需求。

但这在技术上是可行的,如果有好奇的学生愿意自己开发这样的应用程序的话。

另一种技术是编写 valgrind 插件来处理此问题并使用 valgrind 运行程序。但这似乎太过分了,所以没有理智的人这样做过。

有比我更有见识的人可以证实我之前的说法是否正确吗?

答案1

假设您想要查看 TCP/IP 数据包,简短的答案是您必须具有 root 访问权限才能检查数据包,因为实际的数据包是由内核而不是应用程序生成的。

相关内容