同じイーサネットブリッジに接続されているデバイスのMACまたはIPアドレスをどのように見つけますか?

同じイーサネットブリッジに接続されているデバイスのMACまたはIPアドレスをどのように見つけますか?

次のトポロジがあります。

DeviceX ------
              |
 DeviceX bridge with two Ethernet cards 
      (created with bridge-utils) ---------------- router 
              |                                      |
              |                                      |
DeviceY ------                                       |
                                                     |
                                     other devices on the same network 
                                       (switches, PCs, WiFi devices)

bridge-utils私はDeviceXの完全な制御を持っています。これは、DeviceXとDeviceYへのLANアクセスを提供するためにLinuxにブリッジされる2つのイーサネットアダプタを備えたLinux PCです。

DeviceYもLinux PCですが、私は制御できません。私が知っているのは、DeviceXのブリッジを介してルーターから受信するDHCP IPアドレスを使用することだけです。 DeviceYはいつでも他の物理デバイスと交換できるため、MACアドレスを一度だけ表示して維持することはできません。 DeviceXが起動するか、2つのイーサネットのいずれかを検出するたびに、MACアドレスがリセットされていることを確認する必要があります。接続(ケーブルが壊れて再接続するなど)。

常にこれら2つのデバイスのみがDeviceXのブリッジに接続され、他のデバイスは接続されないようにしてください。

ルーターに他の多くのデバイスが接続されている可能性がありますが、常に2つのイーサネットポートの1つに直接接続されているDeviceYのアドレスのみが必要です。

ルータ自体のアドレスも知っていれば、取引の中断ではないでしょう。ルータと両方のデバイスのアドレスのみを持っている限り、事前に既知でフィルタリングできます。 DeviceY.

今質問は次のとおりです。 DeviceXでDeviceYのMACまたはIPアドレスを確実に見つける方法は?

追加情報:DeviceYはLAN内の他のすべてのデバイスと同じLAN上にある必要があるため、DeviceXでbridge-utilsを使用しています。 DeviceXからDeviceYへのカスタムパスは、新しいサブネットを作成し、NATを必要とし、DeviceYが期待どおりに機能しないようにするオプションではありません。 Bridge-utilsは最も簡単なソリューションです。

ベストアンサー1

ブリッジまたはスイッチは、ブロードキャストドメインの2つのネットワークセグメントを接続し、ユニキャストトラフィックを分離するデバイスです。

この目的のために、ブリッジは、どのポートが特定のMacアドレスに到達するかを記録する転送テーブルを維持します。新しいイーサネット送信元アドレスで新しいパケットが受信されると、テーブルがいっぱいになり、しばらく表示されていないMACアドレスが削除されます。

ブリッジ/スイッチが特定のMACアドレスのフレームを受信すると、そのMACアドレスが転送テーブルにある場合にのみそのポートにフレームを送信し、そうでない場合はすべてのポートにフレームを送信します。

Linuxの実装も例外ではありません。

次のコマンドを使用して転送テーブルを照会できます。

 brctl showmacs <bridge-name>

そして/sys/class/net/<bridge-name>/brforward(バイナリ)形式で提供することもできます。

次のコマンドを使用して、ポート番号とインターフェイス名間のマッピングを取得できます。

 grep . /sys/class/net/vmbr0/brif/*/port_no

iproute2または、新しいバージョンの新しいLinuxネットワークユーティリティスイートがインストールされているシステムを使用している場合は、次のコマンドを使用してインターフェイス名を含む転送テーブルをインポートできます。

 bridge fdb show br <bridge-name>

または、特定のインターフェイスまたはブリッジを介して接続できるすべてのMACアドレスを確認してください。例eth0:

 bridge fdb show br <bridge-name> brport <interface-name>

おすすめ記事