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


147

我想查看机器上打开了哪些端口,例如机器正在监听的端口。例如,如果安装了Web服务器,则端口为80,依此类推。

有什么命令吗?

Answers:


113

纳帕 安装nmap

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

nmap 192.168.1.33 内部PC或 nmap external ip address

更多信息 man nmap


11
谢谢,nmap localhost工作很棒。
乔纳斯(Jonas)2010年

11
请记住,nmap localhostnmap 192.168.0.3(或您所使用的机器IP是什么)之间是有区别的
LassePoulsen

6
我认为netstat是一个更好的答案。netstat将列出系统正在直接侦听的内容,而无需使用其他应用程序或通过localhost或网络进行不必要的调用。
Mathieu Trudel-Lapierre

2
真傻 如果您可以访问计算机,请使用netstat -ln。您会立即看到所有打开的端口。
亚历克西斯·威尔克

1
nmap localhost找不到仅绑定到本地主机的服务。例如,我influxd使用bind-address:localhost:8086。那没有出现sudo nmap localhost,但是确实出现在sudo netstat -tulpn
Dan Dascalescu

277

我一直使用这个:

sudo netstat -ntlp | grep LISTEN

4
sudo netstat -ntlp | grep LISTEN... sudo否则使用...将不打印pid。
拉法夫·塔辛(Rafaf Tahsin)

6
-l已经过滤收听。grep LISTEN隐藏2行标头信息无济于事。
Dan Dascalescu

3
-t:tcp,:-l监听套接字,-p:显示pid和程序名称,-n:print 127.0.0.1:80代替localhost:http。参考:linux.die.net/man/8/netstat
Rick

1
安装netstatsudo apt-get install net-tools
RichArt '18

2
扩展命令为sudo netstat --tcp --listening --programs --numericgrep除非您要消除列标题,否则无需使用。
Patrick黑暗

60

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

  • sudo netstat -tulpn

  • sudo ufw status


nmap再次将答案更改netstat为“废话”。
乔纳斯(Jonas)2014年

2
@Jonas:在nmap答案下查看我的评论。它不会列出仅绑定到本地主机的服务。
Dan Dascalescu

27

要列出打开的端口,请使用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

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

绑定到环回地址“ 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)

有关更多详细信息,请参见man netstatman lsof


3
我认为该-l选项是列出LISTEN端口。所以grep在这里会多余吗?
Alexis Wilke

24

这足以表明0.0.0.0在端口80(标准Web服务器端口号)上有一个进程正在侦听IP地址(需要,以便它可以回复任何请求)。就我而言,这表明它是Web服务器lighttpd

$ sudo netstat -ntlp | grep :80
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN          2495/lighttpd

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


11

sudo iptables -L将列出您的PC的端口规则。请注意,如果您使用的是ufw或Shorewall防火墙,则可能很难读取输出。在这种情况下sudo ufw status,例如使用。

它本身并不是很有用,因为即使端口是开放访问的,即使没有进程在该端口上侦听,访问仍将被拒绝。


4

如果您正在寻找服务器计算机或本地端口的连续监控,我想您也可以使用nmap的图形版本,例如Zenmap以获得更详细的版本

Zenmap是Nmap Security Scanner的官方图形用户界面(GUI)。

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

看一下这个工具视图:

在此处输入图片说明

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.