Linux查看网络端口命令大全


在 Linux 中,可以使用多种工具来检查网络端口。以下是详细的命令和用法:


一. 使用前提

命令端口必须被监听才能检测端口未使用时是否能检测
telnet
nc是(-z 模式)否(仅检测监听端口)
curl
nmap
ss
lsof
ping
traceroute
iptables

如果需要检测未使用的端口,推荐使用 nmap 或检查防火墙配置(如 iptables)。

二. 命令详解

1. telnet

用途: 用于检查远程主机指定端口是否可以建立TCP连接。

命令格式:

telnet <IP地址或主机名> <端口号>

示例:

telnet 192.168.118.200 22
telnet 192.168.118.200 80

在这里插入图片描述

输出解释:

  • 如果连接成功,会进入一个交互式终端,显示类似 Connected to ...
  • 如果失败,显示类似 Connection refused 或超时。

注意:

  • 需要安装 telnet 工具(部分系统默认不安装)。
  • 适用于 TCP 协议。

安装命令:

sudo apt install telnet       # Debian/Ubuntu 系
sudo yum install telnet       # RHEL/CentOS 系

2. nc(netcat)

用途:nc 是功能强大的网络工具,可以检查TCP UDP端口的可达性。

命令格式:

nc -zv <IP地址或主机名> <端口号>

示例:

nc -zv 192.168.118.200 22
nc -zv 192.168.118.200 80

在这里插入图片描述

输出解释:

  • Connection to... 表示端口可用。
  • Connection refused 表示端口不可用。

注意:

  • -z 表示扫描模式,-v 表示显示详细信息。
  • 支持 TCP UDP(加 -u 参数)。

3. curl

用途: 检查 HTTP HTTPS 服务是否运行,适用于 80、443 等 Web 端口。

命令格式:

curl -I <URL>

示例:

curl -I http://192.168.1.100

输出解释:

  • 返回 HTTP 响应头表示端口正常。
  • 如果超时或无响应,端口可能不可用。

4. nmap

用途: nmap 是强大的网络扫描工具,可以扫描主机的开放端口。

命令格式:

nmap -p <端口号> <IP地址或主机名>

示例:

nmap -p 22 192.168.118.200
nmap -p 80 192.168.118.200

在这里插入图片描述

输出解释:

  • open 表示端口开放。
  • closed 表示端口关闭。

扫描多个端口:

nmap -p 20-22 192.168.118.200

在这里插入图片描述

注意:

  • 需要安装 nmap 工具:
sudo apt install nmap      # Debian/Ubuntu
sudo yum install nmap      # RHEL/CentOS

5. ss

用途: ss 是现代Linux中的网络连接状态工具,可以检查本地端口是否在监听。

命令格式:

ss -ltn

输出解释:

  • LISTEN 表示端口正在监听。

  • 输出中包含本地地址和端口号,例如:

LISTEN     0      128          *:22                       *:*
LISTEN     0      128       [::]:22                    [::]:*

** 检查特定端口:**

ss -ltn | grep ':22'
ss -ltn | grep ':80'

在这里插入图片描述


6. lsof

用途: 列出当前系统中正在使用的端口。

命令格式:

lsof -i:<端口号>

示例:

lsof -i:22
lsof -i:80

在这里插入图片描述

输出解释:

  • 显示使用该端口的进程信息。
  • 如果无输出,表示端口未被占用。

列出所有监听的端口:

lsof -i -P -n | grep LISTEN

在这里插入图片描述


7. ping

用途: 用于检测目标主机是否可达,但不能直接检查端口。

命令格式:

ping <IP地址或主机名>

示例:

ping 192.168.118.200

在这里插入图片描述

输出解释:

  • 如果有响应,表示目标主机网络连通。
  • 如果无响应,主机可能不可达或 ICMP 被禁用。

8. traceroute

用途: 跟踪数据包到达目标主机的路径,可用于分析端口是否被中间设备阻塞。

命令格式:

traceroute <IP地址或主机名>

示例:

traceroute 192.168.118.201
traceroute -T -p 80 192.168.118.201

在这里插入图片描述
在这里插入图片描述


9. ip 和 iptables

用途: 查看本地防火墙是否阻止了端口。

命令格式:

iptables -L -n | grep <端口号>

示例:

iptables -L -n | grep 80

在这里插入图片描述


10. test-netconnection(Windows/Linux 兼容)

用途: 使用 PowerShell 或跨平台工具进行网络测试。

命令格式:

test-netconnection -computername <IP地址或主机名> -port <端口号>

在这里插入图片描述


三. 总结

工具检查类型特点
telnetTCP 连接轻量级,简单直接
ncTCP/UDP 连接强大,支持端口范围扫描
curlHTTP/HTTPS 服务专注于 Web 服务测试
nmap端口扫描功能全面,适合网络分析
ss本地监听端口查看监听状态
lsof本地使用端口查看端口占用进程
ping主机可达性不针对端口
traceroute路由跟踪分析中间路由问题
iptables防火墙规则检查端口是否被阻止

使用时根据场景选择合适的工具。

