🖧如何在Linux系统上监视网络活动

有许多原因可能导致您想要监视Linux系统上的网络活动。

您可以对网络进行故障排除,可以检查是否会创建可疑网络活动的恶意应用程序等。

无论出于何种原因,下面我们将探讨几种方法来找出系统中哪些进程与网络活动有关以及与谁进行通信。

网络统计

Netstat是一个功能强大的实用程序,可以显示网络连接,路由表,接口统计信息,伪装连接等。

我们将使用它来实现本指南的目标。

安装Netstat

在Debian和基于Debian的系统(如Ubuntu)上使用apt。

# apt install net-tools

在基于Red Hat Enterprise Linux和Red Hat的系统上,请使用yum,

# yum install net-tools

在基于Arch的系统上,请使用pacman。

# pacman -S net-tools

查看网络进程

首先,让我们看一下这些过程。

为此,请输入以下命令:

$ sudo netstat -tulpen

在此命令中,t显示TCP连接,u显示UDP连接,l仅显示侦听套接字,p显示连接所属的程序,e显示扩展信息,n显示数字,地址和用户。 考虑到大多数联网软件所基于的客户端-服务器模型,可以将进程视为在“服务器”模式下运行的软件。 对于每个进程,您都可以查看所使用的协议,正在侦听的本地地址和端口,正在其下运行的用户以及PID /程序名称。 这里应该指出一个重要的区别。 对于tcp4 / udp4连接(仅列为tcp和udp),其本地地址列为0.0.0.0,该进程侦听来自可以通过网络与其连接的任何计算机的连接,而当它列为127.0.0.1时,它仅侦听连接到本地主机(正在运行的计算机或其本身)上,并且无法连接到网络上的其他计算机。 比较本地地址:::(面向网络)和:: 1(仅本地主机)时,tcp6 / udp6的区别相同。

如何查看所有网络连接

现在,让我们看一下所有当前的网络连接。

为此,请输入以下命令,该命令与上一个命令相似,不同之处在于,我们使用-a查看所有套接字,而不是-l来简单查看侦听套接字。

$ sudo netstat -atupen

该命令不仅向我们显示哪个软件正在侦听作为“服务器”的连接,而且还向我们显示了与该软件的当前已建立的连接以及我们使用该软件作为“客户端”使用的所有已建立的网络连接。 ”例如网络浏览器。

查看已安装的连接

您可能会发现自己只想查看ESTABLISHED类型的连接。

ss

Netstat长期以来一直是sysadmin的最爱,但最近已被ss取代,后者比netstat更快,更容易且更具可读性。 让我们看看如何使用ss执行与上述相同的步骤。 Ss还具有-e选项以查看扩展信息,但是在以下示例中已省略此选项,因为它提供了可能导致输出可读性较低的附加信息。 查看流程

要查看所有进程,请输入以下内容:

$ sudo ss -tlunp

在此命令中,t显示TCP连接,l仅显示侦听套接字,u显示UDP连接,n显示数字形式的地址,用户和端口,p显示连接所属的程序。 查看所有网络连接

要查看所有网络连接,请输入以下内容,其中a代替l并显示所有网络套接字,而不仅仅是侦听。

$ sudo ss -taunp

查看已安装的连接

如果不包括-a或-l,则ss仅显示已建立的连接。

要仅查看已建立的连接,请输入以下内容。

$ sudo ss -tunp

lsof

如果您缺少netstat和ss,我们提供lsof。 Lsof用于列出打开的文件。 GNU / Linux继承了UNIX设计原则,即一切都是文件。 这包括网络连接。 结果,可以使用lsof以类似于上述命令的方式查看网络活动。 如何查看所有网络连接

输入以下内容以查看所有网络连接。

$ sudo lsof -nP -i

在此命令中,n代表数字形式的地址,P代表数字端口,i禁止列出任何不被视为网络文件的打开文件。 查看已安装的连接

要仅查看已建立的连接,请输入以下命令,其中其他开关列出所有已建立的TCP连接。

$ sudo lsof -nP -iTCP -sTCP:ESTABLISHED

查看流程

要使用lsof查看监听过程,请输入以下内容。

$ sudo lsof -nP -iTCP -sTCP:LISTEN

这将跳过正在侦听UDP的所有进程,因此可能需要输入以下内容来启用它们。

$ sudo lsof -nP -i | grep 'LISTEN|UDP'

Sidebar