深入解析Linux系统中查看运行端口的多种方法

03-16 9096阅读
在Linux系统中,查看运行端口的方法多种多样,常用的命令包括netstatsslsofnmapnetstat是一个经典工具,通过netstat -tuln可以列出所有监听中的TCP和UDP端口,但它在某些新系统中已被弃用,ssnetstat的现代替代品,执行速度更快,使用ss -tuln可以查看类似的端口信息,lsof命令则通过lsof -i列出所有与网络相关的打开文件,包括端口信息,nmap是一款强大的网络扫描工具,通过nmap localhost可以扫描本地主机的开放端口,这些工具各有优劣,用户可以根据需求选择合适的方法来查看系统中的运行端口。

在Linux系统中,查看运行端口的方法多种多样,常用的工具包括netstatsslsofnmapnetstat是一个经典的工具,能够显示网络连接、路由表、接口统计等信息,通过netstat -tuln可以列出所有监听的TCP和UDP端口。ssnetstat的现代替代品,性能更高,使用ss -tuln可以快速查看监听端口。lsof则通过列出打开的文件来显示端口信息,适用于查找特定进程使用的端口,命令为lsof -i :端口号nmap主要用于网络扫描,能够探测远程主机的开放端口,适合用于安全审计,这些工具各有优劣,用户可以根据需求选择合适的方法来查看和管理系统中的端口。

深入解析Linux系统中查看运行端口的多种方法 第1张

