NATの仕組み ― 家のルーターはどうやってIPアドレスを変換しているのか


NATによるアドレス変換の仕組み プライベートネットワーク PC 192.168.1.10:50000 スマホ 192.168.1.20:50001 タブレット 192.168.1.30:50002 NAT ルーター 203.0.113.1 インターネット Webサーバー等 93.184.216.34 Webサーバー :443 NATテーブル(NAPT) 内部アドレス 変換後(外部) 192.168.1.10:50000 → 203.0.113.1:30001 192.168.1.20:50001 → 203.0.113.1:30002 192.168.1.30:50002 → 203.0.113.1:30003
NATによるプライベートIP→グローバルIP変換とNATテーブルのイメージ
ひよこ ひよこ

NATってよく聞くけど、何をしてるの?

ペンギン先生 ペンギン先生

NAT(Network Address Translation)は、プライベートIPアドレスグローバルIPアドレスを変換する仕組みだよ。家のWi-Fiにつないだスマホやパソコンは 192.168.1.x みたいなプライベートIPを持ってるけど、インターネットに出るときはルーターがグローバルIPに書き換えて送り出してくれるんだ。

ひよこ ひよこ

なんでわざわざ変換するの?そのまま送ればいいんじゃないの?

ペンギン先生 ペンギン先生

IPv4アドレスは約43億個しかなくて、世界中のデバイスに1個ずつ配るには全然足りないんだ。そこで家や会社の中ではプライベートIPを使い回して、インターネットとの出入口でNATが変換することで、1つのグローバルIPを何十台ものデバイスで共有できるようにしたんだよ。

ひよこ ひよこ

でも返事が来たとき、どの端末宛か分からなくならないの?

ペンギン先生 ペンギン先生

いい質問だね!そこで使われるのがNAPT(PAT)というポート番号を使った仕組みだよ。例えばスマホが送信するときルーターは「192.168.1.10:50000 → 203.0.113.1:30001」、パソコンは「192.168.1.20:50001 → 203.0.113.1:30002」みたいにポート番号を割り当てて、NATテーブルに記録しておくんだ。返事が来たらポート番号を見て正しい端末に転送するよ。

ひよこ ひよこ

NATテーブルってメモ帳みたいなものなんだね!SNATとDNATっていうのも聞いたことあるけど、何が違うの?

ペンギン先生 ペンギン先生

SNAT(Source NAT)は送信元アドレスを変換するもので、家のルーターがやってるのはこれだね。DNAT(Destination NAT)は宛先アドレスを変換するもので、外部から来た通信を内部の特定サーバーに転送するポートフォワーディングがこれにあたるよ。Webサーバーを自宅で公開するときなんかに使うんだ。

ひよこ ひよこ

便利そうだけど、NATがあると困ることってないの?

ペンギン先生 ペンギン先生

あるある。NATの内側にいる端末同士が直接通信しにくい『NAT越え問題』が有名だよ。オンラインゲームやビデオ通話P2Pファイル共有なんかは端末同士が直接つながりたいのに、NATが邪魔して接続できないことがあるんだ。

ひよこ ひよこ

じゃあビデオ通話とかはどうやって解決してるの?

ペンギン先生 ペンギン先生

WebRTCなどでは STUN・TURN・ICE という技術を組み合わせて解決してるよ。STUNサーバーに問い合わせて自分のグローバルIP+ポートを知り、相手と交換する。それでもダメならTURNサーバーが中継役になる。ICEはこれらを自動的に試して最適な経路を見つけるフレームワークだよ。

ひよこ ひよこ

けっこう大変なんだね…。もっと大規模だとどうなるの?

ペンギン先生 ペンギン先生

ISP(プロバイダ)レベルで使われるキャリアグレードNAT(CGNAT)というのがあるよ。IPv4アドレスの枯渇が深刻になって、プロバイダが契約者にプライベートIPを配り、プロバイダのNATでまとめて変換するんだ。つまりNATの二重がけ。100.64.0.0/10 という専用のアドレス帯が割り当てられていて、ポート開放ができない・IPアドレスで個人を特定しにくいといった問題が起きるよ。

ひよこ ひよこ

二重NAT!?それは大変そう…。IPv6になったらNATはいらなくなるの?

ペンギン先生 ペンギン先生

理論上はそうだよ。IPv6は2の128乗、約340澗(かん)個のアドレスがあるから、すべてのデバイスにグローバルアドレスを割り振れる。NATなしで端末同士が直接通信できる世界が本来の姿なんだ。ただ現実にはIPv4との併用期間が長くて、IPv6でもNAT64のような変換技術が使われることもあるね。

ひよこ ひよこ

NATって実はセキュリティにも関係してたりするの?

ペンギン先生 ペンギン先生

鋭いね!NATは外部からの一方的な接続を遮断する『偶発的なファイアウォール』としても機能してるんだ。NATテーブルにエントリがない通信は内部に届かないから、ポートスキャンなどの攻撃をある程度防げる。ただしこれはあくまで副次的な効果で、本来のセキュリティ対策の代わりにはならない。NATはアドレス枯渇を乗り越えるための『苦肉の策』だったのに、今やインターネットの根幹インフラになっているのが面白いところだよ。