はじめに
以下のように、External ConnectorをブリッジモードにしてNW機器に接続しています。
この時、同セグメントの外部のサーバなどからアクセスしたい場合にVMware ESXiで正しい設定ができていないと上手く通信ができないです。ブログ管理人がこれで軽く2時間以上時間を使ってしまったため、皆さんに共有します。
CML2が所属するvSwitchのポートグループ
大前提:CML2専用のポートグループを作成してください。疎通したいサーバと同じポートグループに所属する場合は上手く通信ができないです。ブログ管理人はこのせいで上手く通信ができずに時間を無駄にしています。
vSwitchの設定について
以下のようにCML2専用のポートグループ「CML2」を作成しました。ポートグループの編集からセキュリティを選択。その中から①無差別モード②MACアドレス変更③偽装転送の3つについて承諾と拒否の全ての組み合わせを行い、同セグメントからのpingが可能か検証します。先に結論を知りたい方は一番下までスクロールしてください。
また、以降では以下の構成となります。
CML2.5の管理IP:192.168.0.10
ルータのIP:192.168.0.200
サーバのIP:192.168.0.100
全て拒否の場合
同じセグメントのサーバからPINGを打っても応答ありません。
無差別モードのみ承諾の場合
同じセグメントのサーバからPINGを打つと、Destination Host Unreachableと帰ってきます。
MACアドレス変更のみを承諾した場合
同じセグメントのサーバからPINGを打つと、Destination Host Unreachableと帰ってきます。
偽装転送のみを承諾した場合
同じセグメントのサーバからPINGを打っても応答ありません。
全て承諾した場合
pingによる疎通が可能となりました。しかし、ここで気になるのはどの項目を最低限承諾する必要があるかです。そのため、以降では1つのみを拒否にした場合について検証したいと思います。
無差別モードのみを拒否した場合
同じセグメントのサーバからPINGを打っても応答ありません。
MACアドレス変更のみを拒否した場合
pingによる疎通が可能となりました。
偽装転送のみを拒否した場合
同じセグメントのサーバからPINGを打つと、Destination Host Unreachableと帰ってきます。
検証結果一覧
以下の通りになりました。
なぜ、無差別モードと偽装転送の承諾が必要となるのか
その前にそれぞれの用語の意味を理解しておきましょう。
無差別モード
Wiresharkでもおなじみ、無差別モード(プロミスキャスモード)です。自分のNIC宛ての通信以外はデフォルトでは全て破棄しますが、無差別モードの場合は全て許可します。
MACアドレス変更
公式ドキュメントからの引用とはなりますが、下記の通りです。
承諾の場合:ESXi は仮想マシンの有効な MAC アドレスを初期 MAC アドレスとは異なるアドレスに変更する要求を受け入れます。
拒否の場合:ESXi は仮想マシンの有効な MAC アドレスを、初期 MAC アドレスとは異なるアドレスに変更する要求を拒否します。
偽装転送
仮想マシンから送出されるフレームのうち、送信元 MAC アドレスが書き換えられているフレームをドロップする機能です。以下の2つのMACアドレスが一致しない場合は仮想マシンから送信されるフレームをドロップします。
①送出されたフレームの送信元 MAC アドレス
②仮想ネットワークアダプタの有効な MAC アドレス
必要な理由
CML2目線で考えると下記の通りです。
サーバ(192.168.0.100)からICMPが送られてきたけども、IPヘッダの宛先を見ると192.168.0.200となっている…。これ私宛じゃないよね。けど、NICの設定がプロミスキャスモードなので許可しちゃいましょ!。
つまり、無差別モードを承諾することで、そもそものサーバからのPINGをCML2で受信することが可能となります。
一方、ルータからICMPの応答を返す時に必ずCML2のNICを通ります。その時にフレームの送信元MACアドレスを確認すると異なります。なぜならば、ルータ(スイッチ)のMACアドレスとNICのMACアドレスが異なるためです。そのため、CML2は通常ならばそのフレームを破棄します。しかし、偽装転送が承諾されているためこのフレームは許可されます。
つまり、偽装転送を承諾することで、ルータ(スイッチ)からのPING応答をCML2で送信することが可能となります。
関連記事
コメント