我如何检查我的电脑是否接受来自指定 IP 的流量?

我如何检查我的电脑是否接受来自指定 IP 的流量?

我需要检查服务器是否正在接受来自指定 IP 的传入流量。仅检查端口是否正在监听是不够的,因为例如,即使我打开了端口 22,我也不知道它是否接受来自另一台服务器的流量。我看到了 nmap 和 netstat,但似乎它们无法帮助我。您知道执行此操作的命令吗?

答案1

Netstat 确实应该能够使用 FosseWay 建议的技术来解决您的问题,但有一个限制是它只能显示一个时间点。如果您想检查一段时间内的流量,另一种方法是使用 WireShark。在某些方面,它可能有点过头了,因为它能够捕获数据包甚至重放数据包,但它易于使用,并且能够过滤流量并仅记录来自特定 IP 的流量。这样,您不仅可以看到流量是否来自 IP,还可以看到流量是什么。

这里有一个很好的安装和使用 WireShark 的教程。如果您对其功能有任何疑问,请随时回复。 https://www.howtogeek.com/104278/how-to-use-wireshark-to-capture-filter-and-inspect-packets/

答案2

我使用 netstat 来回答此类问题。我不确定您为什么说 netstat 无法帮助您,因为使用 netstat 肯定可以确定您的 PC 当前是否正在接收来自特定 IP 的流量。

假设您使用的是最新版本的 Windows:转到命令提示符,然后键入 netstat -n 以查看所有与您的 PC 的连接。省略 -n 以查看主机名(您的 PC 可以确定它的位置)而不是 IP 地址。

如果使用 netstat 获取所需内容的问题在于输出量(太多行),那么请考虑将输出复制/粘贴到好的文本编辑器中,或者在 Windows PowerShell 中使用 netstat(按 Windows 键并输入“PowerShell”,然后选择“Windows PowerShell”)结合 Select-String 来仅过滤您感兴趣的 IP。

PS C:\> netstat -n | Select-String 10.11.15.41

TCP    192.168.1.1:22    10.11.15.41:62352       ESTABLISHED
TCP    192.168.1.1:22    10.11.15.41:63782       ESTABLISHED
TCP    192.168.1.1:22    10.11.15.41:60185       ESTABLISHED

如果仍然显示太多信息,您可以使用第二个 Select-String 来仅过滤包含字符串“:22”的行:

netstat -n | Select-String 10.11.15.41 | Select-String :22

在其他操作系统(例如 Linux、OSX)上使用 netstat 和 grep 也可以获得类似的结果。

如果您需要设置监控,那么这可能无法满足您的需求,但对于快速回答“X 是否正在连接我?”这个问题,netstat 既实用又有用。我每天都会使用它的变体。

另一方面,如果你问“我如何知道特定主机 B 是否能够通过端口 22 连接到我的主机 A?“——确定从 B 到 A 的路由已经到位,并且没有防火墙会阻止连接尝试——那么我认为没有任何方法可以从 A 确定。您必须访问 B,并从 B 到 A 进行测试。

相关内容