【Linux】如何快速检测目标ip的port开放情况

如果要用 nmapm命令测探 192.168.3.131 开放哪些端口,如何操作?

使用 Nmap 探测目标主机 192.168.3.131 的开放端口非常简单。根据你的具体需求,可以选择以下几种常用的操作方式:

1. 基础扫描(最常用)

如果你只是想快速查看目标主机开放了哪些常用端口,直接在终端输入以下命令即可。Nmap 默认会扫描 1000 个最常用的 TCP 端口:

nmap 192.168.3.131

2. 扫描所有端口

默认扫描可能会遗漏一些非常用端口。如果你想探测从 1 到 65535 的所有端口,可以使用 -p- 参数(建议配合 -T4 提升扫描速度):

nmap -p- -T4 192.168.3.131

注:-p- 等价于 -p 1-65535-T4 代表使用较快的扫描速度模板。

3. 指定特定端口扫描

如果你只关心某几个特定的端口(例如只测探 80、443 和 22 端口),可以使用 -p 参数进行精准指定:

nmap -p 80,443,22 192.168.3.131

💡 进阶提示

  • 识别服务版本:如果你不仅想知道端口是否开放,还想知道端口上运行的是什么软件及具体版本,可以加上 -sV 参数,例如:nmap -sV 192.168.3.131
  • 权限说明:部分高级扫描方式(如隐蔽性较好的半开放扫描 -sS 或操作系统探测 -O)通常需要管理员权限(在 Linux/macOS 下需在命令前加 sudo)。

⚠️ 合规提醒:请确保你拥有对目标主机 192.168.3.131 的合法扫描授权,未经授权对他人网络或主机进行端口扫描可能违反相关法律法规或网络安全规定。

$ cat scan_ports.sh

#!/bin/bash

# 目标主机IP
TARGET_IP="192.168.3.131"
# 设置单个端口的连接超时时间(秒)
TIMEOUT=2

echo "开始扫描目标主机 $TARGET_IP 的 1-65535 端口,请稍候..."


for port in {1..65535}; do
    (
        if timeout $TIMEOUT bash -c "echo >/dev/tcp/$TARGET_IP/$port" &>/dev/null; then
           # 绿色显示开放端口
            echo -e "\e[32m[+] 端口 $port 开放\e[0m" 
        fi
    ) &
done
wait

如果直接遍历 1 到 65535 个端口会非常耗时(如果每个端口等待 3 秒超时,跑完可能需要几天)。
为了实用性,在脚本中默认加入了并发执行(后台运行),这样可以在几分钟内完成全端口扫描。

💡 脚本运行与进阶说明:

  1. 如何运行
    保存文件后,需要先赋予执行权限,然后运行:

    chmod +x scan_ports.sh
    ./scan_ports.sh
    
  2. 如何查看开放的端口
    上面的脚本是“静默扫描”,跑完后只会提示完成。

  3. 关于 /dev/tcp 的小知识
    /dev/tcp 是 Bash 的内置功能,不需要安装 nmapnc 等额外工具,非常适合在受限的 Linux 环境中使用。

  4. 性能与风险提示

    • 如果你把 TIMEOUT 设置得较长(比如 3 秒),并且网络中有很多端口是不通的,脚本会瞬间在后台创建几万个进程,可能会导致你的电脑短暂卡顿。如果遇到卡顿,可以将 TIMEOUT 改为 1(即 1 秒超时)。
    • 未经授权对非本人管理的服务器进行全端口扫描可能会触发对方的防火墙告警,请确保你在合规的网络环境中进行测试。
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容