そうか、そうか

~とあるSIerの、哀と涙の軌跡~

Simple 1500シリーズ The 虎舞竜 ~真冬のHCX怪奇現象編~

皆様ごきげんよう、私です。

 

つい先日、vExpert 2021を受賞することができました。

 

f:id:gokusan:20210221130346p:plain

 

VMware製品を触り始めて7年ほど経ちますが、vExpertの応募に申し込んだのは

今回が初めてです。

 

巧拙はともかくとして、思いのほか、ブログを書くという行為は、

私の性分に合っているようで、

自分自身の技術ナレッジの整理にもなっているので、これからも積極的に

発信していきたいと考えています。

 

私も、ググって助けられたことがたくさんありますので、

私のブログが、誰かの一助になれば、とてもうれしく思います。

 

さて、今回は、『The 虎舞竜』シリーズ(?)として、

HCXデプロイ時にぶち当たった謎の虎舞竜について、記載していこうと思います。

 

※ HCXが何たるかは、別のタイミング説明します!ごめんちゃい!

 

あ、ありのまま今起こったことを話すぜ…!

とある案件でVMware Cloud on AWS(以降VMC)へ、オンプレミス環境のマシンを移行する案件で、『HCX』と呼ばれるコンポーネントを使うことになりました。

 

このHCXですが、準備だけ怠らなければ、作成自体は結構簡単なコンポーネントです。

私も検証のため、自宅で構築してみましたが、vCenter Serverの構築を含め、3時間もかかりませんでした。

 

と、ところが・・・いざお客様環境に構築すると、

構築に5日もかかったではありませんか・・・

 

催眠術だとか超スピードだとか

そんなチャチなもんじゃあ 断じてねえ

もっと恐ろしいものの片鱗を 味わったぜ…

 

どうしてこんなことに・・・

HCXのデプロイはざっくりと、

 

① ESXiの構築

② vCenterの構築

③ HCX Managerのデプロイ

④ サイトペアリング

⑤ Network Profileの作成

⑥ Compute Porfileの作成

⑦ Service Meshの作成

⑧ \(^o^)/

 

という感じです。

 

今回問題となったのは、このうち⑦ Service Meshの作成です。

 

本題。事象発生・迷走。

まず、HCXのもつ『Bulk Migration』と『L2延伸機能』を使い、VMware Cloud on AWSとオンプレミスを接続・仮想マシンを移行することがHCXを導入する目的でした。

 

Service Meshを作成すると、VMware Cloud on AWSとオンプレミス側で同一のHCXコンポーネントがデプロイされ、コンポーネントを経由してVPNやL2延伸が行えるようになります。

 

Service Meshを作成する段階で、

・Interconnect

・WAN Optimaization

・Bulk Migration

・L2 Extension

の4つのコンポーネントを有効にしました。

 

f:id:gokusan:20210221124747p:plain

 

これらを有効にすると、VMCとオンプレミス側の両方のvSphere基盤上に、仮想アプライアンスがデプロイされます。

 

f:id:gokusan:20210221124912p:plain

 

↑こんな感じ。諸事情により画面が黒っぽいです。

 

そして、Service Mesh作成段階で、これらのコンポーネント同士で通信を行うのですが…

 

はい!ここで問題発生!

 

Hybrid Interconnect(IX)のステータスが、なんとDownに…なるではありませんか…

f:id:gokusan:20210222125137p:plain

 

( ゚Д゚)ハァ?

 

( ^)o(^ )「いやいや。きっと、もっかいデプロイすれば治るやろ!」

 

f:id:gokusan:20210222125217p:plain

 

( ^)o(^ )「ファーーーwww」

 

なんと今度は、NE(L2延伸してくれるコンポーネント)がダウンに…

 

お、おかしい…

空飛ぶスパゲッティモンスター教の熱心な信者である、

信心深いこの私が、構築の神に見放されるなど…

 

その後、

・Network Profileの再作成

・Compute Profileの再作成

 

はては、HCX Manager自体の再デプロイまで試したのですが、

いずれも効果はでず…

 

 ただ、少しだけ原因となっているであろう箇所は特定ができていました。

 

それが、オンプレミスからインターネットへ抜けるために用意されたルーター」の設定です。

 

