私はPython3でソケットを使用してDHCPサーバーとクライアントを作成しています。私の顧客:
def client(self):
print("DHCP client is starting...\n")
dest = ('<broadcast>', serverPort)
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
s.setsockopt(socket.SOL_SOCKET, 25, str("veth0" + '\0').encode('utf-8'))
#s.bind(('0.0.0.0', clientPort))
print("Send DHCP discovery.")
data = DHCP_client.discover_get();
s.sendto(data, dest)
私のDHCPサーバー:
def server(self):
print("DHCP server is starting...\n")
s=socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR,1)
s.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST,1)
s.bind(('', serverPort))
dest = ('255.255.255.255', clientPort)
while(True):
data, address = s.recv(65536)
print(data)
ただし、サーバーで要求を表示できますが、サーバーによってキャプチャされたメッセージは表示されません。sudo tcpdump --interface=veth1 -v
tcpdump: listening on veth1, link-type EN10MB (Ethernet), capture size 262144 bytes
06:32:10.472938 IP (tos 0x0, ttl 64, id 47168, offset 0, flags [DF], proto UDP (17), length 277)
ubuntu.37318 > 255.255.255.255.bootps: BOOTP/DHCP, Request from 00:05:3c:04:8d:59 (oui Unknown), length 249, xid 0x3903f326, Flags [none]
Client-Ethernet-Address 00:05:3c:04:8d:59 (oui Unknown)
Vendor-rfc1048 Extensions
Magic Cookie 0x63825363
DHCP-Message Option 53, length 1: Discover
Requested-IP Option 50, length 4: 192.168.1.100
ここで設定に問題がありますか?なぜrecv
何も捕まえないのかわかりません。私に与えるアドバイスがありますか?
私がveth0
作ってveth1
渡す
ip link add veth0 type veth peer name veth1