首页 > 其他分享 >混沌工程工具-阿里ChaosBlade的实现说明之二

混沌工程工具-阿里ChaosBlade的实现说明之二

时间:2024-12-16 09:44:39浏览次数:3  
标签:61.148 ChaosBlade 混沌 之二 7dgroup2 18 win nop 243.67

ChaosBlade模拟端口不通的场景。

模拟端口不通
模拟之前
(base) GaoLouMac:~ Zee$ telnet 101.201.210.163 9100
Trying 101.201.210.163...

Connected to 101.201.210.163.
Escape character is '^]'.
可以看到这个端口是通的。

模拟端口不通
[root@7dgroup2 chaosblade-0.2.0]# ./blade create network drop --local-port 9100
{"code":200,"success":true,"result":"55321ca383ef272c"}
[root@7dgroup2 chaosblade-0.2.0]#
模拟之后
可以看到端口已经连不上了。

(base) GaoLouMac:~ Zee$ telnet 101.201.210.163 9100
Trying 101.201.210.163...
telnet: connect to address 101.201.210.163: Operation timed out
telnet: Unable to connect to remote host
(base) GaoLouMac:~ Zee$
可是怎么实现的端口连不上呢?
实现代码
通过如下代码,可以看到,ChaosBlade是通过iptables命令添加drop规则来实现的禁用端口。

以下代码在dropnetwork.go中可以看到。

if localPort != "" {
channel.Run(ctx, "iptables", fmt.Sprintf(-D INPUT -p tcp --dport %s -j DROP, localPort))
channel.Run(ctx, "iptables", fmt.Sprintf(-D INPUT -p udp --dport %s -j DROP, localPort))
}
iptables配置
[root@7dgroup2 chaosblade-0.2.0]# iptables -L -n|grep 9100
DROP tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:9100
DROP udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:9100
[root@7dgroup2 chaosblade-0.2.0]#
通过查询iptables记录,可以看到,ChaoBlade添加了两条记录把9100端口的tcp、udp包都drop掉。大家注意一下,这个操作只是暂时生效,iptables的文件中是没有记录的。

这种模拟效果是什么样呢?

模拟效果解析
模拟之前抓包结果
[root@7dgroup2 ~]# tcpdump -i eth0 port 9000
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
18:40:19.162485 IP 61.148.243.67.9485 > 7dgroup2.cslistener: Flags [S], seq 4090540787, win 65535, options [mss 1400,nop,wscale 5,nop,nop,TS val 1187658956 ecr 0,sackOK,eol], length 0
18:40:19.162592 IP 7dgroup2.cslistener > 61.148.243.67.9485: Flags [S.], seq 3080683668, ack 4090540788, win 28960, options [mss 1460,sackOK,TS val 871980746 ecr 1187658956,nop,wscale 7], length 0
18:40:19.202395 IP 61.148.243.67.9485 > 7dgroup2.cslistener: Flags [.], ack 1, win 4120, options [nop,nop,TS val 1187658998 ecr 871980746], length 0

// 上面是连接过程
// 下面是断开过程

18:40:51.771422 IP 61.148.243.67.9485 > 7dgroup2.cslistener: Flags [P.], seq 1:7, ack 1, win 4120, options [nop,nop,TS val 1187690315 ecr 871980746], length 6
18:40:51.771534 IP 7dgroup2.cslistener > 61.148.243.67.9485: Flags [.], ack 7, win 227, options [nop,nop,TS val 872013355 ecr 1187690315], length 0
18:40:51.772024 IP 7dgroup2.cslistener > 61.148.243.67.9485: Flags [P.], seq 1:99, ack 7, win 227, options [nop,nop,TS val 872013355 ecr 1187690315], length 98
18:40:51.772062 IP 7dgroup2.cslistener > 61.148.243.67.9485: Flags [F.], seq 99, ack 7, win 227, options [nop,nop,TS val 872013355 ecr 1187690315], length 0
18:40:51.821279 IP 61.148.243.67.9485 > 7dgroup2.cslistener: Flags [.], ack 99, win 4117, options [nop,nop,TS val 1187690362 ecr 872013355], length 0
18:40:51.821336 IP 61.148.243.67.9485 > 7dgroup2.cslistener: Flags [.], ack 100, win 4117, options [nop,nop,TS val 1187690362 ecr 872013355], length 0
18:40:51.821355 IP 61.148.243.67.9485 > 7dgroup2.cslistener: Flags [F.], seq 7, ack 100, win 4117, options [nop,nop,TS val 1187690364 ecr 872013355], length 0
18:40:51.821380 IP 7dgroup2.cslistener > 61.148.243.67.9485: Flags [.], ack 8, win 227, options [nop,nop,TS val 872013404 ecr 1187690364], length 0
从上面的结果来看,没有创建iptable规则之前,通讯完全正常。