だってよー、私の家の検証環境はうまくいってるし、インストーラーのハッシュ値も完璧、再デプロイでもダメなんだもの…環境の違いって、もうそこしかないぢゃん(´・ω・`)

 

その時、ルーターでは、何が起きていたのか。

私は、ネットワーク関連の知識がとにかく乏しく、

ルーターが原因」ということが何となくわかっていても、「何が悪いのか」までは

判断ができませんでした。

 

お客様先のルーターCisco製で、Config情報をいただいて眺めてみたのですが、6割ぐらいは何を書いているのか紐解けませんでした。

 

ただ、1点。NATテーブルを確認するためのコマンドである、

show ip nat transrations

の実行結果が非常に怪しいことになっていました。

 

f:id:gokusan:20210222124221p:plain

 

んん?ちょっと待って。

4500番で出て行っている通信と1543番で出て行ってる通信あるんだけど、「1543番」って何??

 

 

VMwareが公表しているHCXのポート要件で、

・Interconnect

・L2 Extension

コンポーネントが使用するポートは、共にUDPの4500番です。

f:id:gokusan:20210221214008p:plain

 

オンプレミス側ローカルIP

オンプレミス側グローバルIP

VMC側ローカルIP

VMC側グローバルIP

この4つの要素のつながりは、

  

オンプレミス側ローカルIP

→ (Source NAT)オンプレミス側グローバルIP

→ VMC側ローカルIP

→ VMC側グローバルIP

 

という感じです。

 

まず、オンプレミス側で4500番で出ていく通信は、

Source NATされてグローバルIPへ変換されます。

 

f:id:gokusan:20210222125907p:plain

 

ネットワーク詳しい人に聞いてみたのですが仕様的に、オンプレミスIP:4500は、グローバルIP:4500へ変換されるそうです。(真偽不明)

 

つまり、ポート(ここだと4500)が一緒のものを使用するようなのです。

 

少し、整理しましょう。

この原理に当てはめるなら、

 

つまり、

192.19.72.202:4500で出ていく通信は、19.155.80.72:4500にSNATされます

 

同じように、

192.19.72.203:4500で出ていく通信も、19.155.80.72:4500にSNATされるはずです。

 

つまり、同一グローバルIPの同一ポートを使用しようとしているということです。

4500番ポートのバッティングにより、後からデプロイされたNEは、4500番ポートが使用できず、1543番という自動採番されたポート番号を使用しようとしていたようです。

 

そらあかんやろ…(´・ω・`)

 

 

ポートバッティングが原因そうだったので、

Static NATを使うことで、この事象は無事解消しました。

 

f:id:gokusan:20210226192318p:plain

 

とはいえ、謎は残る。

ネットワーク詳しい人でも、そうじゃない人からでも、んなもんあたりまえやん(( ̄δ・ ̄)ホジホジ な今回の事象を「怪奇現象」といったかというと、その理由が2つあります。

 

 

① なぜに私の家の環境では問題なく動作していたのか?

 

② 自動採番されたとはいえ、ポートがかぶってなければ動作してんじゃないの?

 

 

この2点の疑問が未だ解消されていないためです。

 

私の家にCiscoルーターなどという逸般の誤家庭にあるような機器はありません。

あるのは、バッ〇ァローのごく普通の無線LANルーターのみです。

 

この無線LANルーターがNATした際は、一体どんな動きをしていたのでしょうか?

ポートのバッティングをすることもなかったのでしょうか?

バッティングしていたとしても、Ciscoのように自動採番のポート番号を使っていたのでしょうか?

ならば、なぜCiscoルーターはダメだったのでしょうか?

 

この辺りが未だに疑問です。

 

そして、今回この事象の解決に5日間もかかった最大の理由が、①です。

この先入観故に、NATは問題ないんじゃない?(^_-)-☆ という考えに囚われてしまったことが、事象解消の遅延を生んだ最大の要因です。

 

先入観にとらわれてはいけませんね…猛省です。

 

ちなみに・・・

以下の仕様があることをVMwareさんから確認ができました。

  

・HCXにおいて、VMCを起点とする通信はない。基本的に、オンプレミス発信の通信のみ。

VMC側のコンポーネントが4500番ポートで受けられていることが最も重要。オンプレミス側グローバルIPが、4500番ポートを使用していなくても、VMC側のコンポーネントは特に問題がない。

 

ということでした。

なので、Static NATを使用して明示的にポート番号を指定してあげることは、

VMwareとして問題のない設定ということです。

 

 

いかがでしたでしょうか?

HCXが何たるかを説明する前に、HCXについてのトラブル事例を先に書いてしまいましたが、似たような事象にぶち当たった人の参考になれば幸いです。

 

でわでわ。