<p>在Linux系统中,端口是网络通信的关键组成部分,无论是Web服务器、数据库还是其他网络服务,都需要通过特定的端口进行通信,了解如何查看Linux系统中正在运行的端口,对于系统管理员和开发人员来说至关重要,本文将详细介绍多种在Linux系统中查看运行端口的方法,帮助读者全面掌握这一技能。</p>
<h2>使用<code>netstat</code>命令</h2>
<p><code>netstat</code>是一个经典的网络工具,用于显示网络连接、路由表、接口统计信息等,通过<code>netstat</code>命令,我们可以轻松查看系统中正在监听的端口。</p>
<div style="text-align:center;"><img style="max-width: 100%;border-radius: 5px;" alt="深入解析Linux系统中查看运行端口的多种方法" src="https://www.zovps.com/article/zb_users/upload/2025/03/20250316090256174208697662530.jpeg"></div>
<div><div style="color:#999;text-align:center;">(图片来源网络,侵删)</div></div>
<p><strong>基本用法:</strong></p>
<pre class="brush:bash;toolbar:false">netstat -tuln</pre>
<ul>
<li><code>-t</code>:显示TCP端口</li>
<li><code>-u</code>:显示UDP端口</li>
<li><code>-l</code>:显示监听中的端口</li>
<li><code>-n</code>:以数字形式显示地址和端口号</li>
</ul>
<p><strong>示例输出:</strong></p>
<pre class="brush:bash;toolbar:false">Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN     
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN     
udp        0      0 0.0.0.0:68              0.0.0.0:*                          </pre>
<p>在这个输出中,<code>Local Address</code>列显示了本地监听的IP地址和端口号。<code>0.0.0.0:22</code>表示SSH服务正在监听所有网络接口的22端口。</p>
<h2>使用<code>ss</code>命令</h2>
<p><code>ss</code>是<code>netstat</code>的现代替代品,提供了更快的性能和更丰富的功能。<code>ss</code>命令同样可以用于查看系统中正在监听的端口。</p>
<div style="text-align:center;"><img style="max-width: 100%;border-radius: 5px;" alt="深入解析Linux系统中查看运行端口的多种方法" src="https://www.zovps.com/article/zb_users/upload/2025/03/20250316090256174208697680031.jpeg"></div>
<div><div style="color:#999;text-align:center;">(图片来源网络,侵删)</div></div>
<p><strong>基本用法:</strong></p>
<pre class="brush:bash;toolbar:false">ss -tuln</pre>
<ul>
<li><code>-t</code>:显示TCP端口</li>
<li><code>-u</code>:显示UDP端口</li>
<li><code>-l</code>:显示监听中的端口</li>
<li><code>-n</code>:以数字形式显示地址和端口号</li>
</ul>
<p><strong>示例输出:</strong></p>
<pre class="brush:bash;toolbar:false">Netid  State      Recv-Q Send-Q Local Address:Port               Peer Address:Port              
tcp    LISTEN     0      128    0.0.0.0:22                      0.0.0.0:*                  
tcp    LISTEN     0      128    127.0.0.1:631                   0.0.0.0:*                  
udp    UNCONN     0      0      0.0.0.0:68                      0.0.0.0:*                  </pre>
<p><code>ss</code>命令的输出与<code>netstat</code>类似,但更加简洁和高效。</p>
<h2>使用<code>lsof</code>命令</h2>
<p><code>lsof</code>(List Open Files)命令用于列出系统中打开的文件,由于在Linux中,一切皆文件,包括网络连接,<code>lsof</code>也可以用于查看正在使用的端口。</p>
<div style="text-align:center;"><img style="max-width: 100%;border-radius: 5px;" alt="深入解析Linux系统中查看运行端口的多种方法" src="https://www.zovps.com/article/zb_users/upload/2025/03/20250316090256174208697650938.jpeg"></div>
<div><div style="color:#999;text-align:center;">(图片来源网络,侵删)</div></div>
<p><strong>基本用法:</strong></p>
<pre class="brush:bash;toolbar:false">lsof -i -P -n</pre>
<ul>
<li><code>-i</code>:显示网络连接</li>
<li><code>-P</code>:以数字形式显示端口号</li>
<li><code>-n</code>:以数字形式显示IP地址</li>
</ul>
<p><strong>示例输出:</strong></p>
<pre class="brush:bash;toolbar:false">COMMAND   PID   USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
sshd      1234  root    3u  IPv4  12345      0t0  TCP *:22 (LISTEN)
cupsd     5678  root    6u  IPv4  23456      0t0  TCP 127.0.0.1:631 (LISTEN)
dhclient  9101  root    5u  IPv4  34567      0t0  UDP *:68 </pre>
<p>在这个输出中,<code>NAME</code>列显示了监听的IP地址和端口号。<code>*:22</code>表示SSH服务正在监听所有网络接口的22端口。</p>
<h2>使用<code>nmap</code>命令</h2>
<p><code>nmap</code>是一个强大的网络扫描工具,可以用于扫描本地或远程主机的开放端口,虽然<code>nmap</code>通常用于远程扫描,但它也可以用于本地端口扫描。</p>
<p><strong>基本用法:</strong></p>
<pre class="brush:bash;toolbar:false">nmap -sT -O localhost</pre>
<ul>
<li><code>-sT</code>:进行TCP连接扫描</li>
<li><code>-O</code>:尝试检测操作系统类型</li>
</ul>
<p><strong>示例输出:</strong></p>
<pre class="brush:bash;toolbar:false">Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-01 12:00 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00010s latency).
Not shown: 997 closed ports
PORT    STATE SERVICE
22/tcp  open  ssh
631/tcp open  ipp
68/udp  open  dhcpc</pre>
<p>在这个输出中,<code>PORT</code>列显示了开放的端口及其对应的服务。</p>
<h2>使用<code>fuser</code>命令</h2>
<p><code>fuser</code>命令用于显示使用指定文件或端口的进程,通过<code>fuser</code>命令,我们可以查看哪个进程正在使用特定的端口。</p>
<p><strong>基本用法:</strong></p>
<pre class="brush:bash;toolbar:false">fuser -n tcp 22</pre>
<ul>
<li><code>-n</code>:指定协议类型(如tcp、udp)</li>
<li><code>22</code>:端口号</li>
</ul>
<p><strong>示例输出:</strong></p>
<pre class="brush:bash;toolbar:false">22/tcp:               1234</pre>
<p>在这个输出中,<code>1234</code>是使用22端口的进程ID。</p>
<h2>使用<code>/proc</code>文件系统</h2>
<p>Linux的<code>/proc</code>文件系统包含了大量关于系统状态和进程的信息,通过查看<code>/proc/net/tcp</code>和<code>/proc/net/udp</code>文件,我们可以获取系统中TCP和UDP端口的使用情况。</p>
<p><strong>基本用法:</strong></p>
<pre class="brush:bash;toolbar:false">cat /proc/net/tcp
cat /proc/net/udp</pre>
<p><strong>示例输出:</strong></p>
<pre class="brush:bash;toolbar:false">  sl  local_address rem_address   st tx_queue rx_queue tr tm->when retrnsmt   uid  timeout inode                                                     
   0: 00000000:0016 00000000:0000 0A 00000000:00000000 00:00000000 00000000     0        0 12345 1 0000000000000000 100 0 0 10 0                     
   1: 0100007F:0277 00000000:0000 0A 00000000:00000000 00:00000000 00000000     0        0 23456 1 0000000000000000 100 0 0 10 0                     </pre>
