从多个源IP发送流量Scapy

时间:2014-02-18 17:54:45

标签: python linux networking scapy

我正在尝试使用scapy(在Ubuntu上)通过python发送一些流量。我正在使用一系列源IP(10.0.0.32/29)。一切似乎都在工作(至少我看到wireshark的流量,它到达我的防火墙)但我在使用不是eth0适配器的主要IP的IP地址完成TCP握手时遇到问题。有谁知道这是否可行:

来源:

 from scapy.all import *
 import random


 sp=random.randint(1024,65535)
 ip=IP(src="10.0.0.234/29",dst="www.google.com")
 SYN=TCP(sport=sp, dport=80,flags="S",seq=10)
 SYNACK=sr1(ip/SYN)

 my_ack=SYNACK.seq+1
 ACK=TCP(sport=sp,dport=80,flags="A",seq=11,ack=my_ack)
 send(ip/ACK)
 payload="SEND TCP"

 PUSH=TCP(sport=sp,dport=80,flags="PA",seq=11,ack=my_ack)
 send(ip/PUSH/payload)

1 个答案:

答案 0 :(得分:2)

因为您位于NAT /路由器后面,所以应该检查它是否允许您使用全部IP。如果它正在运行DHCP协议,则您的eth0通常会收到一个唯一的IP地址,该地址将是您的专用网络中唯一路由的地址。

此外,您必须确保您的内核知道哪些IP归因于它,否则它将丢弃响应数据包。如果您想使用全系列的IP,您有两种选择:

  1. 使用虚拟mac地址创建virtual devices,每个地址都通过DHCP请求IP。
  2. 配置路由器,使其静态路由完整的IP表到您的主机,并打算使用{/ 3}}
  3. 完成后,您无法从多个源IP中同步/确认。从远程服务器的角度来看,您尝试执行的操作与本地网络中同时请求页面的多台计算机之间没有任何区别。