仮想マシンにTera TermでSSH接続する その1 ~お勉強編①~
本当はこの記事だけで話を完結させたかったのだが前提知識を整理するのに労力を割いてしまった。最終目標はタイトルの通りなのだがだが、まずNAT、NAPT、ポートフォワーディングとは何ぞやというお勉強から入る。
自身のIT音痴ぶりに辟易とするなあ。
NATとNAPTの違い(NAPTの存在意義)が分かりにくいなあと思いながら読み漁っていたのだが、
現在ではNAPTも含めてNATと呼ぶことが多くなっています。
引用元:https://www.f5.com/ja_jp/services/resources/glossary/network-address-port-translation-nap
ということらしい。実際使われるのはNAPTだけだろうし多くのNAT記事がNAPTを念頭に書かれていたと思うが、ここではNATとNAPTを区別しながら話を進めていきたい。
参考
NAT・NAPTとIPアドレスって? | IT情報メディア「LIVRA」
NAT・NAPT・ポートフォワーディングの違いとは - SHOYAN BLOG
NAT ( Network Address Translation )
Network Address Port Translation (NAPT)
ポートフォワーディング(ポート転送)とは - IT用語辞典 e-Words
NAT ( Network Address Translation )
NATとはIPアドレスを変換する技術である。
通常、家庭や企業内等のLANでは各クライアントPCをプライベートIPアドレスで管理するのだが、インターネット通信を行うにはグローバルIPアドレスが必要となる。
そこでインターネットにパケット送信する際にはプライベートIPアドレスをグローバルIPアドレスに、逆にインターネットからパケット受信する際にはグローバルIPアドレスをプライベートIPアドレスに変換するような仕組みが利用されている。これがNATである。
引用元:https://livra.geolocation.co.jp/wordpress/wp-content/uploads/2020/04/1_2_4_2_710x348.gif
NATの欠点を理解するためには「IPアドレスの変換」というキーワードだけでは不十分で、正確には「クライアントPCが接続しているルータのIPアドレスの変換」という表現をする必要がある。
この仕組みを念頭に置くとNATの欠点も自然と理解できた。
通常LANは複数端末が1つのハブに接続することで構成されるため(家庭内ルータへの接続等)、複数端末が同時にNATでパケットを受け取ろうとするとルータとしてはどの端末にパケットを送信すれば良いのか判別することができない。
(= インターネット上のサーバが送信するパケットの宛先グローバルIPアドレスを、どのプライベートIPアドレスに変換すれば良いか判別することができない)
そこで登場する仕組みがNAPTである。
NAPT(Network Address Port Translation)
LAN上の端末がインターネットにパケット送信を行う際プライベートIPアドレスをグローバルIPアドレスに変換する仕組みがNATであるが、NAPTでは同時にプライベートIPアドレスをポート番号に変換するプロセスが入る。
IPマスカレードとも呼ばれる。
※マスカレード:masquerade。仮装。
前述の通りNATのみではインターネットからパケット受信する際に適切なIPアドレス変換を行うことができない場合がある。というかそんな場合が殆どであろう。そこでNAPTは端末のローカルIPアドレスをルータのポート番号と紐付ける。
引用元:https://livra.geolocation.co.jp/wordpress/wp-content/uploads/2020/04/1_2_4_3_710x303.gif
図に則ると、例えばコンピュータAとWebサーバが通信を行う際は以下のようなプロセスを経る。
1. パケットが持つ送信元IPアドレスが
コンピュータAのプライベートIP → ルータのグローバルIP
に変換され、ポート番号100からWebサーバにリクエストが送信される。
この際ルータはコンピュータAのプライベートIPアドレスとポート番号100が紐付くことを情報として保持する。
2. Webサーバからのレスポンスはポート番号100に返ってくるため、ルータは受信したポート番号を元にIPアドレスを復元する。このIPアドレスはコンピュータAのプライベートIPアドレスとなっている。
これでNATの問題点を解消することができる。
ポートフォワーディング
静的IPマスカレードとも呼ばれる。IPマスカレードのstatic版ということなのでこの時点で何となく想像はつく。名前って大事だなあ。
NAPTは「端末からのパケット送信を行う際に」プライベートIPアドレスとルータのポート番号を行う機能である。Webページ閲覧やメールの送信を行うような場合(端末からリクエストを送信してレスポンスを受信するような場合)はこれで済むのだが、LAN上に設置された公開サーバにインターネット側からパケットを送信したい場合などはそうはいかない。
そこでLAN上の端末とルータのポート番号をあらかじめ紐付けるような機能がルータには用意されており、これがポートフォワーディング(静的IPマスカレード)である。インターネット側からLAN側(ルータ)の特定のポートにパケットを送信すればルータはそれをLAN上の特定の端末に転送することができる。
ポートフォワーディングはインターネットとLAN(構内ネットワーク)の境界にあるルータやゲートウェイが、LAN側のアドレスしか持たない内部のコンピュータの特定のポートへ外部から着信できるようにするために用いられることが多い。これにより、LAN側のコンピュータにサーバ機能を立ち上げて外部から接続することができるようになる。
ポートフォワーディングは、インターネットから特定のポート番号宛てに届いたパケットをあらかじめ設定しておいたLAN側の機器に転送する機能です。これにより、LAN側のコンピュータにサーバ機能を立ち上げて外部から接続することができるようになります。また複数のポートやレンジを指定することができます。
引用元:https://www.asus.com/jp/support/FAQ/1037906/
まとめ
NAT・・・LAN上のプライベートIPアドレスをグローバルIPアドレスに変換する。このグローバルIPアドレスはクライアント端末が接続するルータのグローバルIPアドレスである。
NAPT・・・NATに加えてクライアント端末とポート番号の紐付けも行う。これによりLAN上の複数の端末が同時にインターネットと通信を行うことができるようになる。IPマスカレードとも呼ぶ。
ポートフォワーディング・・・LAN上に設置された公開サーバにインターネット上でアクセスしたいようなケースにNAPTでは対応することができないため、ルータ側でポート番号と端末を紐付けておく。静的IPマスカレードとも呼ぶ。
この記事が気に入ったらサポートをしてみませんか?