はじめに:
カスタム DHCP 応答の作成には、送信元 IP アドレスを指定する機能が必要です, この機能は、標準の Go ネットワーキング ライブラリ内では簡単にアクセスできません。この記事では、この制限を克服するために Go で RAW ソケットを使用する際の課題と解決策について説明します。
セキュリティへの影響:
DHCP パケットの送信元 IP アドレスのスプーフィングには、重大なセキュリティ リスクが伴います。 。したがって、Linux 環境でカスタム ヘッダーを含むパケットを偽造するには、昇格された権限または特別な機能が不可欠です。
Go の Raw ソケット:
ネット パッケージには、特殊化されているため、Raw ソケット機能がありません。自然。ただし、go.net サブリポジトリは必要なモジュールを提供します:
ヘッダー スプーフィング:
DHCP ヘッダーを操作するには、元のパケットを読み取るために ipv4.RawConn の ReadFrom メソッドを利用することが重要です。次のコード スニペットは、後続の WriteTo 呼び出しのヘッダーを設定する方法を示しています:
<code class="go">for { hdr, payload, _, err := conn.ReadFrom(buf) if err != nil { ... } hdr.ID = 0 hdr.Checksum = 0 hdr.Src = ... /* Address derived from GIADDR */ hdr.Dst = ... /* Destination address */ if err := conn.WriteTo(hdr, payload, nil); err != nil { ... } }</code>
以上が以下に、条件を満たすタイトルのオプションをいくつか示します。 オプション 1 (直接的かつ簡潔): * Go で Raw ソケットを使用してカスタム ソース IP で DHCP 応答を偽造する方法 オプション 2 (課題に集中する)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。