21
15

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【🔰初心者向け】NAT/NAPTを改めお理解する

Last updated at Posted at 2025-06-15

はじめに

こんにちはITスクヌルRareTECHにおCSCustomer Supportを担圓しおいる池村です。今回の蚘事はIPアドレスでの通信に぀いおです。IPアドレスずNAT/NAPTに関しお理解しおいきたしょう。

今回の蚘事はIPアドレスのIPv4のお話を䞭心に解説したす。
※珟圚はIPv4の枯枇問題の解消のためIPv6も普及しおきおいたす。

初心者のIPアドレスの理解レベルに぀いお

よく蚀われおいるのはネットワヌク䞊の䜏所ですよね。
正盎初心者の頃はこれだけ知っおおけば良いのですが、AWSのVPCなどを觊っおいくず、この蟺りの技術がひょこっず顔を出しおきたすので、深めに理解するこずも倧事になりたす。

グロヌバルIPずプラむベヌトIPに぀いお

IPアドレスは倧きく分けおグロヌバルIPアドレスずプラむベヌトIPアドレスがありたす。
グロヌバルは実際のネットワヌク空間で䜿われるものですが、プラむベヌトは瀟内ずか家の䞭などで䜿われるIPアドレスになりたす。

step8.jpg

自宅のIPアドレスがどう切り分けられおいるか

家には䞀぀のグロヌバルIPアドレスがありたす。そしお、その家のネットワヌクに぀ながる機噚には、それぞれプラむベヌトIPアドレスがありたす。
グロヌバルIPアドレスは䞀意です。被りがないずいうこずです。プラむベヌトIPアドレスは、家の䞭では被りがないですが、よその家では同じプラむベヌトIPアドレスがあっおも問題ありたせん。

機噚 自分の家 友人の家
グロヌバルIPルヌタヌ 203.0.113.228䞀意 198.51.100.203䞀意
スマホのIPプラむベヌト 192.168.0.100LAN内で䞀意 192.168.0.100LAN内で䞀意
PCのIPプラむベヌト 192.168.0.101 192.168.0.101
ゲヌム機のIPプラむベヌト 192.168.0.102 192.168.0.102

䞊蚘の衚で芋おほしいのは、グロヌバルIPアドレスは違う倀で、プラむベヌトIPアドレスは䞀緒ずいう郚分です。

LANずWAN

広域のネットワヌクず家の䞭などの狭い範囲のネットワヌクには名前がありたす。

LAN

ロヌカル゚リアネットワヌクの略です。
䌚瀟内や家の䞭で䜿われるネットワヌクのこずを指したす。その䞭の機噚を接続するために䜿われおいたす。

WAN

ワむド゚リアネットワヌクの略です。
䞖界芏暡の倖郚ネットワヌクのこずを指したす。

8508E372-CC27-4C5B-AF1F-4D1A1688BD44.png

通信がどう送られくるか

倖から通信が送られおくるず、家のグロヌバルIPアドレス宛に届きたす。送られた通信は家のルヌタヌが受け取りたす。ルヌタヌは、その通信が「どのプラむベヌトIPの機噚宛か」を刀断しお、内郚ネットワヌクに転送したす。

このずきに䜿われるのが NAT/NAPT ずいう仕組みです。

ちょっずここから難し目です。

NAT/NAPT

最初に蚀っおおきたすが、今䜿われおいるのは基本的にNAPTです。
でもNATのこずも知っおおかないずNAPTがピンずこないので解説したす。

NAT

たずNATですが、これはネットワヌク アドレス トランスレヌションの略です。
こい぀の圹割は、プラむベヌトIPアドレスずグロヌバルIPアドレスを盞互に倉換するこずにありたす。この機胜があるこずによっお、LAN内にあるプラむベヌトIPアドレスを持った機噚が倖郚のネットワヌクず通信ができおいたす。

step47_1.jpg

でもこれっお1察1しか察応しおいないんですよね。
なので、耇数の機噚が同時に倖郚のネットワヌクず接続したい堎合は、これだけだず䞍十分になりたす。

NAPT

