Memorandum.
Router solicit
#Wirf weiter wie gewohnt
>>> sendp(Ether()/IPv6()/ICMPv6ND_RS())
#Ich möchte eine Antwort
>>> sr1(IPv6()/ICMPv6ND_RS())
Für DHCPv6-Anfragen ist eine Client-ID erforderlich (RFC 3351).
>>> client_id=DUID_LLT(lladdr=get_if_hwaddr(conf.iface6))
>>> a=sr1(IPv6(dst="ff02::1:2")/UDP()/DHCP6_Solicit()/DHCP6OptClientId(duid=client_id))
>>> client_id=a[DHCP6OptClientId].duid
>>> server_id=a[DHCP6OptServerId].duid
Es sieht so aus, wenn es mit DHCPv6 verbunden ist. Werben, werben, anfordern, antworten. dnsmasq antwortet vorerst.
a=sr1(IPv6(dst="ff02::1:2")/UDP()/DHCP6_Solicit()
/DHCP6OptClientId(duid=DUID_LLT(lladdr=get_if_hwaddr(conf.iface6))))
b=sr1(IPv6(src=a[IPv6].dst, dst=a[IPv6].src)/UDP()/DHCP6_Request()
/DHCP6OptServerId(duid=a[DHCP6OptServerId].duid)
/DHCP6OptClientId(duid=a[DHCP6OptClientId].duid))
Cisco antwortet nicht ohne DHCP6OptIA_NA in DHCPv6_Solicit. Wenn Sie die Beschreibung von RFC 3351 so ausführen, wie sie ist, wird sie angehängt (für die Ichiou-Validierung nicht erforderlich).
a=sr1(IPv6(dst="ff02::1:2")/UDP()/DHCP6_Solicit()
/DHCP6OptClientId(duid=DUID_LLT(lladdr=get_if_hwaddr(conf.iface6)))
/DHCP6OptIA_NA(iaid=1)
)
b=sr1(IPv6(dst="ff02::1:2")/UDP()/DHCP6_Request()
/DHCP6OptServerId(duid=a[DHCP6OptServerId].duid)
/DHCP6OptClientId(duid=a[DHCP6OptClientId].duid)
/DHCP6OptIA_NA(iaid=1)
)
Führen Sie außerdem DHCPv6-RelayForward und RelayReply aus. Die src-Adresse im folgenden Beispiel wird aus dem Wert extrahiert, als sie stateful zugewiesen wurde. Wenn Sie Slaac verwenden, sollten Sie in der Lage sein, es zur Hand zu berechnen.
c=sr1(IPv6(dst="ff05::1:3", src=b[DHCP6OptIA_NA].ianaopts[0].addr)
/UDP(sport=547, dport=547)
/DHCP6_RelayForward(linkaddr="fd00::152", peeraddr="fe80::2000:1")
/DHCP6OptRelayMsg()/DHCP6_Solicit()
/DHCP6OptClientId(duid=DUID_LLT(lladdr="00:11:22:33:44:55"))/DHCP6OptIA_NA(iaid=2)
)