Oracle仮想サーバーの仮想ネットワークtcpdumping

Oracle仮想サーバーの仮想ネットワークtcpdumping

Oracle Virtual Serverベースの仮想ネットワークで正しい無差別モードを有効にする方法はありますか?カードがネットワーク全体のトラフィックの一部しか持っていないようです。
Oracle Virtual Managerインフラストラクチャで使用可能なすべてのネットワーク・タイプを試しました。

考えられる最も簡単なシナリオ:3つのホストの「ローカル」仮想ネットワーク、ファイルが1つのホストから2番目のホストに転送され、3番目のホストがネットワークをtcpdumpしようとします。ファイル転送は成功しましたが、3番目のホストはファイル転送の開始から1つのパケットのみを受信します。いくつかのxlコマンドを使用して微調整する必要があると思います。これはおそらくすべてのXenベースの仮想化の一般的な問題です。他のネットワーク参加者がトラフィックを表示できるようにするにはどうすればよいですか?

すべてのネットワークインターフェイスは、次の方法で作成されます。

OVM> create vnic name=capture_network_card network=local on vm id=${id}

ここで、「local」は仮想ネットワークタイプの名前です。

ファイル転送コンソールログ:

1.2.3.6# scp 1.2.3.4:*p ./
/etc/ssh/ssh_config line 57: Unsupported option "gssapiauthentication"
1.2.3.4's password:
file.pp 100% 126MB 110.5MB/s 00:01

3番目のホストのTcpdump:

-sh# tcpdump -i eth6

tcpdump: WARNING: eth6: no IPv4 address assigned
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth6, link-type EN10MB (Ethernet), capture size 65535 bytes
08:42:12.456647 IP 1.2.3.6.37610 > 1.2.3.4.ssh: Flags [S], seq 2743878644, win 29200, options [mss 1460,nop,wscale 10], length 0
^C
1 packet captured
1 packet received by filter
0 packets dropped by kernel

OVM「ローカル」ネットワーク:

OVM> show network name=local
Command: show network name=local
Status: Success
Time: 2019-04-17 11:13:29,434 EDT
Data: 
  Server Local = true
  Server = b0:3c:4c:3a:75:fe:d5:11:88:cc:18:bb:00:30:c5:db  [vmserver2]
  MTU = 1500
  Role 1 = Virtual Machine
  Vnic 1 = 0004fb0000070000591e972d7b9043d0  [local_card_va11]
  Vnic 2 = 0004fb00000700007d493cbb2938f30e  [local_capture_on_3_29]
  Vnic 3 = 0004fb00000700005d89961ae7d76d23  [local_capture_network_card]
  Vnic 4 = 0004fb000007000075309ee8253700e8  [local_card_va9]
  Id = 105e4d86c5  [local]
  Name = local
  Locked = false

現在、ここにはいくつかの他のカードがありますが、質問とは関係ありません。別のホスト/カードを作成しましたが、トラフィックをキャプチャできませんでした。

さらなる調査結果:

特定のPCAPファイルがこれらのネットワークで再生されている場合、キャプチャカードは一部のICMPおよびARPパケットのみを表示できます。トラフィックが仮想ホストネットワークアダプタに直接再生される場合にのみ、追加のパケットが表示されます。 OVMおよびOVSコンソールを介してサーバー上でこのアダプターを識別しました。

[ovm]# exec 'list network'|grep local
  id:105e4d86c5  name:local

だから105e4d86c5ネットワークID。

このネットワークで vmserver インターフェースを検索する105e4d86c5

[root@vmserver2 ~]# ip a |grep 105e4d86c5
16: 105e4d86c5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP 
19: vif1.2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq master 105e4d86c5 state UP qlen 32
37: vif3.6: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq master 105e4d86c5 state DOWN qlen 32
44: vif3.6-emu: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master 105e4d86c5 state UNKNOWN qlen 500

tcpreplay トラフィックをこの vif* アダプタに直接送信すると、その仮想ホストは確実にこのパケットを tcpdump できます。ただし、仮想ホストでtcpreplayを実行し、サーバーでtcpdumpを実行するとトラフィックがなくなり、tcpdumpは「カーネルによって廃棄された」パケットに対して印刷します。

私はXenの経験がほとんどありませんが、VMWareでは同じ構成が完全に機能します。

Oracle Virtual Networkで効果的なパケットスニッフィングを実行する方法はありますか?

ベストアンサー1

おすすめ記事