我知道我可以用来nmap
查看特定机器上打开了哪些端口。但我需要的是一种从主机端本身获取它的方法。
目前,如果我nmap
在一台机器上使用来检查另一台机器,我会得到一个示例:
smb:~# nmap 192.168.1.4
PORT STATE SERVICE
25/tcp open smtp
80/tcp open http
113/tcp closed ident
143/tcp open imap
443/tcp open https
465/tcp open smtps
587/tcp open submission
993/tcp open imaps
有没有办法在主机本身上执行此操作?不是从远程机器到特定主机。
我知道我能做到
nmap localhost
但这不是我想要做的,因为我将把命令放入一个遍历所有机器的脚本中。
编辑:
这样,nmap
展示了22 5000 5001 5432 6002 7103 7106 7201 9200
但lsof command
展示了我22 5000 5001 5432 5601 6002 7102 7103 7104 7105 7106 7107 7108 7109 7110 7111 7112 7201 7210 11211 27017
答案1
在 Linux 上,您可以使用:
ss -ltu
或者
netstat -ltu
列出l
伊斯泰宁 T
CP 和U
DP 端口。
如果您想要禁用从端口号和 IP 地址到服务和主机名的转换,请添加该-n
选项(对于ss
或)。netstat
添加-p
选项以查看正在侦听的进程(如果有,某些端口可能由内核绑定,如 NFS)(如果您没有超级用户权限,则只会提供以您的名义运行的进程的信息)。
这将列出应用程序正在侦听的端口(对于 UDP,它有一个绑定到它的套接字)。请注意,有些可能仅侦听给定地址(IPv4 和/或 IPv6),这将显示在ss
/的输出中netstat
(0.0.0.0
表示侦听任何IPv4 地址,[::]
在任何 IPv6 地址上)。即使如此,这并不意味着网络上的给定其他主机可以在该端口和该地址上联系系统,因为任何防火墙(包括主机防火墙)可能会根据或多或少的情况阻止或屏蔽/重定向该端口上的传入连接复杂的规则(例如只允许在这个或那个时间来自这个或那个主机、这个或那个源端口的连接以及每分钟最多这个或那个次数等)。
对于主机防火墙配置,您可以查看 的输出iptables-save
。
另请注意,如果一个或多个进程正在侦听 TCP 套接字,但没有接受连接数,一旦待处理的传入连接数大于最大积压量,将不再接受连接,并且来自远程主机的连接将显示为好像该端口被阻止。观察/Recv-Q
输出中的列以发现这些情况(传入连接不被接受并填满队列)。ss
netstat
答案2
您还可以使用
sudo lsof -i |grep LISTEN
这将显示当前正在侦听的所有端口。
答案3
只需做nmap localhost
或nmap 127.0.0.1
编辑:
还有ss -lntu
来自https://superuser.com/questions/529830/get-a-list-of-open-ports-in-linux#529844
答案4
查看应用程序/端口组合使用的列表
cat /etc/services
要查看打开的 TCP/UDP 端口,请在终端中键入:
netstat -lntu
或者
ss -lntu