Go での Raw ソケットの使用: DHCP ディスカバリの転送
GIADDR に基づくカスタム ソース IP アドレスを使用して DHCP ディスカバリを変更しようとする場合フィールドで、開発者はローカルに構成されていない IP アドレスを使用する際に問題が発生しました。次の質問が生じます:
生のソケットを使用してのみこれを実現できますか?
答え:
ソースの変更セキュリティ上の考慮事項により、IP アドレスには特定の機能が必要です。この制限を克服するには、生のソケットを利用できます。
Go の Raw ソケット ライブラリ:
Go の標準ネット ライブラリは生のソケット サポートを提供しませんが、go.netサブリポジトリは、ipv4 パッケージと ipv6 パッケージの両方を提供します。 ipv4 パッケージ、特にその NewRawConn 関数は、このシナリオに適しています。
パケット操作:
パケット ヘッダーを読み取り、変更するには、ipv4.RawConn の ReadFrom メソッドを使用します。雇用することができる。抽出されたフィールドと GIADDR ロジックを使用して、WriteTo 呼び出しを開始する前にヘッダーを更新する必要があります。
例:
<code class="go">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 { ... } }</code>
このアプローチでは、送信元 IP アドレスを変更できます。 DHCP パケット内の特定の条件に基づきます。
以上がGo の Raw ソケットはカスタム ソース IP を使用して DHCP 検出を変更できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。