Linux 测试本机与192.168.1.130 主机161/udp端口连通性

Linux 测试本机与 192.168.1.130 主机 161/UDP 端口连通性

161/UDP 端口是 SNMP(简单网络管理协议)的标准端口。以下是多种测试方法:

🛠️ 1. 使用 nmap 进行专业测试(推荐)

bash 复制代码
sudo nmap -sU -p 161 -Pn 192.168.1.130

结果解读:

  • open:端口开放(SNMP 服务正常运行)
  • open|filtered:端口可能开放但有过滤
  • closed:端口关闭(无 SNMP 服务)
  • filtered:端口被防火墙阻止

📡 2. 使用 netcat (nc) 进行基本测试

bash 复制代码
# 发送测试数据包(SNMP 无效查询)
echo "public" | nc -u -w 2 192.168.1.130 161

# 捕获任何响应(可能无响应)
sudo tcpdump -ni any host 192.168.1.130 and port 161 -c 5 -v

🔭 3. 使用 SNMP 专用工具测试

snmpget(snmp 工具包)

bash 复制代码
# 安装 SNMP 工具
sudo apt install snmp  # Debian/Ubuntu
sudo yum install net-snmp-utils  # RHEL/CentOS

# 尝试获取系统描述(OID: 1.3.6.1.2.1.1.1.0)
snmpget -v2c -c public 192.168.1.130 1.3.6.1.2.1.1.1.0

使用 snmpwalk(更全面的测试)

bash 复制代码
snmpwalk -v2c -c public 192.168.1.130

🧪 4. Python 脚本测试

bash 复制代码
import socket

def test_snmp_port(host, port=161):
    try:
        # 创建 UDP 套接字
        sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
        sock.settimeout(3.0)
        
        # 发送无效 SNMP 查询(模拟请求)
        invalid_snmp_request = bytes.fromhex("30 2c 02 01 00 04 07 70 75 62 6c 69 63 a0 1e 02 01 01 02 01 00 02 01 00 30 13 30 11 06 0d 2b 06 01 04 01 89 73 02 01 01 01 00 05 00")
        sock.sendto(invalid_snmp_request, (host, port))
        
        try:
            # 尝试接收响应
            data, addr = sock.recvfrom(1024)
            print(f"✅ SNMP 服务响应: 来自 {addr[0]} 的响应数据包 ({len(data)} 字节)")
            return True
        except socket.timeout:
            print("⚠️  SNMP 服务无响应 (请求可能被忽略/过滤)")
            return False
            
    except Exception as e:
        print(f"❌ 测试失败: {e}")
        return False

test_snmp_port("192.168.1.130")

🔍 5. 网络诊断与抓包

使用 tcpdump 抓包

bash 复制代码
# 在后台启动抓包
sudo tcpdump -ni any host 192.168.1.130 and udp port 161 -w snmp-test.pcap &
tcpdump_pid=$!

# 触发测试(使用上述任一方法)
snmpget -v2c -c public 192.168.1.130 sysDescr.0

# 停止抓包
sudo kill $tcpdump_pid

# 分析抓包文件
tcpdump -r snmp-test.pcap -v

🧩 6. 使用专用网络工具

使用 hping3

复制代码
sudo hping3 -2 -c 3 -p 161 192.168.1.130

使用 nping(nmap 附带工具)

bash 复制代码
sudo nping --udp -p 161 192.168.1.130

🔧 故障排除步骤

  1. 检查基本连通性

    bash 复制代码
    ping -c 4 192.168.1.130
  2. 检查本地防火墙

    复制代码
    sudo iptables -L -n -v | grep 161
  3. 检查目标主机 SNMP 状态

    复制代码
    # 如果目标主机可访问,检查 SNMP 服务状态
    ssh user@192.168.1.130 "sudo systemctl status snmpd"
  4. 检查中间防火墙

    复制代码
    traceroute 192.168.1.130 -U -p 161
  5. 尝试变更 SNMP 社区字符串

    复制代码
    snmpget -v2c -c private 192.168.1.130 sysDescr.0

📊 SNMP 端口测试结果分析

结果 含义 解决方案
✅ SNMP 响应 端口正常开放 -
🔇 SNMP 错误 服务运行但请求无效 使用正确的 SNMP 版本/社区字符串
⚠️ 无响应 服务未运行或过滤 检查目标 SNMP 服务和防火墙
🚫 ICMP 不可达 端口关闭 确认目标是否运行 SNMP 服务
🛑 无流量 网络不通 检查网络连接和路由

💡 专业建议

  1. SNMP 版本选择

    • 尝试不同 SNMP 版本:-v1-v2c-v3
    • v3 需要额外认证参数
  2. 安全考虑

    • 测试时使用 public 社区字符串(但实际环境避免使用)
    • 测试后禁用公共访问
  3. 防火墙规则

    复制代码
    # 临时放行 SNMP 流量
    sudo iptables -I INPUT -p udp --dport 161 -j ACCEPT
  4. 定期监控

    复制代码
    # 使用 cron 定期测试
    */5 * * * * /usr/bin/snmpget -v2c -c public 192.168.1.130 sysDescr.0 >/dev/null 2>&1 || echo "SNMP 服务不可达" | mail -s "SNMP Alert" admin@example.com

使用这些方法组合测试,您可以全面评估 SNMP 端口 161/UDP 的连通性和服务状态。

相关推荐
吳所畏惧30 分钟前
宝塔面板Redis密码修改指南:SSH命令修改 vs 面板UI界面修改,哪个更靠谱?
运维·服务器·数据库·redis·缓存·ssh
DFT计算杂谈34 分钟前
无 Root 权限在 Tesla K80 零门槛部署 DeepSeek 大模型
linux·服务器·网络·数据库·机器学习
HiDev_1 小时前
【非标自动化】2、认识元器件(确定目标)
运维·自动化
Zhang~Ling2 小时前
从 fopen 到 struct file:从零开始拆解 Linux 文件 I/O
linux·运维·服务器
DeeplyMind2 小时前
Linux 深入 per-VMA lock:Linux 缺页路径如何摆脱 mmap_lock
linux·per-vma lock
爱写代码的森2 小时前
蒙三方库 | harmony-utils之FileUtil文件重命名与属性查询详解
linux·运维·服务器·华为·harmonyos·鸿蒙·huawei
中微极客2 小时前
2026主流AI Agent框架技术选型与性能对比
运维·网络·人工智能
久曲健的测试窝2 小时前
智能座舱自动化测试落地方案:数字仿真搭配实车实测,解决用例运维与场景失真难题
运维
XMAIPC_Robot3 小时前
软硬协同实时控制|RK3588业务调度+FPGA硬件时序,ethercat实现半导体设备微秒级响应(125us)
linux·arm开发·人工智能·fpga开发
AOwhisky3 小时前
Python 学习笔记(第十五期)——运维自动化(下·后篇):堡垒机实战——paramiko高阶篇
运维·python·学习·云原生·自动化·运维开发