负载均衡故障排错指南 (4)

本文涉及的产品
传统型负载均衡 CLB,每月750个小时 15LCU
EMR Serverless StarRocks,5000CU*H 48000GB*H
应用型负载均衡 ALB,每月750个小时 15LCU
简介:
2.4 nmap下的nping
本来,我是想给大家介绍hping,一款命令行下使用的TCP/IP数据包发送工具,经常用于安全审计、网络或防火墙测试。但是,在搜集资料的过程中,我发现了一个类似的但可能是更好的工具:nping。由于hping的开发已经基本停滞,而从nmap 5.3开始,hping大多数的功能已经陆续移植到nping,因此,从长远的发展来看,我推荐大家使用nping。
nping同样是一款开源的网络数据包发送工具,它不但能像传统的ping一样对目标主机的进行检测,而且能够产生各种各样的TCP、UDP、ICMP、ARP报文,甚至是DoS攻击数据包。通过这个工具,配合wireshark,可以让我们更加深入的了解网络协议中的细节。
目前,nping的最新版本可以通过安装最新的nmap软件包获得。Nmap的最新版本为v5.51,可以通过以下地址下载:
 
nping的使用很简单,其基本的命令行格式为:
nping [Probe mode] [Options] {target specification}
Target specification即探测目标,可以是主机名、域名、IP地址或一段网络地址。
Probe Mode指探测模式,nping支持以下几种探测模式:

--tcp-connect                  Unprivileged TCP connect probe mode.

--tcp                          TCP probe mode.

--udp                         UDP probe mode.

--icmp                       ICMP probe mode.

--arp                          ARP/RARP probe mode.

--tr, --traceroute              Traceroute mode (can only be used with TCP/ UDP/ ICMP modes).

这里,比较容易迷惑的是--tcp-connect和--tcp两种探测模式的区别。简单的来讲,--tcp-connect发送的数据包是由底层系统的TCP协议栈建立的,而--tcp发送的数据包是有nping程序生成的,因此,--tcp可以对数据包进行更多的定制和控制。
至于Options,各种探测模式所支持的选项并不太相同,但是大致上,这些选项包括:指定目的端口、指定源端口、各种flag标记位设定等等。实际上,就是根据各个协议中的选项来构造数据包。甚至是生成一些有问题的数据包,比如:发送一些具有无效checksum的TCP数据包。
下面,我们将通过几个简单的例子来展示nping的强大之处。

