為了接收和轉送具有自訂IP 來源位址的DHCP 發現,請考慮在Go 中使用原始套接字。原始套接字提供對封包標頭的控制,可讓您偽造具有特定來源 IP 位址的封包。
請注意,偽造 IP 來源位址可能會帶來安全風險。使用 root 權限運行應用程式或授予其 CAP_NET_RAW 功能(透過 setcap)以獲得正確的功能至關重要。
Go 的標準網路庫缺乏原始套接字支持,因為它是專門的並且可能會經歷 API 更改。但是,go.net 子儲存庫提供了 ipv4 和 ipv6 軟體包,前者適合您的需求。請參閱 http://godoc.org/code.google.com/p/go.net/ipv4#NewRawConn 以了解更多詳情。
利用 ipv4.RawConn 的 ReadFrom 方法取得來源封包。然後,您可以使用這些欄位以及 GIADDR 邏輯來設定 WriteTo 呼叫的標頭。這是一個說明性程式碼片段:
for { hdr, payload, _, err := conn.ReadFrom(buf) if err != nil { ... } hdr.ID = 0 hdr.Checksum = 0 hdr.Src = ... hdr.Dst = ... if err := conn.WriteTo(hdr, payload, nil); err != nil { ... } }
以上是如何使用 Go 中的原始套接字透過偽造的 IP 來源位址自訂 DHCP 發現?的詳細內容。更多資訊請關注PHP中文網其他相關文章!