※当サイトの記事には、広告・プロモーションが含まれます。

VirtualBoxのゲストOSに外部のマシンから接続するにはポートフォワーディングが必要

www.itmedia.co.jp

⇧ 開発者にとっては、途中で他のアーキテクチャに切り替えたりを検討できたりするのでありがたいですな。

ポートフォワーディングって?

業務外だと所有してるパソコンは1台ってことが多いと思うので、出くわすことのないシチュエーションだとは思うのだけど、業務では、複数台のマシンを扱うことの方が多いと思うので否が応でも遭遇すると思うのだけど、別マシンに構築した仮想マシンSSH接続したいってことあるあるだよね~。

で、出てくるのがポートフォワーディングですと。

In computer networkingport forwarding or port mapping is an application of network address translation (NAT) that redirects a communication request from one address and port number combination to another while the packets are traversing a network gateway, such as a router or firewall. This technique is most commonly used to make services on a host residing on a protected or masqueraded (internal) network available to hosts on the opposite side of the gateway (external network), by remapping the destination IP address and port number of the communication to an internal host.

https://en.wikipedia.org/wiki/Port_forwarding

⇧ 上図のように、1つのIPアドレスに対して、ポート番号だけ変えてアクセスしてるんだけど、別々のIPアドレスにリダイレクトしてくれますと。

どのポートと紐づけるかを考える必要があるわけだけども。

VirtualBoxのゲストOSに外部のマシンから接続するにはポートフォワーディングが必要

で、オンプレミスな環境での業務だとVirtualBox仮想マシンを構築することあるあるだと思うのだけど、ネットワークアダプターが何種類かあって、

shin569.hatenablog.com

⇧ 上記サイト様の図がイメージし易いですが、外部のマシンから接続するには、VirtualBoxで「NAT+ポートフォワーディング」の設定が必要ということですな。

ちなみに、

NAT traversal(NATトラバーサル)は、TCP/IPネットワークにおいてNAT機器を用いた上で、複数ホスト間のネットワーク接続を確立する際に生じる問題を解決するために設計されたアルゴリズムである。ちなみに、NAT traversalはNAT通過を意味し、NAT越えとも呼ばれる。

NAT traversal - Wikipedia

⇧ NAT越え、というものの1つに、

48n.jp

dev.ariel-networks.com

⇧ ポートフォワーディングが含まれるということらしい。

また、

近年の高速ネットワークインフラの普及や計算機の高性能・低価格化などにより,複数の計算機や情報機器を協調させて使用するグリッドコンピューティング (以下,グリッド) が注目されている。

グリッドは,分散したリソースを統合し,分散処理やアプリケーションの連携,利用者間のコラボレーションなどを実現する。

しかしながら,複数の異なるプライベートネットワーク上の計算機を統合してグリッドを構築する場合,NAT(Network Address Translator)が問題を引き起こすことがある。

https://www.jstage.jst.go.jp/article/jssstconference/22/0/22_0_512/_pdf

NAT 越え問題の解決策としては,NAT にポートフォワーディングの設定を行うことが一般的であるが,ネットワーク管理者権限が必要となり,グリッド利用者が必ずしも行えるとは限らない。

そこで,アプリケーションレベルで NAT 越え問題を解決する手法として

  • (1) NAT の外側に位置する計算機に通信を中継させる (中継方式)
  • (2) UPnP(Universal Plugand Play)[3]
  • (3)Hole punching[4]

の3つが知られている。

https://www.jstage.jst.go.jp/article/jssstconference/22/0/22_0_512/_pdf

⇧ というように、ポートフォワーディング以外にもNAT越えに対応する方法があると。

ネットワーク系の学習は複数のマシンが無いと難しいので自己学習し辛いですな...

毎度モヤモヤ感が半端ない...

今回はこのへんで。