1)        最简单的使用方式:

 
 
  1. [root@centos ~]# nping scanme.nmap.org 
  2.   
  3.  
  4. Starting Nping 0.5.51 ( http://nmap.org/nping ) at 2011-10-14 17:48 CST 
  5.  
  6. SENT (0.3372s) ICMP 172.16.16.32 > 74.207.244.221 Echo request (type=8/code=0) ttl=64 id=52152 iplen=28 
  7.  
  8. RCVD (0.5527s) ICMP 74.207.244.221 > 172.16.16.32 Echo reply (type=0/code=0) ttl=46 id=27226 iplen=28 
  9.  
  10. SENT (1.3380s) ICMP 172.16.16.32 > 74.207.244.221 Echo request (type=8/code=0) ttl=64 id=52152 iplen=28 
  11.  
  12. RCVD (1.5502s) ICMP 74.207.244.221 > 172.16.16.32 Echo reply (type=0/code=0) ttl=46 id=27227 iplen=28 
  13.  
  14. SENT (2.3396s) ICMP 172.16.16.32 > 74.207.244.221 Echo request (type=8/code=0) ttl=64 id=52152 iplen=28 
  15.  
  16. RCVD (2.5517s) ICMP 74.207.244.221 > 172.16.16.32 Echo reply (type=0/code=0) ttl=46 id=27228 iplen=28 
  17.  
  18. SENT (3.3407s) ICMP 172.16.16.32 > 74.207.244.221 Echo request (type=8/code=0) ttl=64 id=52152 iplen=28 
  19.  
  20. RCVD (3.5531s) ICMP 74.207.244.221 > 172.16.16.32 Echo reply (type=0/code=0) ttl=46 id=27229 iplen=28 
  21.  
  22. SENT (4.3423s) ICMP 172.16.16.32 > 74.207.244.221 Echo request (type=8/code=0) ttl=64 id=52152 iplen=28 
  23.  
  24. RCVD (4.5612s) ICMP 74.207.244.221 > 172.16.16.32 Echo reply (type=0/code=0) ttl=46 id=27230 iplen=28 
  25.   
  26.  
  27. Max rtt: 218.368ms | Min rtt: 211.530ms | Avg rtt: 213.680ms 
  28.  
  29. Raw packets sent: 5 (140B) | Rcvd: 5 (230B) | Lost: 0 (0.00%) 
  30.  
  31. Tx time: 4.00576s | Tx bytes/s: 34.95 | Tx pkts/s: 1.25 
  32.  
  33. Rx time: 5.00626s | Rx bytes/s: 45.94 | Rx pkts/s: 1.00 
  34.  
  35. Nping done: 1 IP address pinged in 5.36 seconds 
  36.  
  37. [root@centos ~]# 
最简单的使用方式即忽略所有的探测模式和选项,后面指定你的探测目标。在这种方式下,nping会发送5个ICMP request到探测目标。探测结束后,会在最后列出探测的一些统计数据。

2)        nping推荐的一个典型的例子(也很有趣  )

 
 
  1. [root@centos ~]# nping -c 1 --tcp -p 80,433 scanme.nmap.org www.baidu.com 
  2.   
  3.  
  4. Starting Nping 0.5.51 ( http://nmap.org/nping ) at 2011-10-14 18:03 CST 
  5.  
  6. SENT (5.0542s) TCP 172.16.16.32:41300 > 74.207.244.221:80 S ttl=64 id=17109 iplen=40 seq=2938784718 win=1480 
  7.  
  8. RCVD (5.2703s) TCP 74.207.244.221:80 > 172.16.16.32:41300 SA ttl=46 id=0 iplen=44 seq=385149730 win=14600 <mss 1420> 
  9.  
  10. SENT (6.0550s) TCP 172.16.16.32:41300 > 61.135.169.125:80 S ttl=64 id=17109 iplen=40 seq=2938784718 win=1480 
  11.  
  12. SENT (7.0569s) TCP 172.16.16.32:41300 > 74.207.244.221:433 S ttl=64 id=17109 iplen=40 seq=2938784718 win=1480 
  13.  
  14. RCVD (7.2698s) TCP 74.207.244.221:433 > 172.16.16.32:41300 RA ttl=46 id=0 iplen=40 seq=0 win=0 
  15.  
  16. SENT (8.0580s) TCP 172.16.16.32:41300 > 61.135.169.125:433 S ttl=64 id=17109 iplen=40 seq=2938784718 win=1480 
  17.   
  18.  
  19. Statistics for host scanme.nmap.org (74.207.244.221): 
  20.  | Probes Sent: 2 | Rcvd: 2 | Lost: 0 (0.00%) 
  21.  
  22.  |_ Max rtt: 215.424ms | Min rtt: 212.379ms | Avg rtt: 213.901ms 
  23.  
  24. Statistics for host www.baidu.com (61.135.169.125): 
  25.  | Probes Sent: 2 | Rcvd: 0 | Lost: 2 (100.00%) 
  26.  |_ Max rtt: N/A | Min rtt: N/A | Avg rtt: N/A 
  27.  
  28. Raw packets sent: 4 (160B) | Rcvd: 2 (92B) | Lost: 2 (50.00%) 
  29.  
  30. Tx time: 3.00463s | Tx bytes/s: 53.25 | Tx pkts/s: 1.33 
  31.  
  32. Rx time: 4.00604s | Rx bytes/s: 22.97 | Rx pkts/s: 0.50 
  33.  
  34. Nping done: 2 IP addresses pinged in 9.07 seconds 
  35.  
  36. [root@centos ~]# 
这是一个很有趣的例子,也是nping的官方手册中推荐的一种典型用法:
  •    指定发送的数据包数据量: -c 1
  •    指定探测模式: --tcp
  •    指定探测的目标端口(多个): -p 80,443
  •    指定探测目标(多个): scanme.nmap.org和www.baidu.com

这个例子的有趣之处在于,测试完毕之后,我发现所有对www.baidu.com的测试数据包均未收到回应。这很奇怪,因为按道理,像百度这么大的网站不应该不回应我的测试包的。因此,我仔细查看了前面的数据流,终于发现了其中的蹊跷之处:所有的数据包均是通过41300这个相同的端口发送出去的。由于我们上网的NAT设备不支持EIM (Endpoint Independent Mapping,也称作Full-cone NAT),因此,所有发往www.baidu.com的数据包都被这台NAT设备给丢弃了。具体的原因我们到后面再为大家进行详细的分析。或者,有兴趣的朋友可以自己去翻阅一下RFC5382。

3)        简单的攻击测试

