Вопрос:
Можно ли использовать необработанные сокеты в Go для установки собственный исходный IP-адрес для DHCP пакеты?
Ответ:
Да, для изменения IP-адреса источника DHCP-пакетов необходимы необработанные сокеты.
Предупреждение: Манипулирование необработанными пакетами может иметь серьезные последствия для безопасности. Необходим запуск приложений с правами root или возможностью CAP_NET_RAW.
Стандартная сетевая библиотека в Go не поддерживает необработанные сокеты из-за ее специализированного характера и потенциальных изменений 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