ConnectionlessBootstrap を使用して、ローカル ネットワークでマルチキャスト用の UDP ソケットを作成しています。VPN がアクティブでない限り、チャネルはマルチキャスト パケットを受信します。VPN がアクティブになると、チャネルはマルチキャスト パケットを受信しなくなります。VPN 接続を閉じた後、チャネルは (再起動せずに) 再びパケットの受信を開始します。
次のようにチャネルを作成します。
DatagramChannel channel;
channel = (DatagramChannel) bootstrap.bind( new InetSocketAddress( localPort ) );
channel.joinGroup( multicastAddress.getAddress() );
netty が誤って間違ったネットワーク インターフェイスを選択したのではないかと考えたので、ブートストラップ オプションで手動で構成しました。
NetworkInterface multicastInterface = ...
bootstrap.setOption( "networkInterface", multicastInterface );
残念ながら、これは問題を解決しません。
VPNがアクティブなときにパケットが実際にローカルインターフェイスで受信されるかどうかをwiresharkで確認しました-パケットは引き続き受信されますが、チャネルには到達しません。
VPN 接続がアクティブな間でも、マルチキャスト パケットを受信する方法を知っている人はいますか?