「プライベート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 ネットワーク基礎チートシートで全コマンドをまとめて確認できます。



コメント