1. ホーム
  2. 記事一覧
  3. 【基本から解説】NATの仕組みとは?

2022.11.20

【基本から解説】NATの仕組みとは?

よくネットワークの説明の際に利用される言葉で「NAT」という言葉があります。

NATとはどういうものなのか、ここではその特徴や種類について詳しく説明していきます。

NATとは?

NATとは、「Network Address Translation(ネットワーク アドレス トランスレーション)」の略で、一般的にはグローバルIPアドレスとプライベートIPアドレスを変換する技術を指します。

NATの背景の1つとして、「IP枯渇」があります。「IP枯渇」という言葉を聞いたことがある方も多いかと思いますが、実はIPアドレスというものは作られた当初から少なくなるとの懸念がありました。

IPアドレスの詳しい説明はここでは割愛しますが、IPアドレスは最大で約43億個しかなく、世界中のネットワークを考えると多くはない数字です。

それを解消するために、インターネット(外部)と通信ができる「グローバルIPアドレス」と、あるネットワーク内(例えば社内など)でのみ通信ができる「プライベートIPアドレス」が作られました。

しかし、グローバルIPアドレスとプライベートIPアドレスは、そのまま通信することが出来ません。そこでグローバルIPアドレスとプライベートIPアドレスを相互に変換する技術である、NATが誕生しました。

NATはNATテーブルと呼ばれるものを持っていて、一度変換したIPアドレスの変換前と変換後を自身のテーブルに記録します。これにより、戻ってきたパケットを記録したIPアドレスに返却することが出来るのです。

NATは2種類に分けることが出来ます。Source NATとDestination NATの2種類です。

Source NATとは?

別名「SNAT」(送信NAT)と呼ばれるものであり、プライベートネットワークから外部へ通信を行うためのIPアドレス変換の技術のことを指します。静的NATと呼ばれることもあります。

Destination NATとは?

別名「DNAT」(宛先NAT)と呼ばれるものであり、SNATとは逆に外部からプライベートネットワークへ通信を行うためのIPアドレス変換の技術のことを指します。動的NATと呼ばれることもあります。

IPv6ではNATがない?

IPアドレスはIPv4とIPv6に分けられます。

IPv6はIPv4の枯渇が懸念されていた当初から構想されていましたが、開発や普及に時間がかかるため短期的な対策としてIPv4をそのまま使える技術であるNATが利用されました。

IPv4が最大約43億個だったのに対し、IPv6は2の128乗個で約340澗(かん)個という想像もつかないような数字です。(ちなみに約340澗は340兆の1兆倍の1兆倍です)

IPv6ではインターネットへの通信にもLAN内の通信にも、共通の「グローバルユニキャストアドレス」と呼ばれるものを使います。ですので、基本的にはIPv6ではNATの技術を使用しないのです。

SIPとNATの関係性

SIPは「Session Initiation Protocol(セッション イニシエーション プロトコル)」の略で、音声や映像などをネットワーク上でリアルタイムに通信させるプロトコルです。よくVoIPなどに使われている技術なのですが、実はSIPとNATは相性が悪いことで有名です。

SIPはデータのやり取りにSDP「Session Description Protocol(セッション ディスクリプション プロトコル)」を使っています。SDPはIPアドレス情報などをメッセージ・ボディに含めて送信していますが、対してNATはパケットのIPヘッダのみを変換するのでSDP情報の中身までは変換されないのです。そのためNAT環境下でSIPを利用すると、「着信が出来ない」「自分の声は相手に届いているが、相手の声が聞こえない」などの問題が発生します。

現状では、「NAT越え」と呼ばれる技術や「RTP」と呼ばれる技術を使用した中継装置をインターネット上に設置するなどの対応を組み合わせ、SIPとNATの問題を回避しています。

NAPT(PAT)とは?

NATとよく似た言葉で、NAPT「Network Address Port Translation(ネットワーク アドレス ポート トランスレーション)」と呼ばれる技術があります。

別名、PATやIPマスカレードなどとも呼ばれます。PATはシスコ用語(CISCO製品で利用している用語)で、一般的にはNAPTと呼ばれています。

NATと同じくグローバルIPアドレスとプライベートIPアドレスを変換する技術ですが、NATは1対1で変換するので、もし100台のパソコンがあった場合は100個のグローバルIPアドレスが必要になります。この問題を解決するための技術がNAPTです。

NAPTではIPアドレスの他にポート番号も動的変換します。IPアドレスが同じでもそれぞれ送信元ポート番号が異なるので、100台のパソコンの通信をそれぞれ識別することが出来るのです。

まとめ

今回はNATについて紹介しました。

私達が普段何も考えずにインターネットに接続したりWebページを閲覧出来ているのは、こうした様々な技術の恩恵を受けているからであるということがご理解いただけたのではないかと思います。

ネットワークは奥が深いものですが、エンジニアにはなくてはならない知識です。この記事で少しでもネットワークに興味を持っていただけたなら、是非もっと深い知見を持ったエンジニアを目指してほしいと思います。

【番外編】USBも知らなかった私が独学でプログラミングを勉強してGAFAに入社するまでの話

IT未経験者必見 USBも知らなかった私が独学でプログラミングを勉強してGAFAに入社するまでの話

プログラミング塾に半年通えば、一人前になれると思っているあなた。それ、勘違いですよ。「なぜ間違いなの?」「正しい勉強法とは何なの?」ITを学び始める全ての人に知って欲しい。そう思って書きました。是非読んでみてください。

「フリーランスエンジニア」

近年やっと世間に浸透した言葉だ。ひと昔まえ、終身雇用は当たり前で、大企業に就職することは一種のステータスだった。しかし、そんな時代も終わり「優秀な人材は転職する」ことが当たり前の時代となる。フリーランスエンジニアに高価値が付く現在、ネットを見ると「未経験でも年収400万以上」などと書いてある。これに釣られて、多くの人がフリーランスになろうとITの世界に入ってきている。私もその中の1人だ。数年前、USBも知らない状態からITの世界に没入し、そこから約2年間、毎日勉学を行なった。他人の何十倍も努力した。そして、企業研修やIT塾で数多くの受講生の指導経験も得た。そこで私は、伸びるエンジニアとそうでないエンジニアをたくさん見てきた。そして、稼げるエンジニア、稼げないエンジニアを見てきた。

「成功する人とそうでない人の違いは何か?」

私が出した答えは、「量産型エンジニアか否か」である。今のエンジニア市場には、量産型エンジニアが溢れている!!ここでの量産型エンジニアの定義は以下の通りである。

比較的簡単に学習可能なWebフレームワーク(WordPress, Rails)やPython等の知識はあるが、ITの基本概念を理解していないため、単調な作業しかこなすことができないエンジニアのこと。

多くの人がフリーランスエンジニアを目指す時代に中途半端な知識や技術力でこの世界に飛び込むと返って過酷な労働条件で働くことになる。そこで、エンジニアを目指すあなたがどう学習していくべきかを私の経験を交えて書こうと思った。続きはこちらから、、、、

note記事3000いいね超えの殿堂記事 今すぐ読む

エンベーダー編集部

エンベーダーは、ITスクールRareTECHのインフラ学習教材として誕生しました。 「遊びながらインフラエンジニアへ」をコンセプトに、インフラへの学習ハードルを下げるツールとして運営されています。

RareTECH 無料体験授業開催中! オンラインにて実施中! Top10%のエンジニアになる秘訣を伝授します! RareTECH講師への質疑応答可

関連記事