カスタマイズされた IP ソース アドレスを使用して DHCP ディスカバリを受信および転送するには、Go で Raw ソケットを利用することを検討してください。 Raw ソケットはパケット ヘッダーを制御し、特定の送信元 IP アドレスを持つパケットを偽造できるようにします。
IP 送信元アドレスの偽造はセキュリティ リスクを引き起こす可能性があることに注意してください。アプリケーションを適切に機能させるには、root 権限で実行するか、(setcap 経由で) CAP_NET_RAW 機能を付与することが不可欠です。
Go の標準ネット ライブラリは特殊化されているため、Raw ソケットのサポートがありません。 API の変更が発生する可能性があります。ただし、go.net サブリポジトリでは ipv4 パッケージと ipv6 パッケージが提供されており、前者がニーズに適しています。詳細については、http://godoc.org/code.google.com/p/go.net/ipv4#NewRawConn を参照してください。
ipv4.RawConn の ReadFrom メソッドを利用して、ソースパケットを取得します。これらのフィールドを GIADDR ロジックとともに使用して、WriteTo 呼び出しのヘッダーを設定できます。コード スニペットの例を次に示します:
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 { ... } }
以上がGo で Raw ソケットを使用して、偽の IP ソース アドレスで DHCP 検出をカスタマイズするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。