利用nping强大的数据包构造功能,我们能够模拟出一些常见的网络层攻击,以验证目标对这些测试的防御情况。
 
 
  1. [root@centos ~]# nping --tcp -p 80 --flag syn,ack,rst -c 5 --rate 10 scanme.nmap.org 
  2.   
  3.  
  4. Starting Nping 0.5.51 ( http://nmap.org/nping ) at 2011-10-14 18:27 CST 
  5.  
  6. SENT (0.8205s) TCP 172.16.16.32:3167 > 74.207.244.221:80 SRA ttl=64 id=31756 iplen=40 seq=2249461123 win=1480 
  7.  
  8. SENT (0.9215s) TCP 172.16.16.32:3167 > 74.207.244.221:80 SRA ttl=64 id=31756 iplen=40 seq=2249461123 win=1480 
  9.  
  10. SENT (1.0221s) TCP 172.16.16.32:3167 > 74.207.244.221:80 SRA ttl=64 id=31756 iplen=40 seq=2249461123 win=1480 
  11.  
  12. SENT (1.1227s) TCP 172.16.16.32:3167 > 74.207.244.221:80 SRA ttl=64 id=31756 iplen=40 seq=2249461123 win=1480 
  13.  
  14. SENT (1.2233s) TCP 172.16.16.32:3167 > 74.207.244.221:80 SRA ttl=64 id=31756 iplen=40 seq=2249461123 win=1480 
  15.   
  16.  
  17. Max rtt: N/A | Min rtt: N/A | Avg rtt: N/A 
  18.  
  19. Raw packets sent: 5 (200B) | Rcvd: 0 (0B) | Lost: 5 (100.00%) 
  20.  
  21. Tx time: 0.40352s | Tx bytes/s: 495.64 | Tx pkts/s: 12.39 
  22.  
  23. Rx time: 1.40498s | Rx bytes/s: 0.00 | Rx pkts/s: 0.00 
  24.  
  25. Nping done: 1 IP address pinged in 2.24 seconds 
  26.  
  27. [root@centos ~]# 
在上面的例子中,我们利用nping构造出了一些具有异常flag的TCP数据包,我们可以通过这些数据包查看目标的响应情况。
  •    指定数据包的flag: --flag syn,ack,rst
  •    指定发送的数据包数量: -c 5
  •    指定发送的速率: --rate 10
在这里,我只是简单介绍了nping的一些使用方式。利用nping可以帮助我们更好的了解TCP/IP协议的工作机制。我们在后面的文章中,将会经常使用这些工具。因此,能够熟练的应用这些工具,将会对理解后面的内容有很大帮助。
详细的了解nping的使用方式,最好的教材应该是官方的nping手册了,大家可以通过下面的链接来进行进一步的阅读。

http://nmap.org/book/nping-man.html


本文转自 virtualadc 51CTO博客,原文链接:http://blog.51cto.com/virtualadc/687844

相关实践学习
SLB负载均衡实践
本场景通过使用阿里云负载均衡 SLB 以及对负载均衡 SLB 后端服务器 ECS 的权重进行修改,快速解决服务器响应速度慢的问题
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
相关文章
|
6月前
|
消息中间件 运维 负载均衡
【Kafka】Kafka 实现负载均衡与故障转移
【4月更文挑战第5天】【Kafka】Kafka 实现负载均衡与故障转移
|
2月前
|
负载均衡 网络协议 Unix
Nginx负载均衡与故障转移实践
Nginx通过ngx_http_upstream_module模块实现负载均衡与故障转移,适用于多服务器环境。利用`upstream`与`server`指令定义后端服务器组,通过`proxy_pass`将请求代理至这些服务器,实现请求分发。Nginx还提供了多种负载均衡策略,如轮询、权重分配、IP哈希等,并支持自定义故障转移逻辑,确保系统稳定性和高可用性。示例配置展示了如何定义负载均衡设备及状态,并应用到具体server配置中。
|
3月前
|
消息中间件 负载均衡 Kafka
Kafka 实现负载均衡与故障转移:深入分析 Kafka 的架构特点与实践
【8月更文挑战第24天】Apache Kafka是一款专为实时数据处理和流传输设计的高性能消息系统。其核心设计注重高吞吐量、低延迟与可扩展性,并具备出色的容错能力。Kafka采用分布式日志概念,通过数据分区及副本机制确保数据可靠性和持久性。系统包含Producer(消息生产者)、Consumer(消息消费者)和Broker(消息服务器)三大组件。Kafka利用独特的分区机制实现负载均衡,每个Topic可以被划分为多个分区,每个分区可以被复制到多个Broker上,确保数据的高可用性和可靠性。
62 2
|
6月前
|
域名解析 缓存 运维
【域名解析DNS专栏】DNS解析策略:如何实现负载均衡与故障转移
【5月更文挑战第23天】DNS在互联网中扮演关键角色,将域名转换为IP地址。本文探讨DNS的负载均衡和故障转移技术,以增强服务可用性和性能。负载均衡包括轮询(简单分配流量)和加权轮询(按服务器处理能力分配)。故障转移通过主备策略和TTL值实现快速切换,确保服务连续性。实践案例展示了在电商网站如何应用这些策略。DNS策略优化可提升网站速度和稳定性,借助云服务和智能工具,DNS管理更加高效。
526 1
【域名解析DNS专栏】DNS解析策略:如何实现负载均衡与故障转移
|
5月前
|
负载均衡 算法 应用服务中间件
解密Nginx负载均衡:实现流量分发与故障转移
解密Nginx负载均衡:实现流量分发与故障转移
171 0
|
6月前
|
负载均衡 算法 应用服务中间件
解密Nginx负载均衡:实现流量分发与故障转移
解密Nginx负载均衡:实现流量分发与故障转移
218 1
|
6月前
|
负载均衡 算法 Nacos
【Ribbon实现客户端负载均衡和故障转移】—— 每天一点小知识
【Ribbon实现客户端负载均衡和故障转移】—— 每天一点小知识
220 0
|
SQL 存储 分布式计算
Flume学习---2、Flume进阶(事务)、负载均衡、故障转移、聚合
Flume学习---2、Flume进阶(事务)、负载均衡、故障转移、聚合
|
监控 负载均衡
Flume学习---2、Flume进阶(事务)、负载均衡、故障转移、聚合(二)
Flume学习---2、Flume进阶(事务)、负载均衡、故障转移、聚合(二)
|
SQL 存储 分布式计算
Flume学习---2、Flume进阶(事务)、负载均衡、故障转移、聚合(一)
Flume学习---2、Flume进阶(事务)、负载均衡、故障转移、聚合(一)
下一篇
无影云桌面