23753


[前回の質問](https://ja.stackoverflow.com/questions/23717/wake-on-
lan-%E3%83%8D%E3%83%83%E3%83%88%E3%83%AF%E3%83%BC%E3%82%AF%E3%82%AB%E3%83%BC%E3%83%89%E3%81%8C2%E6%9E%9A%E3%81%82%E3%82%8B%E3%81%A8%E3%81%8D)で、NICが複数ある環境でWOLのマジックパケットを送るNICを指定するには、ブロードキャストIPアドレスを指定するといいと聞きました。

マジックパケットの送信には以下のソフトを使っています。  
<http://www.vector.co.jp/soft/winnt/util/se508229.html>

このアプリケーションは引数にMACアドレスとブロードキャストアドレスを指定するのですが､  
引数のブロードキャストアドレスからPCに複数あるNICの中からブロードキャストを送るNICをどうやって認識しているのでしょうか｡  
以前､違うフリーソフトを使っており､ブロードキャストが255.255.255.255で送っていた時は送りたいNICを判断できない状況でした｡


CC BY-SA 3.0
2016-04-05T01:01:44.623
23749
2016-04-05T07:17:43.760
2017-04-13T12:52:38.920
-1
12388
question
network
Wake On Lanの引数にブロードキャストIPアドレスを指定する理由


たぶんIPルーティングの仕組みによるものではないかと思います。

OSがルーティングテーブルをもっていて宛先アドレスと送信インターフェースの組み合わせを管理しています。

コマンドプロンプトで route print を実行すると確認できます。

  1. ネットワーク宛先 : 宛先ネットワークのアドレス
  2. ネットマスク : 宛先ネットワークのサブネットマスク
  3. ゲートウェイ : ゲートウェイのIP
  4. インターフェイス : パケットを送出するNICのIP
  5. メトリック : 宛先ネットワークへの経路が複数ある場合小さいメトリック値の経路を選択

例えばNICが2つあり、それぞれ次のIP/サブネットマスクだとします。

NIC(1): 192.168.1.10/255.255.255.0  
NIC(2): 192.168.2.20/255.255.255.0

IPとサブネットマスクからブロードキャストアドレスはそれぞれ次のようになります。

サブネット(1): 192.168.1.255  
サブネット(2): 192.168.2.255

あとはルーティングテーブルからパケットを送信するNICを割り出せます。  
この辺の処理をOSがやってくれてます。

(追記)

> 以前､違うフリーソフトを使っており､ブロードキャストが255.255.255.255で送っていた時は送りたいNICを判断できない状況でした｡

憶測ですが ルーティングテーブルで 255.255.255.255 宛てのインターフェースがループバックアドレス (127.0.0.1) になっていると
自分宛てにしか送信されないのでそのせいかもしれません。


CC BY-SA 3.0
2016-04-05T03:41:25.203
23753
2016-04-05T07:17:43.760
2016-04-05T07:17:43.760
5008
5008
23749
answer