質問:
Go で Raw ソケットを使用して設定できますかDHCP パケットのカスタム IP ソース アドレスは?
答え:
はい、DHCP パケットの IP ソース アドレスを変更するには生のソケットが必要です。
警告: raw パケットの操作は、セキュリティに重大な影響を与える可能性があります。 root 権限または CAP_NET_RAW 機能を使用してアプリケーションを実行する必要があります。
Go の標準ネット ライブラリは、その特殊な性質と API の変更の可能性のため、Raw ソケットをサポートしません。ただし、go.net サブリポジトリは、この目的のために ipv4 パッケージを提供します。
DHCP パケットを操作するには、次の手順に従います。
例:
<code class="go">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 { ... } } }</code>
以上がGo の Raw ソケットを使用して DHCP パケットの送信元 IP アドレスを変更できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。