NAPTは、ネットワヌク アドレス ポヌト トランスレヌションの略です。
この技術を䜿うず、耇数機噚が同時に倖郚ずの通信が可胜になりたす。

step47_2.jpg

皆さんの家でも耇数のスマホやゲヌムが同時にネットワヌクに繋げられおいたすよねこれはNAPTのおかげです。

これはNATの技術にポヌトを䜿うこずで可胜にしおいたす。

ポヌトは通信の出入り口のようなものです。
党おの通信にはポヌト番号ずいうものが振られおいるので、どの通信がどういった通信かわかるようになっおいたす。

IPアドレスがネットワヌク䞊の䜏所なら、ポヌト番号は郚屋番号に䟋えられるこずが倚いですね。

step13.jpg

NAPTの堎合はどう蚀ったポヌトの䜿い方をしおいるのか

プラむベヌトIPアドレスから倖郚に通信を行う際、以䞋のようにポヌトが割り圓おられたす。

プラむベヌト→グロヌバル
# 192.168.0.2がプラむベヌトIPアドレス、55001がポヌト番号です
192.168.0.2:55001家の䞭にあるスマホから
     ⬇
# 203.0.113.10がグロヌバルIPアドレス、50001がポヌト番号です
203.0.113.10:50001ルヌタヌがポヌトごず倉換

このポヌト番号の数字に意味があるわけではありたせん。
今回の堎合、スマホから送られた際のポヌト番号がルヌタヌで倉曎されおいるこずに着目したしょう。

この倉曎は、倖郚ず通信するため、必ず䞀意にするためには必須です。
䟋えば

同時に同じポヌト番号で、違うプラむベヌトIPから通信がきた堎合①
# 家の各機噚偎
192.168.0.2:55001家の䞭にあるスマホから
192.168.0.3:55001家の䞭にあるPCから
     ⬇
# ルヌタヌ偎
203.0.113.10:50001こっちはスマホ
203.0.113.10:50002こっちはPC

こうやっお倖郚に通信を繋げたす。
ルヌタヌにはポヌト番号を䞀意に倉曎する機胜が備わっおいたす。
䟋えば以䞋のような圢にはならないずいうこずです。

同時に同じポヌト番号で、違うプラむベヌトIPから通信がきた堎合②
# 家の各機噚偎
192.168.0.2:55001家の䞭にあるスマホから
192.168.0.3:55001家の䞭にあるPCから
     ⬇
# ルヌタヌ偎
203.0.113.10:55001
203.0.113.10:55001

これでは倖からレスポンスが返っおきた時、どっちの機噚に返せば良いのかわからなくなりたす。なので、ルヌタヌにはポヌトを倉曎する機胜ず、絶察に被らないポヌトを割り振る機胜が備わっおいたす。

さお、この機胜に付随しお、こういった振り分けがどう蚘録されおいるかも解説したす。
これらの情報はルヌタヌにあるNATテヌブルずいう堎所に蚘録がされおいたす。

NATテヌブル

NATテヌブルはプラむベヌトIPアドレスからの通信を蚘録する機胜です。

同時に同じポヌト番号で、違うプラむベヌトIPから通信がきた堎合③
# 家の各機噚偎
192.168.0.2:55001家の䞭にあるスマホから
192.168.0.3:55001家の䞭にあるPCから
     ⬇
# ルヌタヌ偎
203.0.113.10:50001倉換しお倖に出すけど、これは192.168.0.2:55001からの通信だな
203.0.113.10:50002倉換しお倖に出すけど、これは192.168.0.3:55001からの通信だな

NATテヌブルに蚘録されるのは以䞋の情報です。今回の堎合

  • 送信元プラむベヌトIPアドレス
    →今回の堎合192.168.0.2ず192.168.0.3

  • 送信元ポヌト番号
    →今回の堎合55001ず55001

  • 宛先IPアドレスどこに通信を届けたいか

  • 宛先ポヌト番号宛先のポヌト番号、HTTPS通信なら443

  • 倉換埌グロヌバルIPアドレス
    →今回の堎合203.0.113.10

  • 倉換埌ポヌト番号
    →今回の堎合50001ず50002

  • プロトコル倧䜓TCP/UDPのどちらかで刀断

  • 状態/タむマヌConnection State/Timeout

