設定

NAT/NAPTの仕組みを徹底解説 — アドレス変換の基本から応用まで

ネットワーク NAT NAPT

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)
↓ NAT変換
ルータ(NAT)
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の種類

種類変換方法特徴用途
静的NAT1対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.1050001203.0.113.11000193.184.216.34:443
192.168.1.2050002203.0.113.11000293.184.216.34:443
192.168.1.1050003203.0.113.110003151.101.1.69:80
試験のポイント
ネットワークスペシャリスト試験では、NAT変換テーブルの穴埋め問題がよく出題されます。送信元IP・ポート変換後IP・ポートの対応関係を正確にトレースできるようにしましょう。

Step 5NATの課題と対策

課題説明対策
外部からの接続NAPTでは外部から内部への接続開始が困難静的NAT、ポートフォワーディング
IPsec VPNNATがIPヘッダを書き換えるため、IPsecの認証が失敗NAT-T(NAT Traversal)
FTPFTPはデータ接続で別ポートを使うため変換が必要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 で設定可能