Untuk menerima dan memajukan penemuan DHCP dengan alamat sumber IP tersuai, pertimbangkan untuk menggunakan Soket Mentah dalam Go. Soket Mentah menyediakan kawalan ke atas pengepala paket, membolehkan anda memalsukan paket dengan alamat IP sumber tertentu.
Perhatikan bahawa memalsukan alamat sumber IP boleh menimbulkan risiko keselamatan. Adalah penting untuk menjalankan aplikasi anda dengan keistimewaan root atau memberikannya keupayaan CAP_NET_RAW (melalui setcap) untuk kefungsian yang betul.
Pustaka bersih standard Go tidak mempunyai sokongan soket mentah kerana ia khusus dan mungkin mengalami perubahan API. Walau bagaimanapun, subrepositori go.net menawarkan pakej ipv4 dan ipv6, dengan bekas sesuai untuk keperluan anda. Lihat http://godoc.org/code.google.com/p/go.net/ipv4#NewRawConn untuk butiran lanjut.
Gunakan kaedah ReadFrom ipv4.RawConn untuk mendapatkan paket sumber. Anda kemudian boleh menggunakan medan ini, bersama-sama dengan logik GIADDR anda, untuk menyediakan pengepala bagi panggilan WriteTo. Berikut ialah coretan kod ilustrasi:
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 { ... } }
Atas ialah kandungan terperinci Bagaimanakah saya boleh menggunakan Soket Mentah dalam Go untuk menyesuaikan penemuan DHCP dengan alamat sumber IP palsu?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!