私は Android VPN アプリを作成中ですが、インバウンド マルチキャスト パケットをテスト アプリに配信しようとするたびに、レンガの壁にぶつかっています。VPN アプリがインバウンド マルチキャスト IP パケット (IP ヘッダーの宛先アドレス フィールドにマルチキャスト範囲内のアドレスが含まれる) を TUN デバイスのファイル記述子側に書き込むと、テスト アプリにパケットが表示されません。マルチキャスト パケットの受信に使用します。ただし、ユニキャスト パケットがテスト アプリによって受信されていることがわかります。また、VPN アプリが混在していない場合でも、テスト アプリがマルチキャスト パケットを受信していることがわかるので、マルチキャストを受信できることがわかります。
私の VPN アプリによって作成された TUN デバイスは、デフォルトでマルチキャスト機能を有効にしていないのではないかと疑っています。また、Android によってそのように公開されている手段も見つかりませんでした。TUN デバイスのマルチキャストを有効にできるかどうかは誰にもわかりませんか? それとも、何か他のものを完全に見逃しているのでしょうか?
次のコードを使用して、VpnService.Builder クラスを使用して TUN デバイスを作成します。
Builder builder = new Builder();
builder.setMtu( 1250 );
builder.addAddress( "2.3.1.1", 32 );
次のコードを使用してファイル記述子を作成し、IP パケットを TUN デバイスに送信します。
ParcelFileDescriptor parcelFileDescriptor = builder.setSession( "my_session" ).setConfigureIntent( myConfigureIntent ).establish();
FileOutputStream tunOut = new FileOutputStream( parcelFileDescriptor.getFileDescriptor() );