有人知道一种简单的方法来要求Linux“显示来自/来自google chrome的每个互联网数据包”或“显示来自/来自PID 10275的telnet进程的每个互联网数据包”吗?
telnet 示例不太有用,因为我只能使用wireshark 或tcpdump 来查看涉及端口23 的所有TCP 对话。这样就没有人再使用telnet 了。但是,嗅探往返于使用多个端口的复杂应用程序的所有数据包似乎是一件有用的事情。
我找到了一些相关的答案,探索不同的方法来确认端口和 PID(或程序名称)等,但没有关于数据包的内容
- 如何在不使用 lsof 或 netstat 的情况下将网络连接与 PID 绑定? https://stackoverflow.com/questions/838317/how-to-tie-a-network-connection-to-a-pid-without-using-lsof-or-netstat
- 如何获取与打开它们的应用程序关联的端口? https://stackoverflow.com/questions/3306138/how-i-can-get-ports-assosiated-to-aplication-that-oppened-them/3308198
- 如何像“netstat -p”一样但更快? https://stackoverflow.com/questions/4056850/how-to-do-like-netstat-p-but-faster/4057150
看起来不久前有人可能愿意为这个答案付费:
- http://www.freelancer.com/projects/Perl-CGI-C-C/tcpdump-PID-relation.html http://www.freelancer.com/projects/Perl-CGI-C-C/tcpdump-PID-relation.html
NetHogs http://nethogs.sourceforge.net/对于快速查看哪些程序正在通过接口创建流量非常有用,但它没有捕获数据包的方法。
不是直接的 tcpdump,但可以为您提供有关网络流量的信息,请检查https://bytefreaks.net/gnulinux/how-to-capture-all-network-traffic-of-a-single-process https://bytefreaks.net/gnulinux/how-to-capture-all-network-traffic-of-a-single-process
strace -f -e trace=network -s 10000 <PROCESS WITH ARGUMENTS>;
如果进程已经启动并且您知道其 PID,则可以使用以下命令
1
strace -f -e trace=network -s 10000 -p <PID>;
另一种选择更复杂,使用网络命名空间,检查上面的链接或使用该工具nsntrace https://github.com/jonasdn/nsntrace,但两者都只能在新进程上工作,不能更改现有进程网络命名空间(AFAIK)
更新:
您还可以安装工具 bpfcc-tools (搜索您的发行版,许多发行版已经包含它)并使用命令sudo tcptracer-bpfcc -v -p (PID)
虽然这不会显示数据包,但它会列出该 pid 的网络连接。您可以删除-p (PID)
列出每个进程的所有连接。这对于那些跟踪短实时连接而不是网络负载的人来说可能很有用。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)