2026年6月16日

2026年6月16日

NAT を確認する手順|自分が NAT の内側か、どのルールと変換表で動いているかを Linux・Windows・ルーター・クラウドで調べる

NAT を確認するときは、「この端末やサーバーは NAT の内側にいるのか」「どの機器のどのルールで変換されているのか」「いま実際にどんな変換が行われているのか」の3段階に分けて調べると、見落としが減ります。この記事では、手元のアドレスと外から見えるアドレスの比べ方、Linux の iptables・nftables・conntrack での確認、Windows の NAT の確認、業務用ルーターとクラウドの NAT ゲートウェイの見方を、読み取り専用のコマンドを中心に説明します。ここで紹介する確認コマンドは設定を変えないので、本番機でも試しやすいものです。

手順1:自分が NAT の内側にいるかを確かめる

まず、端末やサーバーに付いているアドレスと、外のサーバーから見えるアドレスを比べます。

# Linux:自分に付いている IPv4 アドレス
ip -4 addr show

# 外から見えるアドレス(外部の確認用サービスを使う例)
curl -4 https://ifconfig.me
dig +short myip.opendns.com @resolver1.opendns.com

Windows では ipconfig で自分のアドレスを確認し、外から見えるアドレスは PowerShell の Invoke-RestMethod https://ifconfig.me などで調べられます。外部の確認用サービスは運営者の都合で変わることがあるため、使えない場合は別のサービスを使ってください。

2つが一致すれば、その端末は NAT を通らずにグローバル IP で通信しています。一致しなければどこかで NAT を通っています。自分のアドレスが次の範囲なら、内側にいると判断できます。

  • 10.0.0.0/8、172.16.0.0/12、192.168.0.0/16:プライベートアドレス(RFC 1918)
  • 100.64.0.0/10:回線事業者の CGNAT などで使われる共有アドレス(RFC 6598)

自宅や社内のルーターの WAN 側アドレスも同じ方法で見ます。WAN 側がプライベートアドレスなら NAT が2段(二重 NAT)、100.64.0.0/10 なら回線事業者側でも NAT されている可能性が高い、と判断できます。どこで変換されているかを詳しく知りたい場合は、traceroute -n 8.8.8.8 の最初の数ホップのアドレスを見ると、内側のルーターの段数がおおよそ分かります。

手順2:Linux で NAT のルールを確認する

Linux のゲートウェイやサーバーで NAT をしている場合、ルールは netfilter に入っています。注意したいのは、iptables のコマンドが2種類あることです。

# どちらの iptables かを確認
iptables -V
# 例: iptables v1.8.x (nf_tables) なら nftables ベース
#     iptables v1.8.x (legacy)   なら従来方式

従来方式(legacy)で入れたルールは nftables のコマンドからは見えず、その逆も起こります。片方だけ見て「ルールが無い」と判断しないよう、両方を確認します。

# iptables の NAT テーブル(カウンターと行番号つき)
sudo iptables -t nat -L -n -v --line-numbers

# 保存形式で一覧(ルールをそのまま読める)
sudo iptables-save -t nat

# nftables のルール全体
sudo nft list ruleset

読み方の要点は次のとおりです。

  • PREROUTING の DNAT:外から届いたパケットの宛先を書き換える(ポート転送)
  • POSTROUTING の SNAT / MASQUERADE:外へ出るパケットの送信元を書き換える(内側の端末を外へ出す)
  • pkts と bytes:そのルールに当たった件数。テスト通信の前後で増えたかを見ると、ルールが実際に使われているかが分かる

Docker が入っているホストでは、DOCKER という名前のチェーンにコンテナの公開ポートの DNAT が並びます。自分で書いた覚えの無いルールがあれば、まず Docker や仮想化ソフトによるものかを確かめてください。

あわせて、カーネルの転送が有効かも見ておきます。NAT のルールがあっても、転送が無効なら内側との間でパケットは流れません。

sysctl net.ipv4.ip_forward

手順3:変換表(conntrack)で実際の変換を見る

ルールは「どう変換するか」の決まりで、実際にいま行われている変換は conntrack の表に記録されています。conntrack コマンドは conntrack-tools パッケージに含まれます。

