NAT/NAPTの仕組みを徹底解説
アドレス変換の基本から応用まで
NAT(Network Address Translation)はプライベートIPとグローバルIPを変換する技術です。
NAPT(IPマスカレード)との違い、実際の変換処理の流れ、ネットワークスペシャリスト試験で問われるポイントを解説します。
こんな人向けの記事です
- NAT/NAPTの仕組みを正確に理解したい
- 静的NAT・動的NAT・NAPTの違いを知りたい
- ネットワークスペシャリスト試験のアドレス変換問題を解けるようになりたい
Step 1NATが必要な理由
IPv4アドレスは約43億個しかなく、全世界のデバイスに一意のグローバルIPを割り当てることができません。NATにより、組織内部ではプライベートIPを使い、インターネット通信時にグローバルIPに変換することで、アドレスの節約を実現しています。
社内PC
192.168.1.10(プライベートIP)
192.168.1.10(プライベートIP)
↓ NAT変換
ルータ(NAT)
203.0.113.1(グローバルIP)
203.0.113.1(グローバルIP)
↓
インターネット上のWebサーバー
プライベートIPアドレス範囲(RFC 1918)
クラスA:10.0.0.0/8(10.0.0.0 〜 10.255.255.255)クラスB:172.16.0.0/12(172.16.0.0 〜 172.31.255.255)
クラスC:192.168.0.0/16(192.168.0.0 〜 192.168.255.255)
Step 2NATの種類
| 種類 | 変換方法 | 特徴 | 用途 |
|---|---|---|---|
| 静的NAT | 1対1の固定変換 | プライベートIPとグローバルIPを1対1で対応 | 公開サーバー |
| 動的NAT | プールから動的に割り当て | グローバルIPのプールから空きを割り当て | 複数端末の外部通信 |
| NAPT(PAT) | IPアドレス+ポート番号で変換 | 1つのグローバルIPで複数端末が通信可能 | 家庭・企業の一般的な構成 |
Step 3NAPT(IPマスカレード)の仕組み
NAPT(Network Address Port Translation)は、IPアドレスに加えてポート番号も変換することで、1つのグローバルIPアドレスを複数の端末で共有できる技術です。
NAPT変換の流れ
【送信時(内部→外部)】
端末A: 192.168.1.10:50001 → NAT → 203.0.113.1:10001 → Webサーバー
端末B: 192.168.1.20:50002 → NAT → 203.0.113.1:10002 → Webサーバー
【受信時(外部→内部)】
Webサーバー → 203.0.113.1:10001 → NAT → 192.168.1.10:50001(端末A)
Webサーバー → 203.0.113.1:10002 → NAT → 192.168.1.20:50002(端末B)
※ ポート番号で端末を識別するため、1つのグローバルIPで多数の端末が通信可能
用語の整理
NAPT = PAT(Port Address Translation)= IPマスカレード(Linux用語)すべて同じ技術を指します。試験ではNAPTまたはPATと出題されることが多いです。
Step 4NAT変換テーブル
NATルータは変換テーブル(NATテーブル)を保持し、通信の対応関係を管理します。
| 内部アドレス | 内部ポート | 外部アドレス | 外部ポート | 宛先 |
|---|---|---|---|---|
| 192.168.1.10 | 50001 | 203.0.113.1 | 10001 | 93.184.216.34:443 |
| 192.168.1.20 | 50002 | 203.0.113.1 | 10002 | 93.184.216.34:443 |
| 192.168.1.10 | 50003 | 203.0.113.1 | 10003 | 151.101.1.69:80 |
試験のポイント
ネットワークスペシャリスト試験では、NAT変換テーブルの穴埋め問題がよく出題されます。送信元IP・ポートと変換後IP・ポートの対応関係を正確にトレースできるようにしましょう。
Step 5NATの課題と対策
| 課題 | 説明 | 対策 |
|---|---|---|
| 外部からの接続 | NAPTでは外部から内部への接続開始が困難 | 静的NAT、ポートフォワーディング |
| IPsec VPN | NATがIPヘッダを書き換えるため、IPsecの認証が失敗 | NAT-T(NAT Traversal) |
| FTP | FTPはデータ接続で別ポートを使うため変換が必要 | ALG(Application Layer Gateway) |
| end-to-end通信 | アドレス変換でP2P通信が困難 | STUN/TURN/ICEプロトコル |
Step 6設定例と実践
iptables(Linux)でのNAPT設定
Linux
# IP転送を有効にする
echo 1 > /proc/sys/net/ipv4/ip_forward
# NAPT設定(eth0が外部インターフェース)
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
# ポートフォワーディング(外部80番→内部Webサーバー)
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.100:80
Cisco IOS でのNAT設定
Cisco IOS
# 内部・外部インターフェースの指定
interface GigabitEthernet0/0
ip nat inside
interface GigabitEthernet0/1
ip nat outside
# NAPTの設定(オーバーロード)
access-list 1 permit 192.168.1.0 0.0.0.255
ip nat inside source list 1 interface GigabitEthernet0/1 overload
# 静的NATの設定
ip nat inside source static 192.168.1.100 203.0.113.10
まとめ
- NATはプライベートIPとグローバルIPを変換する技術
- 静的NAT(1対1)、動的NAT(プール)、NAPT(ポート番号併用)の3種類
- NAPTは1つのグローバルIPで多数の端末が通信可能
- NAT変換テーブルで通信の対応関係を管理
- NATの課題:外部からの接続、IPsec、FTP → それぞれ対策技術がある
- NAPTはLinuxの iptables や Cisco IOS で設定可能