首先说明一下为啥写这篇文章,其实iptables的使用,在网上随便搜一下很多。如果了解原理,然后在做容灾测试的时候,就可以直接用上。重要的不是iptables,重要的是容灾测试、
A和B两个系统,A对B在业务上是非强依赖,也就是说B系统挂掉了,A系统也需要能够正常提供服务。假如系统之间调用是通过TCP协议完成的,在调用B系统的代码的时候,方法体中没有加入try...catch代码,这样也就是说B系统正常的情况下,A系统的业务能够正常走通,但是B系统一旦自己挂掉,A系统这部分逻辑就走不下去了,但是实际上业务上面的需求是希望能够走下去的。
这种问题,一般是出了大故障之后,才会觉察到原来系统之间的调用,忘记做兼容性测试了,尤其是系统明显挂掉的时候。
B系统可以是什么角色?
在实践过程中,B系统可以是数据库(例如mysql),可以是分布式缓存服务器,也可以是和A系统同质的系统(例如一个java web类系统)。
如何做兼容性测试呢?
办法很多,关键看实现的成本,有一种是在代码层面,由于Java很多系统是基于Spring的IOC来注入bean,这时候可以搞个统一开关,把调用B应用的方法全部设置失效,这样搞实现成本有点高。再就是在A系统的服务器上通过iptables来屏蔽掉B系统的Ip地址,这样就能模拟B系统挂掉,A系统是啥反应了,从而实现容灾测试。
A---tcp协议-->B,在调用的链路上,加上防火墙。
关于iptables的介绍?
这里就不多写了,网上资料很多,一种用户态的防火墙软件,在Linux机器上面直接运用"iptables -L"即可查看目前tables中的配置情况(后面脚本中的语句,基本上是对于iptables中的filter表来进行的)。
扩展部分
每次都找依赖系统的IP貌似有点费劲,这时候我用python对于iptables的调用做了浅包装。每次只需要简单的配置,然后执行即可。
代码如下:(运行python脚本,在后面加入配置在conf_dist中的系统应用名称,就会把这个IP屏蔽掉,没加配置文件,会把iptables清空)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
#!usr/bin/env python import os
import sys
import subprocess as sb
print '[ INFO : hsf_disaster_check,authoy by iamzhongyong ]'
print '[ INFO : need to do : get application daily iphost from scm,then conf to here. ]'
conf_dist = {
'系统A' : 'ip地址A' ,
'系统B' : 'ip地址B' ,
'app_name' : 'ip_address'
} #main handler def function_handler():
if ( len (sys.argv) = = 1 ):
sb.Popen( '/sbin/iptables -F' ,shell = True ,stdout = sb.PIPE)
print '[ WARN : clear iptables . ]'
if ( len (sys.argv) = = 2 ):
ip = conf_dist.get(sys.argv[ 1 ])
if (ip is None ):
print '[ ERROR : ip address is not in the conf_dist ]'
return
if ( len (ip)! = 0 ):
str_cmd = '/sbin/iptables -I INPUT -s ' + ip + ' -j DROP'
sb.Popen(str_cmd,shell = True ,stdout = sb.PIPE)
print '[ WARN : iptable is OK. ' + str_cmd + ' ]'
else :
print '[ ERROR : not fount ip address by this param ]'
return
#main if __name__ = = '__main__' :
try :
function_handler()
except :
print '[ ERROR : exception ,you can contact iamzhongyong ]'
|
相关推荐
在IT领域,网络通信是核心部分之一,而IP/TCP协议是互联网协议栈中的关键层次。本文将深入探讨如何利用Java编程语言实现对IP和TCP协议数据包的拦截与分析,以便获取IP地址的详细信息。 首先,我们需要理解IP...
基于python实现的TCP入侵检测系统+检测端口扫描+Dos攻击联动iptables进行防御+源码,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用~ 基于python实现的TCP入侵检测...
基于iptables的Linux防火墙的实验报告
基于Iptables和Linux策略路由的防火墙实现.pdf
【基于Linux的TCP/IP协议栈安全性研究】 TCP/IP协议栈是互联网通信的基础,它定义了数据在网络中的传输方式。在Linux操作系统中,TCP/IP协议栈是内核的一部分,负责网络数据包的处理和路由。然而,这个核心组件并...
总的来说,这份“Tcp并发测试连接模拟源代码”是学习TCP网络编程和测试的宝贵资源,它可以帮助开发者深入理解TCP协议的工作机制,提高网络服务的性能和稳定性。通过实际操作和分析,可以提升对网络优化、并发处理和...
Android 流量防火墙 Iptables 原理详解 Android 流量防火墙是...由于 Iptables 已经有了完善的防火墙规则,我们只需要设计一个基于 Iptables 的 Android 前台即可,通过运行脚本,调用 iptables 设置防火墙规则即可。
- 该命令向iptables的INPUT链中添加一条规则,允许TCP协议的5657端口的数据包通过。 4. **保存iptables规则**: - 执行命令:`iptables -save` - 保存当前的iptables规则,以便重启系统后仍然生效。 #### 五、...
基于jsp的基于Iptables图形管理工具系统毕业设计与实现(源代码+项目报告).zip
Linux下基于iptables的防火墙设计与实现.pdf
基于JSP的基于Iptables图形管理工具系统设计与实现毕业设计(源代码+项目报告).zip
2. 配置线上和测试服务器,包括安装必要的依赖、启动TCPCopy客户端和服务端。 3. 使用iptables设置规则,将线上流量引导至测试环境。 4. 监控和调整测试过程,收集测试数据,分析性能和稳定性。 通过TCPCopy,...
不错的适合练手、课程设计、毕业设计的JSP项目源码:JSP基于Iptables图形管理工具的设计与实现(源代码+论文).rar不错的适合练手、课程设计、毕业设计的JSP项目源码:JSP基于Iptables图形管理工具的设计与实现(源代码...
[计算机项目]基于jsp的基于Iptables图形管理工具系统设计与实现(源代码+项目报告).zip
java基于Iptables图形管理工具的设计与实现源码java基于Iptables图形管理工具的设计与实现源码java基于Iptables图形管理工具的设计与实现源码java基于Iptables图形管理工具的设计与实现源码java基于Iptables图形管理...
基于iptables的xnohat DDoS 防火墙
本文设计并实现了一个基于Web的Iptables图形管理工具,通过友好的配置界面,简化了Iptables防火墙的管理配置程序,更方便用户对Iptables防火墙的使用。 本工具采用Browser/Server模式,通过Web配置界面,用户可远程...
基于iptables的包内容过滤防火墙的设计与实现,关尔昱,周亚建,本文利用iptables提供的libipq函数库,用C语言在Linux平台下编写一个用户空间程序,与iptables规则配合起来对数据包内容的关键字匹配,达��
Iptables是Linux系统下的一种包过滤防火墙,它提供了一种灵活的方式来定义网络数据包如何被转发或丢弃。通过配置Iptables规则集,管理员能够精确地控制进出网络的数据流,从而实现安全策略的实施。Iptables的功能...