如何查看我的机器上打开了哪些端口?

Jon*_*nas 204 server networking

我想看看我的机器上打开了哪些端口,例如我的机器正在侦听哪些端口。例如,如果我安装了 Web 服务器,则使用端口 80,等等。

有没有这方面的命令?

小智 343

我一直用这个:

sudo netstat -ntlp
Run Code Online (Sandbox Code Playgroud)

如果该netstat命令不可用,请使用以下命令安装它:

sudo apt install net-tools
Run Code Online (Sandbox Code Playgroud)

  • `-l` 已经过滤了监听。除了隐藏 2 行标题信息之外,`grep LISTEN` 无济于事。 (9认同)
  • `-t`:tcp,`-l`:监听套接字,`-p`:显示pid和程序名称,`-n`:打印`127.0.0.1:80`而不是`localhost:http`。参考:https://linux.die.net/man/8/netstat (6认同)
  • `sudo netstat -ntlp | grep LISTEN` ... 使用 `sudo` 否则 ... pid 不会被打印。 (5认同)
  • 扩展命令是`sudo netstat --tcp --listening --programs --numeric`。除非您想消除列标题,否则无需使用 `grep`。 (5认同)
  • 使用 `sudo apt-get install net-tools` 安装 `netstat` (4认同)

hhl*_*hlp 141

nmap安装

Nmap(“网络映射器”)是一个免费的开源实用程序,用于网络探索或安全审计。

使用nmap 192.168.1.33内部PC或nmap external IP address

更多信息man nmap

Zenmap是官方的 GUI 前端。

  • 谢谢,`nmap localhost` 工作得很好。 (15认同)
  • 请记住,`nmap localhost` 和 `nmap 192.168.0.3`(或者你的机器 IP 是什么)是有区别的 (11认同)
  • 我认为 netstat 是一个更好的答案。netstat 将直接列出系统正在侦听的内容,而无需使用其他应用程序或通过本地主机或网络进行不必要的调用。 (8认同)
  • 这是愚蠢的。如果您可以访问计算机,只需使用`netstat -ln`。您将立即看到所有打开的端口。 (3认同)

nat*_*ill 71

找出哪些端口正在侦听以及您的防火墙规则是什么的其他好方法:

  • sudo netstat -tulpn

  • sudo ufw status

  • @Jonas:请参阅我在 nmap 答案下的评论。它不会列出仅绑定到 localhost 的服务。 (2认同)

ine*_*pro 29

要列出打开的端口,请使用该netstat命令。

例如:

    $ sudo netstat -tulpn | grep LISTEN
    tcp        0      0 127.0.0.1:53            0.0.0.0:*               LISTEN      5452/dnsmasq    
    tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN      1037/cupsd      
    tcp6       0      0 ::1:631                 :::*                    LISTEN      1037/cupsd
Run Code Online (Sandbox Code Playgroud)

在上面的例子中,三个服务绑定到环回地址。

绑定到环回地址“127.0.0.1”的 IPv4 服务仅在本地机器上可用。IPv6 的等效环回地址是“::1”。IPv4 地址“0.0.0.0”表示“任何 IP 地址”,这意味着其他机器可能连接到特定端口上的任何本地配置的网络接口。

另一种方法是使用lsof命令:

    $ sudo lsof -nP -i | grep LISTEN
    cupsd     1037   root    9u  IPv6  11276      0t0  TCP [::1]:631 (LISTEN)
    cupsd     1037   root   10u  IPv4  11277      0t0  TCP 127.0.0.1:631 (LISTEN)
    dnsmasq   5452 nobody    5u  IPv4 212707      0t0  TCP 127.0.0.1:53 (LISTEN)
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请参阅man netstatman lsof

  • 我认为`-l` 选项是列出`LISTEN`ing 端口。所以这里的grep是多余的?! (3认同)

小智 24

这足以表明有一个进程正在侦听0.0.0.0端口 80(标准 Web 服务器端口号)上的 IP 地址(需要这样它才能回复任何请求)。在我的情况下,这表明它是网络服务器lighttpd

$ sudo netstat -ntlp | grep :80
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN          2495/lighttpd
Run Code Online (Sandbox Code Playgroud)

如果您以后想确保您允许通过防火墙的唯一端口是端口 80,我经常使用 www.grc.com 上的 ShieldsUp 来执行防火墙测试。


Cia*_*man 11

sudo iptables -L将列出您电脑的端口规则。请注意,如果您使用 ufw 或 shorewall 防火墙,则输出可能难以阅读。在这种情况下,而不是使用sudo ufw status例如。

这本身并不是很有用,因为即使端口是开放的,如果没有进程侦听该端口,访问仍然会被拒绝。


小智 5

如果您正在寻找对服务器机器或本地端口的持续监控,我认为您还可以使用 nmap 的图形版本,即 Zenmap 以获得更详细的版本

Zenmap 是 Nmap 安全扫描器的官方图形用户界面 (GUI)。

可用支持(Linux、Windows、Mac OS X、BSD 等)

看看这个工具视图:

在此处输入图片说明