标签:networking linux
我正在尝试创建一个测试环境,以测试客户端和服务器之间的网络错误处理.我不能在任何一个上更改软件.这两个设备将通过Linux网桥连接,我将使用各种带宽整形工具来限制带宽或完全阻止流量,以模拟各种错误情况.
我尚不知道如何实现的另一件事是在现有连接上生成套接字错误.我希望使用现有的Linux工具/实用程序,但也许可以在足够的指导下编写我自己的工具.我对基本网络,TCP和UDP等非常熟悉,但对桥接却不熟悉.
任何人都可以建议一种产生套接字错误的方法,例如通过触发意外的FIN数据包,连接到跨网桥的套接字的两端?
提前致谢.
解决方法:
您可以轻松地在网桥(通常是br0)中嗅探并生成适当的RST或FIN数据包,从而生成带有scapy的FIN或RST数据包.
这是一个示例,其中RST在与数据的数据包相同的方向上发送.
#!/usr/bin/python
from scapy.all import *
import random
def sendRST(p):
flags = p.sprintf("%TCP.flags%")
if flags != "S":
ip = p[IP] # Received IP Packet
tcp = p[TCP] # Received TCP Segment
if ip.len <= 40:
return
i = IP() # Outgoing IP Packet
i.dst = ip.dst
i.src = ip.src
t = TCP() # Outgoing TCP Segment
t.flags = "R"
t.dport = tcp.dport
t.sport = tcp.sport
t.seq = tcp.seq
new_ack = tcp.seq + 1
print "RST sent to ",i.dst,":",t.dport
send(i/t)
while (1):
PKT = sniff (iface = "br0", filter = "tcp and src host x.x.x.x", count=1, prn=sendRST)
exit()
检查嗅探的选项,这是非常强大的:)
希望对您有所帮助.
标签:networking,linux 来源: https://codeday.me/bug/20191102/1988840.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。