【发布时间】:2018-04-25 15:48:07
【问题描述】:
我正在使用 scapy 编写一个非常简单的 DHCP 服务器,但我一直在发送一个 offer 数据包。现在我正在这样做:
ethernet=Ether(dst=dest_mac, src=hw, type=0x800)
ip=IP(dst=dest_addr, src=srv_ip)
udp=UDP(sport=67, dport=68)
bootp=BOOTP(op=2, yiaddr=dest_addr, siaddr=srv_ip, chaddr=client_mac)
dhcp=DHCP(options=[("message-type", "offer"), ("server_id", dest_addr), ("broadcast_address", broadcast), ("router", gateway), ("subnet_mask", netmask)])
of_pack=ethernet/ip/udp/bootp/dhcp
sendp(of_pack)
客户端是 ISC DHCP,安装在 ubuntu 服务器 16.04 上。 我可以在 Wireshark 中看到 dhclient 发送的 Discovery 数据包,但我看不到我的服务器发送的提供数据包(scapy 说:发送了 1 个数据包,所以看起来没问题)。 所以我认为我在制作报价包时做错了。
由于它甚至在 Wireshark 中都看不到,我认为问题出在 IP 协议层或更低层(我之前发送了格式错误的数据包,我可以在 Wireshark 中看到它们)。
不确定,但问题可能出在校验和/或 IP 标头的长度上?我应该手动计算还是 scapy 可以自己计算?
【问题讨论】: