首页 > 解决方案 > 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 转储的数据包。我怎样才能让它工作?我在我的虚拟机上启用了 IP 转发,并将 FW 设置为允许。

标签: networkingscapygoogle-cloud-networking

解决方案


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

您还需要确保接收流量的 VM 具有允许该流量的 Ingress FW 规则。

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

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

推荐阅读