# 変換中の接続の一覧
sudo conntrack -L

# 特定の内側ホストの分だけ
sudo conntrack -L -s 192.168.10.20

# 件数と上限
sudo conntrack -C
sysctl net.netfilter.nf_conntrack_max

1行には、元の方向(送信元と宛先)と、戻りの方向の組が並びます。戻りの方向の宛先が自分のグローバル IP やポートに変わっていれば、そこで NAT が行われています。件数が上限に近づいている場合は、カーネルログに nf_conntrack: table full が出ていないかも確認します。

パケットキャプチャで書き換え前後を比べる

ルールと変換表で分からないときは、外側と内側のインターフェースで同時にパケットを見ます。外側で見えた宛先 203.0.113.5:8080 が、内側で 192.168.10.20:80 に変わっていれば、DNAT が動いていると確かめられます。

sudo tcpdump -ni eth0 tcp port 8080
sudo tcpdump -ni eth1 host 192.168.10.20

手順4:Windows の NAT を確認する

Windows のクライアントやサーバーそのものが NAT をしている場面は多くありませんが、Hyper-V やコンテナの環境では WinNAT が使われます。PowerShell で次のように確認できます。

# NAT の一覧(内側のプレフィックスなど)
Get-NetNat

# 静的な対応(ポート転送)
Get-NetNatStaticMapping

何も表示されなければ、その Windows では WinNAT が設定されていません。Windows の「インターネット接続の共有」など別の仕組みで NAT している場合は、これらのコマンドには表示されないことがあります。

手順5:ルーターとクラウドの NAT を確認する

業務用ルーター

Cisco IOS では、次のコマンドで変換の状況と統計を見られます。

show ip nat translations
show ip nat statistics

ほかのメーカーにも変換表を表示するコマンドがありますが、名前と書式は機種とファームウェアで異なるため、各製品のコマンドリファレンスで確認してください。家庭用ルーターでは、管理画面の「NAT テーブル」「ポート転送」「セッション情報」といった項目に変換の一覧が表示されることがあります。表示できない機種もあります。

クラウドの NAT ゲートウェイ

クラウドでは、OS の外で NAT が行われます。AWS を例にすると、確認する場所は次のとおりです。

  • サブネットに関連付けたルートテーブルで、0.0.0.0/0 の宛先が NAT ゲートウェイを向いているか
  • NAT ゲートウェイの状態と、割り当てられた Elastic IP
  • CloudWatch の NAT ゲートウェイのメトリクス。ポートの割り当て失敗を示す ErrorPortAllocation が増えていれば、同じ宛先への同時接続が多すぎる可能性がある

Azure や Google Cloud にも同様の NAT サービスがあり、項目名や指標の名前はそれぞれ異なります。サービスの仕様は更新されることがあるため、公式ドキュメントで最新の情報を確認してください(2026年10月現在)。

確認結果の整理のしかた

調べた結果は、次の順で書き出しておくと、後から見ても状況が分かります。

  1. 端末のアドレスと外から見えるアドレス
  2. 通過している NAT の段数と、それぞれの機器
  3. 関係するルール(DNAT / SNAT / MASQUERADE)とカウンター
  4. 変換表に記録されている実際の対応

ルールを変更する場合は、確認の段階で sudo iptables-save > ~/iptables-backup.txt や sudo nft list ruleset > ~/nft-backup.txt で現在の状態を保存してから作業すると、問題が起きたときに戻せます。

まとめ

  • 自分のアドレスと外から見えるアドレスを比べ、プライベートや 100.64.0.0/10 なら NAT の内側
  • Linux は iptables(legacy と nf_tables の両方)と nftables のルールを見て、カウンターで当たり方を確かめる
  • 実際の変換は conntrack の表と、外側・内側のパケットキャプチャで確認する
  • Windows は Get-NetNat、Cisco は show ip nat translations で状態を見られる
  • クラウドではルートテーブル、NAT ゲートウェイの状態、メトリクスを確認する

お気軽にご相談ください

お見積りへ お問い合わせへ
▲