問題:
在Go 中可以使用原始套接字來設定DHCP 的自訂IP來源位址
答案:
是的,需要原始套接字來修改 DHCP 封包的 IP 來源位址。
警告: 操作原始資料包可能會產生嚴重的安全隱患。使用 root 權限或 CAP_NET_RAW 功能運行應用程式是必要的。
Go 中的標準 net 庫由於其特殊性和潛在的 API 更改而不支援原始套接字。然而,go.net 子儲存庫為此目的提供了 ipv4 套件。
若要操作 DHCP 封包,請依照下列步驟操作:
範例:
import "code.google.com/p/go.net/ipv4"
func main() {
conn, err := ipv4.NewRawConn("udp")
defer conn.Close()
buf := make([]byte, 65536)
for {
hdr, payload, _, err := conn.ReadFrom(buf)
if err != nil { ... }
hdr.ID = 0
hdr.Checksum = 0
hdr.Dst = ...
if err := conn.WriteTo(hdr, payload, nil); err != nil { ... }
}
}
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3