我想查看机器上打开了哪些端口,例如我的机器正在监听的端口。例如。端口80(如果已安装Web服务器等)。

是否有用于此的命令?

#1 楼


nmap(安装)
Nmap(“ Network Mapper”)是一个免费的开源实用程序,用于网络探索或安全审核。
nmap 192.168.1.33用于内部PC或nmap external IP address
更多信息man nmap
Zenmap是官方的GUI前端。

评论


谢谢,nmap localhost很棒。

–乔纳斯(Jonas)
2010-10-25 13:24

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

–拉瑟·波尔森
2010-10-25 14:47

我认为netstat是一个更好的答案。 netstat将列出系统正在直接监听的内容,而无需使用其他应用程序,也无需通过本地主机进行不必要的调用,也无需考虑网络。

–马修·特鲁德尔-拉皮埃尔(Mathieu Trudel-Lapierre)
2010年11月3日,下午1:57

真傻如果您有权访问计算机,则只需使用netstat -ln。您会立即看到所有打开的端口。

– Alexis Wilke
16-10-8在18:51



nmap localhost找不到仅绑定到localhost的服务。例如,我使用bind-address:localhost:8086运行influxd。这没有显示在sudo nmap localhost中,但是确实出现在sudo netstat -tulpn中。

– Dan Dascalescu
17年1月18日在17:58

#2 楼

我一直使用以下命令:
sudo netstat -ntlp | grep LISTEN

如果netstat命令不可用,请使用以下命令进行安装:
sudo apt install net-tools


评论


须藤netstat -ntlp | grep LISTEN ...使用sudo,否则... pid将不会被打印。

–拉法(Rafaf Tahsin)
16年8月28日在5:14

-l已经过滤用于监听。 grep LISTEN除了隐藏两行标题信息外无济于事。

– Dan Dascalescu
17年1月18日在19:19

-t:tcp,-l:监听套接字,-p:显示pid和程序名称,-n:打印127.0.0.1:80而不是localhost:http。参考:linux.die.net/man/8/netstat

–里克
18-10-19在9:45

使用sudo apt安装netstat apt-get install net-tools

–RichArt
18-10-28在22:12



扩展的命令是sudo netstat --tcp --listening --programs --numeric。除非您要消除列标题,否则无需使用grep。

–帕特里克·达克(Patrick Dark)
19年3月12日在7:50

#3 楼

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


sudo netstat -tulpn
sudo ufw status


评论


我再次将答案更改为nmap,netstat的可用性很糟糕。

–乔纳斯(Jonas)
2014年3月23日在17:28

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

– Dan Dascalescu
17年1月18日在17:59

#4 楼

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

评论


我以为-l选项是列出LISTENing端口。所以grep在这里会多余吗?

– Alexis Wilke
16-10-8在18:53

#5 楼

这足以表明在端口80(标准Web服务器端口号)上有一个进程正在侦听IP地址0.0.0.0(需要,它会答复任何请求)。就我而言,这表明它是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可以执行防火墙测试。

#6 楼

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

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

#7 楼

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

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

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

查看此工具视图:



#8 楼

ss:
打印:
网络连接
路由表
接口统计信息
化妆舞会连接
多播成员身份

Install:
    sudo apt install net-tools

Example:
    ~$ ss -ntlp | grep LISTEN
    >
    LISTEN   0        4096             127.0.0.53%lo:53              0.0.0.0:*                                                                                      
    LISTEN   0        5                    127.0.0.1:631             0.0.0.0:*                                                                                      
    LISTEN   0        5                        [::1]:631                [::]:*                                                                                      
    LISTEN   0        50          [::ffff:127.0.0.1]:9614                  *:*


评论


你确定吗? net-tools提供netstat。 iproute2提供ss。检查与dpkg -S $(哪个ss)

–巴勃罗·比安奇(Pablo Bianchi)
20年8月26日在7:45



#9 楼

在最新的Linux发行版中,很可能您将找不到netstat命令。
$ netstat

Command 'netstat' not found, but can be installed with:

sudo apt install net-tools

$ 

但是,如果要使用它,请继续使用sudo apt install net-tools命令进行安装。
Fy,netstat已过时(请参阅手册页),因此应使用ssnetstat intead。

该程序已过时。 netstat的替换项是ss。
netstat -r的替换项是ip route。替换netstat
-i是ip -s链接。 netstat -g的替换项是ip maddr。

例如
$ ss -lnt
State      Recv-Q Send-Q        Local Address:Port          Peer Address:Port
LISTEN     0      5                 127.0.1.1:53                       *:*
LISTEN     0      128               127.0.0.1:631                      *:*
LISTEN     0      128                     ::1:631                     :::*

描述
-l, --listening
仅显示侦听套接字(默认情况下会省略这些套接字)。
-n,--numeric
请勿尝试解析服务名称。
-t,- tcp
显示TCP套接字。


#10 楼

假设您想检查端口3000:
netstat -na | grep 3000