<think>我们使用`netstat`和`ss`命令查看Linux系统上开放的端口。这两个命令都可以提供网络连接、路由表、接口统计等信息。其中,`ss`命令是`netstat`的替代品,它能够显示更详细的TCP状态信息,并且在处理大量连接时速度更快。###1.使用`netstat`命令`netstat`(networkstatistics)是一个命令行工具,用于显示网络连接(传入和传出)、路由表、接口统计等。查看所有开放端口(监听和非监听的都显示):```bashnetstat-a```查看所有正在监听的TCP端口:```bashnetstat-ltn```-`-l`:仅显示监听状态的套接字。-`-t`:仅显示TCP连接。-`-n`:以数字形式显示地址和端口号(而不是尝试解析主机名、服务名)。查看所有正在监听的UDP端口:```bashnetstat-lun```查看所有正在监听的TCP和UDP端口:```bashnetstat-ltun```###2.使用`ss`命令`ss`(socketstatistics)是一个用来调查套接字的工具。它比`netstat`更快,并且提供了更多的信息。查看所有开放端口(监听和非监听的都显示):```bashss-a```查看所有正在监听的TCP端口:```bashss-ltn```-`-l`:显示监听状态的套接字。-`-t`:TCP套接字。-`-n`:不解析服务名称。查看所有正在监听的UDP端口:```bashss-lun```查看所有正在监听的TCP和UDP端口:```bashss-ltun```###3.使用`lsof`命令`lsof`(listopenfiles)可以列出当前系统打开的文件。在Linux中,一切皆文件,包括网络连接。查看所有打开的网络端口(包括监听和非监听的):```bashlsof-i```查看所有监听的TCP和UDP端口:```bashlsof-i-sTCP:LISTEN```###4.使用`nmap`扫描本地端口`nmap`是一个网络探测和安全审核工具。它可以用来扫描本地主机上的开放端口。扫描本地主机:```bashnmaplocalhost```扫描特定IP地址的主机:```bashnmap127.0.0.1```###总结以上命令中,`netstat`和`ss`是最常用的。`ss`是推荐使用的工具,因为它更快速且信息更详细。###示例:使用ss查看监听端口```bashss-ltn```输出可能如下:```StateRecv-QSend-QLocalAddress:PortPeerAddress:PortLISTEN01280.0.0.0:220.0.0.0:*LISTEN01000.0.0.0:250.0.0.0:*LISTEN0128[::]:22[::]:*LISTEN0100[::]:25[::]:*```这表示系统正在监听22端口(SSH)和25端口(SMTP)的IPv4和IPv6连接。###注意:-这些命令通常需要root权限才能显示所有端口信息。如果以普通用户运行,可能看不到某些端口。-如果系统没有安装这些命令,可以使用包管理器安装(如`apt`、`yum`等)。###§§相关问题§§:1.如何查看Linux系统上特定端口(例如80端口)是否被占用?2.如何查看某个进程(例如nginx)占用的端口?3.如何查看所有网络接口的统计信息?4.如何实时监控网络连接和端口状态?</think>### Linux查看开放端口命令Linux系统中,查看开放端口常用的命令有 **`netstat`**、**`ss`** 和 **`lsof`**。以下是详细使用方法: --- #### 1. **`netstat` 命令**(传统工具,部分新系统需手动安装) ```bash # 查看所有监听端口(TCP/UDP) sudo netstat -tuln # 解释参数: # -t: 显示TCP端口 # -u: 显示UDP端口 # -l: 仅显示监听状态的端口 # -n: 以数字形式显示端口(不解析服务名) # -p: 显示关联进程(需sudo) ``` **示例输出:** ``` Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1234/sshd tcp6 0 0 :::80 :::* LISTEN 5678/nginx ``` --- #### 2. **`ss` 命令**(`netstat`的现代替代,性能更高) ```bash # 查看所有监听端口 sudo ss -tuln # 参数同netstat: # -t: TCP, -u: UDP, -l: 监听, -n: 数字端口 # -p: 显示进程(需sudo) ``` **优势:** 执行速度更快,输出更简洁。 --- #### 3. **`lsof` 命令**(通过进程视角查看) ```bash # 查看所有监听端口 sudo lsof -i -P -n | grep LISTEN # 参数解释: # -i: 显示网络连接 # -P: 禁用端口名解析(显示数字端口) # -n: 禁用主机名解析(显示IP) ``` **示例输出:** ``` sshd 1234 root 3u IPv4 0xffff 0t0 TCP *:22 (LISTEN) nginx 5678 root 6u IPv6 0xeeee 0t0 TCP *:80 (LISTEN) ``` --- ### 常见场景示例 1. **检查特定端口(如80)是否开放**: ```bash sudo ss -tln | grep ':80' ``` 2. **查看进程占用的端口**(如Nginx): ```bash sudo lsof -p $(pgrep nginx) -nP -i ``` 3. **同时显示进程名和端口**: ```bash sudo netstat -tulnp ``` --- ### 注意事项 1. 需要 **`root`权限**(`sudo`)查看所有端口和进程信息。 2. 若命令不存在: - 安装`net-tools`包(含`netstat`):`sudo apt install net-tools` - 安装`lsof`:`sudo apt install lsof` --- ### 选择建议 - **推荐使用`ss`**:效率高,默认预装在现代Linux发行版。 - **调试进程用`lsof`**:查看具体进程的端口占用。 - **兼容性用`netstat`**:旧系统支持更好。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值