<p>在这个输出中,<code>local_address</code>列显示了本地监听的IP地址和端口号。<code>00000000:0016</code>表示监听所有网络接口的22端口(16进制表示)。</p>
<h2>使用<code>systemctl</code>命令</h2>
<p>对于使用<code>systemd</code>作为初始化系统的Linux发行版,<code>systemctl</code>命令可以用于查看和管理服务,通过<code>systemctl</code>命令,我们可以查看哪些服务正在监听端口。</p>
<p><strong>基本用法:</strong></p>
<pre class="brush:bash;toolbar:false">systemctl list-sockets</pre>
<p><strong>示例输出:</strong></p>
<pre class="brush:bash;toolbar:false">LISTEN                          UNIT                            ACTIVATES
0.0.0.0:22                      sshd.socket                     sshd.service
127.0.0.1:631                   cups.socket                     cups.service</pre>
<p>在这个输出中,<code>LISTEN</code>列显示了监听的IP地址和端口号。</p>
<h2>使用<code>iptables</code>命令</h2>
<p><code>iptables</code>是Linux系统中用于配置防火墙规则的工具,通过<code>iptables</code>命令,我们可以查看哪些端口被允许或阻止。</p>
<p><strong>基本用法:</strong></p>
<pre class="brush:bash;toolbar:false">iptables -L -n -v</pre>
<ul>
<li><code>-L</code>:列出规则</li>
<li><code>-n</code>:以数字形式显示IP地址和端口号</li>
<li><code>-v</code>:显示详细信息</li>
</ul>
<p><strong>示例输出:</strong></p>
<pre class="brush:bash;toolbar:false">Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:22
    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:631</pre>
<p>在这个输出中,<code>tcp dpt:22</code>表示允许TCP协议的22端口。</p>
<h2>使用<code>firewalld</code>命令</h2>
<p>对于使用<code>firewalld</code>作为防火墙管理工具的Linux发行版,<code>firewall-cmd</code>命令可以用于查看和管理端口。</p>
<p><strong>基本用法:</strong></p>
<pre class="brush:bash;toolbar:false">firewall-cmd --list-ports</pre>
<p><strong>示例输出:</strong></p>
<pre class="brush:bash;toolbar:false">22/tcp 631/tcp</pre>
<p>在这个输出中,<code>22/tcp</code>表示允许TCP协议的22端口。</p>
<h2>使用<code>tcpdump</code>命令</h2>
<p><code>tcpdump</code>是一个强大的网络抓包工具,可以用于捕获和分析网络流量,通过<code>tcpdump</code>命令,我们可以实时查看哪些端口正在被使用。</p>
<p><strong>基本用法:</strong></p>
<pre class="brush:bash;toolbar:false">tcpdump -i eth0 port 22</pre>
<ul>
<li><code>-i</code>:指定网络接口</li>
<li><code>port 22</code>:捕获22端口的流量</li>
</ul>
<p><strong>示例输出:</strong></p>
<pre class="brush:bash;toolbar:false">12:00:00.000000 IP 192.168.1.100.12345 > 192.168.1.1.22: Flags [S], seq 1234567890, win 65535, options [mss 1460], length 0</pre>
<p>在这个输出中,<code>192.168.1.1.22</code>表示目标IP地址和端口号。</p>
<h2>使用<code>nc</code>命令</h2>
<p><code>nc</code>(netcat)是一个多功能网络工具,可以用于创建TCP/UDP连接、端口扫描等,通过<code>nc</code>命令,我们可以测试特定端口是否开放。</p>
<p><strong>基本用法:</strong></p>
<pre class="brush:bash;toolbar:false">nc -zv localhost 22</pre>
<ul>
<li><code>-z</code>:进行端口扫描</li>
<li><code>-v</code>:显示详细信息</li>
</ul>
<p><strong>示例输出:</strong></p>
<pre class="brush:bash;toolbar:false">Connection to localhost 22 port [tcp/ssh] succeeded!</pre>
<p>在这个输出中,<code>succeeded!</code>表示22端口是开放的。</p>
<h2>使用<code>telnet</code>命令</h2>
<p><code>telnet</code>是一个经典的网络协议,用于远程登录,通过<code>telnet</code>命令,我们可以测试特定端口是否开放。</p>
<p><strong>基本用法:</strong></p>
<pre class="brush:bash;toolbar:false">telnet localhost 22</pre>
<p><strong>示例输出:</strong></p>
<pre class="brush:bash;toolbar:false">Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.3</pre>
<p>在这个输出中,<code>Connected to localhost.</code>表示22端口是开放的。</p>
<h2>使用<code>curl</code>命令</h2>
<p><code>curl</code>是一个强大的命令行工具,用于传输数据,通过<code>curl</code>命令,我们可以测试特定端口是否开放。</p>
<p><strong>基本用法:</strong></p>
<pre class="brush:bash;toolbar:false">curl -v telnet://localhost:22</pre>
<ul>
<li><code>-v</code>:显示详细信息</li>
</ul>
<p><strong>示例输出:</strong></p>
<pre class="brush:bash;toolbar:false">* Rebuilt URL to: telnet://localhost:22/
*   Trying 127.0.0.1...
* TCP_NODELAY set
* Connected to localhost (127.0.0.1) port 22 (#0)
SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.3</pre>
<p>在这个输出中,<code>Connected to localhost (127.0.0.1) port 22 (#0)</code>表示22端口是开放的。</p>
<h2>使用<code>wget</code>命令</h2>
<p><code>wget</code>是一个常用的命令行工具,用于下载文件,通过<code>wget</code>命令,我们可以测试特定端口是否开放。</p>
<p><strong>基本用法:</strong></

    免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

    目录[+]