私はクライアントとサーバー間でマルチキャストトラフィックを送信するアプリケーションを開発しています。このトラフィックはマルチキャストを介して送信されます。クライアントとサーバーの両方がVLANインターフェイスを使用し、互いに正しく通信するには、特定のVLANで通信する必要があります。クライアントとサーバーは同じサブネット上にあり(したがってネットワークホップはありません)、そのIPは同じサブネット上にあります(したがって進む唯一のルーティングは正しいVLANインターフェイスからのマルチキャストパスです)。
を使用すると、tcpdump
両方のホストでタグ付けされていないインターフェイスからのトラフィックを表示できますが、タグ付けされたインターフェイスを見ると、ローカルコンピュータからのトラフィックのみを表示できます。タグ付けされていないインターフェイスに入ってくるトラフィックにも正しいVLANタグがあることを確認しました。
これを説明するために、次のようにしましょう。
VLAN: 10
Multicast: 239.1.1.1
私が見るものは:
[root@client]# tcpdump -ei ens192 host 239.1.1.1
.... vlan 10 ... client.[port] > 239.1.1.1.[port]
.... vlan 10 ... server.[port] > 239.1.1.1.[port]
.... vlan 10 ... client.[port] > 239.1.1.1.[port]
.... vlan 10 ... server.[port] > 239.1.1.1.[port]
相手も同じ考えだった。
[root@server]# tcpdump -ei ens192 host 239.1.1.1
.... vlan 10 ... server.[port] > 239.1.1.1.[port]
.... vlan 10 ... client.[port] > 239.1.1.1.[port]
.... vlan 10 ... server.[port] > 239.1.1.1.[port]
.... vlan 10 ... client.[port] > 239.1.1.1.[port]
tcpdump
ただし、インターフェイスを表示すると次のようになります。
[root@client]# tcpdump -ei ens192.10 host 239.1.1.1
.... client.[port] > 239.1.1.1.[port]
.... client.[port] > 239.1.1.1.[port]
サーバーでも同じ考えです。
私はそれを試しましたが、sysctl net.ipv4.conf.all.rp_filter=0
何も変わりませんでした。
私もstrace -fe trace=network -p [PID of software] 2>&1 | grep 239.1.1.1
クライアントとサーバーで実行してsend_to
いて、電話をかけただけでメッセージを受信できませんでした。
また、他のすべてのVLANインターフェイスも購読されているにもかかわらず購読されているというip maddr
事実も確認しましたが、少し疑わしいです。トラフィックが別のVLANインターフェイスに移動しないことを確認しました。内部/ソースコードにアクセスできないため、このソフトウェアが購読をどのように実行するのかわからないことを認識してください。ens192.10
239.1.1.1
tcpdump
オペレーティングシステムはRHEL 7.5です。
正しくタグ付けされたVLANトラフィックがそのVLANインターフェイスに表示されない理由はありますか?
編集:また、このVLANインターフェイスで正常に動作する他のマルチキャストトラフィックがあり、問題はこのソフトウェアに限定されているようです。
ベストアンサー1
私の考えでは、Linuxではそのようなtcpdump
サブインターフェースを使用できないようです。ens192.10
特定(または全体)VLANトラフィックをダンプする一般的な方法は次のとおりです。
tcpdump -i ens192 -e vlan 10 and host 239.1.1.1 # just vlan tag 10
tcpdump -i ens192 -e vlan and host 239.1.1.1 # all tagged vlans
あるいは、tcpdump
バージョンがその構文をサポートしていない場合は、vlan X
rawヘッダーを次のように置き換えることもできます。
tcpdump -i ens192 -e 'ether[12:2] = 0x8100 and ether[15] = 10' and host 239.1.1.1