Azureの入門書レベルに記載している当たり前のことなのですが、
久しぶりに触れてびっくりしたことをゆるゆるまとめて腹落ちさせていこうと思うので
お付き合いいただければ
同じ仮想NW上に配置したAzure2台のVMでPINGを実行したい。
やりたいことはただそれだけでした。
ただそれだけだったのですが・・・
パブリックIP(XXX.XXX.XXX.XXX)でssh接続
C:\Users\user1>ssh user1@XXX.XXX.XXX.XXX
Enter passphrase for key 'C:\Users\user1/.ssh/id_rsa':
user1@webhst001:~$
ip address show(or ifconfig)を実行
SSH後ip address showを確認。
$ ip address show
:上略
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 00:0d:3a:f1:26:d4 brd ff:ff:ff:ff:ff:ff
inet 10.0.0.4/24 brd 10.0.0.255 scope global eth0
valid_lft forever preferred_lft forever
:下略
ん!?パブリックIP(XXX.XXX.XXX.XXX)でアクセスしているのにプライベートIP(10.0.0.4)しかないぞ。。
pingをするその前に混乱。。
なぜパブリックIPがないのーーー!?
AzureのVMは下記ページのパブリックIPの説明部分にもありますが
プライベートIPのみをもっていてNAT(正確にはNAT)しているからパブリックIPはVM上のNICには割り当てられていないんですね。
パブリックIPはどこで割り当てられているのか
技術的にはここまで単純ではないのですが、概念としては下記のようになっており、
パブリックIPはロードバランサ(Azure LoadBalancer)によって割り当てられています。
たとえばPC1(yyy.yyy.yyy.yyy)からhost1(xxx.xxx.xxx.xxx)へsshをする場合、
ロードバランサがhost1(xxx.xxx.xxx.xxx)の22番ポートへのアクセスを
10.0.0.4の22番ポートへ変換してくれるので通信ができるんですね
神様、仏様、ロードバランサ様です💛
詳細が知りたい方は・・
公式ではなくちょっと古いので現行と差があるかもしれませんが、こちらの2記事が良記事でした。
私もまだ詳しく読めていないのですが、Azure Load Balancerというのは機材の名前ではなくサービス名で複数の機材の集合体ということを知るだけでも勉強になります
・Azureのロードバランサ事情 - ロードバランサの中ってどうなっているの?
・ロードバランサのアーキテクチャいろいろ
本題のpingは・・
今回はAzureの超基本であるパブリックIPはNAT変換されるということをまとめましたが、
次回はpingをして遊んでいきたいと思います