巧用iptables模拟 络故障测试

企业中的应用往往是嵌套的比较深的,不是孤立存在的,应用的运行环境又是复杂多变的,这样就会导致在日常的系统巡检中经常能够发现一些接口请求的故障 错,如调用超时(Connection timeout)或者请求拒绝(Connection refused)的情况,这种 错要是没处理好,一不小心就会导致系统宕机,更严重导致“雪崩效应”(分布式系统中经常会出现某个基础服务不可用造成整个系统不可用的情况, 这种现象被称为服务雪崩效应)。这里不具体讨论如何解决雪崩效应(如设计上引入熔断限流等举措),主要是讲巧妙利用iptables模拟 络故障对应用健壮性进行测试

Iptables是用于IPV4包过滤及NAT的管理工具。用于在Linux内核中设置、维护及检查IPV4数据包过滤规则表。执行iptables需要root权限。iptables可以作为软件防火墙使用,这里主要就利用iptables对端口的限制模拟 络故障进行测试。

1.模拟连接拒绝

1.1.假设客户端IP为192.168.2.111,服务器监听端口为8888。在服务器执行iptables命令设置使客户端连接请求被拒绝,会出现连接拒绝异常。

iptables -I INPUT -p tcp -s 192.168.2.111 –dport 8888 -j REJECT

1.2.假设服务器IP为192.168.2.222,监听端口为8888。在客户端执行iptables命令设置使客户端连接请求被拒绝,会出现连接拒绝异常。

iptables -I OUTPUT -p tcp -d 192.168.2.222 –dport 8888 -j REJECT

模拟连接被拒绝,使用以下命令”telnet 192.168.2.222 8888″进行连接,结果如下

telnet: connect to address 192.168.2.222: Connection refused

2.模拟连接超时

2.1.假设客户端IP为192.168.2.111,服务器监听端口为8888。在服务器执行iptables命令设置使客户端连接请求被丢弃,会出现连接超时异常。

iptables -I INPUT -p tcp -s 192.168.2.111 –dport 8888 -j DROP

2.2.假设服务器IP为192.168.2.222,监听端口为8888。在客户端执行iptables命令设置使客户端连接请求被丢弃,会出现连接超时异常。

iptables -I OUTPUT -p tcp -d 192.168.2.222 –dport 8888 -j DROP

模拟连接被拒绝,使用以下命令”telnet 192.168.2.222 8888″进行连接,结果如下:

telnet 192.168.2.222 8888,一直显示“Trying 192.168.2.222…”

最后总结一下,利用iptables这样模拟 络故障测试的优势包括以下:

  1. 对应用程序或产品代码无侵入,无需调整代码内部的逻辑;
  2. 随时对 络端口进行测试和回退,非常的方便;
  3. 通过便捷的手段模拟 络故障,可以对产品或者系统的健壮性进行有效评估。

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年10月12日
下一篇 2022年10月12日

相关推荐