Linuxインフラ実践

NATとポートフォワーディングの仕組みと設定【iptables完全ガイド】

Linuxインフラ実践
記事内に広告が含まれています。

「プライベートIPのサーバーからインターネットに出られる仕組みは?」「自宅サーバーを外部公開するには?」——NATとポートフォワーディングの仕組みを理解すると、ネットワーク設計の幅が大きく広がります。

NATとは

NAT(Network Address Translation)はプライベートIPアドレスとパブリックIPアドレスを変換する仕組みです。家庭のルーターが「192.168.1.x → プロバイダのパブリックIP」に変換しているのがNATです。

【NATの動作】
LAN内: 192.168.1.100:5001 → インターネット: 8.8.8.8:53
           ↓ ルーターがNAT変換
外部IP: 203.0.113.1:5001  → インターネット: 8.8.8.8:53

# LAN内の複数台が1つのパブリックIPを共有できる(NAPT/IPマスカレード)

Linuxでのiptables NAT設定

# IPフォワーディングを有効化(必須)
$ sudo sysctl -w net.ipv4.ip_forward=1

# 永続化(/etc/sysctl.conf に追記)
net.ipv4.ip_forward = 1

# IPマスカレード(SNAT)の設定
# LAN(192.168.1.0/24)からeth0(インターネット)への通信をマスカレード
$ sudo iptables -t nat -A POSTROUTING \
  -s 192.168.1.0/24 -o eth0 -j MASQUERADE

# 設定確認
$ sudo iptables -t nat -L -n -v

ポートフォワーディング

ポートフォワーディングは外部からのアクセスを内部のサーバーに転送する設定です。「外部の80番ポートへのアクセスを内部の192.168.1.10:80に転送する」といった使い方をします。

# ポートフォワーディングの例
# 外部の8080番ポートへのアクセスを内部の192.168.1.10:80に転送
$ sudo iptables -t nat -A PREROUTING \
  -i eth0 -p tcp --dport 8080 \
  -j DNAT --to-destination 192.168.1.10:80

# FORWARDチェインも許可する
$ sudo iptables -A FORWARD \
  -p tcp -d 192.168.1.10 --dport 80 -j ACCEPT

# iptablesの設定を永続化(Ubuntu/Debian)
$ sudo apt install iptables-persistent
$ sudo netfilter-persistent save

# 設定一覧を確認
$ sudo iptables -t nat -L -n -v --line-numbers

まとめ

  • NATはプライベートIPとパブリックIPを変換する仕組み。ルーターが自動で行っている
  • LinuxでNATを設定するには ip_forward=1 とiptablesのMASQUERADE設定が必要
  • ポートフォワーディングはPREROUTINGチェインのDNATで設定
  • 設定は再起動で消えるため iptables-persistent で永続化する

📋 Phase 3 ネットワーク基礎チートシートで全コマンドをまとめて確認できます。

コメント

タイトルとURLをコピーしました