标标准准的tcp握手和挥手的过程呀。

模拟之后抓包结果
18:43:12.531311 IP 61.148.243.67.9486 > 7dgroup2.cslistener: Flags [S], seq 899103396, win 65535, options [mss 1400,nop,wscale 5,nop,nop,TS val 1187826295 ecr 0,sackOK,eol], length 0
18:43:13.551168 IP 61.148.243.67.9486 > 7dgroup2.cslistener: Flags [S], seq 899103396, win 65535, options [mss 1400,nop,wscale 5,nop,nop,TS val 1187827296 ecr 0,sackOK,eol], length 0
18:43:14.611149 IP 61.148.243.67.9486 > 7dgroup2.cslistener: Flags [S], seq 899103396, win 65535, options [mss 1400,nop,wscale 5,nop,nop,TS val 1187828296 ecr 0,sackOK,eol], length 0
18:43:15.582777 IP 61.148.243.67.9486 > 7dgroup2.cslistener: Flags [S], seq 899103396, win 65535, options [mss 1400,nop,wscale 5,nop,nop,TS val 1187829296 ecr 0,sackOK,eol], length 0
18:43:16.622832 IP 61.148.243.67.9486 > 7dgroup2.cslistener: Flags [S], seq 899103396, win 65535, options [mss 1400,nop,wscale 5,nop,nop,TS val 1187830296 ecr 0,sackOK,eol], length 0
18:43:17.654309 IP 61.148.243.67.9486 > 7dgroup2.cslistener: Flags [S], seq 899103396, win 65535, options [mss 1400,nop,wscale 5,nop,nop,TS val 1187831296 ecr 0,sackOK,eol], length 0
18:43:19.691527 IP 61.148.243.67.9486 > 7dgroup2.cslistener: Flags [S], seq 899103396, win 65535, options [mss 1400,nop,wscale 5,nop,nop,TS val 1187833296 ecr 0,sackOK,eol], length 0
18:43:23.741290 IP 61.148.243.67.9486 > 7dgroup2.cslistener: Flags [S], seq 899103396, win 65535, options [mss 1400,nop,wscale 5,nop,nop,TS val 1187837296 ecr 0,sackOK,eol], length 0
18:43:31.761123 IP 61.148.243.67.9486 > 7dgroup2.cslistener: Flags [S], seq 899103396, win 65535, options [mss 1400,nop,wscale 5,nop,nop,TS val 1187845296 ecr 0,sackOK,eol], length 0
18:43:48.062869 IP 61.148.243.67.9487 > 7dgroup2.cslistener: Flags [S], seq 899103396, win 65535, options [mss 1400,nop,wscale 5,nop,nop,TS val 1187861296 ecr 0,sackOK,eol], length 0
18:44:20.852129 IP 61.148.243.67.9705 > 7dgroup2.cslistener: Flags [S], seq 899103396, win 65535, options [m

标签:61.148,ChaosBlade,混沌,之二,7dgroup2,18,win,nop,243.67
From: https://www.cnblogs.com/wyx321/p/18609264

相关文章

  • 混沌工程工具-阿里ChaosBlade的实现说明之三
    今天描述下它是怎么实现的网络丢包和延时的。丢包模拟模拟丢包[root@7dgroup2chaosblade-0.2.0]#./bladecreatenetworkloss--interfaceeth0--percent50{"code":200,"success":true,"result":"c29053229c16c839"}[root@7dgroup2chaosblade-0.2.0]#丢......
  • 混沌工程工具-阿里ChaoBlade的实现说明
    根据混沌工程的principles,里面这样定义了:ChaosEngineeringisthedisciplineofexperimentingonasysteminordertobuildconfidenceinthesystem’scapabilitytowithstandturbulentconditionsinproduction.中文翻译是这样的:混沌工程是在分布式系统上进行实验......
  • ChaosBlade-Operator使用之一模拟POD丢包场景
    ChaosBalde-Operator实现说明ChaosBlade-Operator是ChaosBlade的K8s平台场景的实现。将混沌实验通过Kubernetes标准的CRD方式定义,用户可以像定义Deployment或StatefulSet那样定义ChaosBlade实验,只要对kubectl和Kubernetes对象有所了解,就可以轻松的创建、更新和删除......
  • 搞定leetcode面试经典150题之二叉树
    系列博客目录文章目录系列博客目录基础知识1.二叉树的基本定义2.二叉树的性质3.二叉树的类型4.二叉树的遍历5.二叉树的实现6.常见的二叉树算法7.二叉树的应用总结例题104.二叉树的最大深度226.翻转二叉树101.对称二叉树100.相同的树102.二叉树的层序遍历98.验......
  • Go实战全家桶之二十四: 指标系统的一个大坑
    历史代码:大坑指标系统的代码使用的时间标准time,.Local而PC上是Asia/Shanghai,而linux环境为utc而es存贮的是utc时间,不能简单的用+8,-8而是计算查询用北京时间,保存按utc\还有一个问题用的是utc天执行的定时任务解决办法:测试func(self*TestGeneralserviceSuite)Test00......
  • Spring Boot教程之二十五: 使用 Tomcat 部署项目
    SpringBoot–使用Tomcat部署项目SpringBoot是一个基于微服务的框架,在其中创建可用于生产的应用程序只需很少的时间。SpringBoot建立在Spring之上,包含Spring的所有功能。如今,它正成为开发人员的最爱,因为它是一个快速可用于生产的环境,使开发人员能够直接专注于逻辑......
  • Spring Boot教程之二十七:Thymeleaf 示例
    SpringBoot–Thymeleaf示例Thymeleaf是一个基于Java的服务器端模板引擎,适用于Web和独立环境,能够处理HTML、XML、JavaScript、CSS甚至纯文本。它比JPS更强大,负责在UI上呈现动态内容。该引擎允许后端和前端开发人员在同一视图上并行工作。它可以直接访问Java对......
  • 神经网络入门之二 网络搭建
    此篇文章在2022年12月1日被记录入门神经网络二网络搭建使用哪种深度学习框架目前主流的神经网络框架有tensorflow、kears,国产的有百度的PaddlePaddle,但是我是从yolov5入坑的,yolov5官方代码使用的是pytorch框架,所以我使用torch,而且torch框架上手很简单,资源较多坑较少。......
  • elasticsearch 学习笔记之二 常见接口
    一、索引操作类1、创建索引(PUT/索引名称)PUT/my-index-000001请求body{"settings":{"index":{"number_of_shards":3,//创建3个主片"number_of_replicas":2//每个主片都会有两个副本}}} 未指定mapping的情况下,使用默认的2、删......
  • AI大模型系列之二:ChatGPT科普(深度好文)
     目录引言语言模型的发展历程ChatGPT是什么?预训练ChatGPT分几步?第一步:如何炼成ChatGPT?第二步:如何微调ChatGPT?第三步:如何强化ChatGPT?GPT背后的黑科技Transformer是什么?Transformer在计算机视觉上CV最佳作品?ChatGPT模型的基本原理引言开篇之前,先用战略......