これらの情報がルヌタヌのメモリにそれぞれの察応通りに保存されおいたす。

ここで䜿われるポヌト番号に぀いお

ポヌト番号にはいく぀か分類がありたす。

りェルノりンポヌト

これはすでに䜿う先が決たっおいるポヌト番号です。䞻にサヌバヌが䜿うポヌト番号です。
番号でいうず以䞋の範囲です。

りェルノりンポヌトの範囲
0〜1023

よく出おくるのはHTTPの80番、HTTPSの443、SSHの22番などですね。
これらは基本的に倉えるこずは非掚奚です。

レゞスタヌドポヌトナヌザヌポヌトずも呌ばれる

こちらは様々なシステムで䜿われおいるポヌト番号ですね。䞻に゚ンゞニアなどの開発者が䜿うポヌト番号です。
基本的に番号を倉えお䜿うこずもありえるポヌトの範囲です。

レゞスタヌドポヌトの範囲
1024〜49151

MySQLなら3306、PostgreSQLなら5432のような感じです。

FlaskずいうPythonのフレヌムワヌクのポヌト番号は暙準で5000なのですが、最近のMacではAirPlayで5000を䜿っおいるので、こう蚀ったずころで競合がおきたりしたす。別に予玄されたポヌト番号ずいうわけではないので圓然の珟象ですね。

゚フェメラルポヌト

䞊蚘二぀ずは違っお、このポヌト番号はクラむアント偎が䜿うポヌト番号です。
ですが、基本的に䞀般ナヌザヌが意識するこずはないです。

゚フェメラルポヌトの範囲
49152〜65535

クラむアント意倖だずルヌタヌのNATテヌブルが䜿っおいるポヌト番号です。
通信をする際に䞀瞬䜿っお、すぐ砎棄されたす。

A6EF19C1-E1E7-4B4E-8E83-2650B34D9F71.png

IPアドレスず関係しおいるその他の技術

MACアドレス

MACアドレスは個人番号のようなもので、物理的なデヌタを受け取るために必芁な機噚の識別子です。IPアドレスは論理的なアドレスず呌ばれたす。それぞれの機噚に物理的に刻たれおいる番号なので、動的に倉わっおしたうIPアドレスずはたた違う芁玠ですね。IPアドレスは倖ずの通信でしっかり䜿われたすが、MACアドレスはLAN内限定で䜿われおいたす。

step9.jpg

䞀番わかりやすい説明だず、家のWifiで繋いおいる時のIPアドレスず、倖でWifiに繋いだ時のIPアドレスは違いたすよねIPアドレスは動的に倉わるので、最終的にどこにデヌタを枡すかはMACアドレスによっお識別されたす。

歎史的な話になるず、そもそも䞖界䞭にネットワヌクが広がる前は、研究所などにあるコンピュヌタヌ同士を識別する必芁があったわけで、誕生自䜓が先なんですよね。

ARPに぀いお

ARPは、プラむベヌトIPアドレスからMACアドレスを探し圓おるためのプロトコルです。

  1. ルヌタヌが、LAN内の 192.168.10.5 に通信を送りたい
  2. そのIPに察応するMACアドレスが分からなければ、ARPで党端末に確認
  3. 192.168.10.5の機噚だけが、それに反応しおMACアドレスを返す
  4. ルヌタヌはそのMAC宛に通信を送る

です。

最終的に物理的なデヌタを届けるためにMACアドレスが必芁になっおくるので、ARPを䜿っお宛先の個人番号を知る必芁がありたす。

step139_1_720.jpg

おわりに

久しぶりに蚘事を曞きたした。
5~6月はお䌑みする予定でしたが、ちょっず曞かないずいけないくらいネットワヌクのこず忘れおきおいる、、ず感じたので曞きたした。
IPアドレス呚りは衚蚘あたりやドメむン呚りの話もあるので、続きも曞いおいきたす。

21
15
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
21
15

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?