Python dhcp客户端
我试图学习如何在多宿主机器(多接口)上直接(无库)从python发送DHCP请求。 我看过pydhcplib,但还是不明白 这段代码在特定接口上发送DHCP数据包(在我的例子中是eth3-没有分配IP),但它使用eth0 IP地址发送。如何将src IP更改为0.0.0.0? 在本例中,dhcp消息被截断Python dhcp客户端,python,udp,dhcp,Python,Udp,Dhcp,我试图学习如何在多宿主机器(多接口)上直接(无库)从python发送DHCP请求。 我看过pydhcplib,但还是不明白 这段代码在特定接口上发送DHCP数据包(在我的例子中是eth3-没有分配IP),但它使用eth0 IP地址发送。如何将src IP更改为0.0.0.0? 在本例中,dhcp消息被截断 LOCAL_PORT=68 SERVER_PORT=67 LOCAL_IP="0.0.0.0" BCAST_IP="255.255.255.255" LISTEN_DEV="eth3" MSG
LOCAL_PORT=68
SERVER_PORT=67
LOCAL_IP="0.0.0.0"
BCAST_IP="255.255.255.255"
LISTEN_DEV="eth3"
MSG_SIZE=2048
Conn=socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
Conn.settimeout(5)
Conn.setsockopt(socket.SOL_SOCKET,IN.SO_BINDTODEVICE,LISTEN_DEV+'\0')
Conn.setsockopt(socket.SOL_SOCKET,socket.SO_BROADCAST,1)
Conn.bind((LOCAL_IP, LOCAL_PORT))
# Create DHCP-Discovery
msg="010106003f7d1664......"
Conn.sendto(msg.decode("hex"),(BCAST_IP,SERVER_PORT))
received = Conn.recv(MSG_SIZE)
Conn.close()
我想你已经知道这件事了 剧透警报:如果你想直接跳到底线,请看一下 编辑: INADDR_ANY的特殊值(0.0.0.0,或python套接字中的空字符串“”)不是IP地址 “当地址被指定为INADDR_ANY(清单常量 在
或者,您可以使用原始套接字,自己构建IP和UDP报头来包含任何内容。是的,我知道大部分内容。即使是我的代码(本质上)也和您的示例非常相似——但示例只提供了一个接口。我仍然需要绑定到一个特定的接口(如我的示例中所示),我想了解为什么源IP地址不是0.0.0.0(或者如何设置它)