GCP不允许使用伪造IP地址的数据包-为什么?

问题描述

我有问题,因为我想将自己生成的数据包发送到GCP上的vm实例。我正在使用带有欺骗性源地址的以下代码

packet = IP(src="77.7.7.7",dst="MY-VM-IP")/UDP(sport=RandShort(),dport=53)/DNS(rd=1,qd=DNSQR(qname="google.com"))

import time
while True:

  send(packet)
  time.sleep(1)

尽管当我不更改源IP时,我仍可以在VM上看到带有TCP转储的数据包。 我该如何运作?我在VM上启用了IP转发,并将FW设置为允许。

解决方法

根据文档1,只要发送数据包的VM将IP forwarding设置为ON,就有可能。

您还需要确保正在处理流量的VM具有允许该操作的Ingress FW规则。

我刚刚测试了以下内容,并且有效:

  • 创建了VM A1,并允许来自任何地方的FW规则。
  • 创建了另一个启用IP转发的VM B1。
  • 运行上面的代码以生成数据包并将其从B1发送到A1。
  • 我可以通过tcpdump看到到达A1的数据包。