4 ポイント 投稿者 GN⁺ 2026-01-22 | 1件のコメント | WhatsAppで共有
  • IPv4がNATを基本的に使用するため、より安全だという主張は、セキュリティとアドレス変換の混同に由来する
  • NAT(Network Address Translation) はセキュリティ機能ではなく、IPv4アドレス不足を解決するためのアドレス節約メカニズムである
  • NATの動作はポートマッピングを基盤として複数のデバイスが1つのグローバルIPを共有するようにすることにすぎない
  • 実際に外部トラフィックを遮断する役割はNATではなく、ステートフルファイアウォール(stateful firewall) が担う
  • IPv6環境でも基本的にファイアウォールが未認可トラフィックを遮断するため、NATがないことがセキュリティ低下を意味するわけではない

NATとセキュリティの混同

  • IPv4がNATを使うためより安全だという主張は、誤った認識である
    • NATはセキュリティ機能ではなく、アドレス節約(address conservation) のための技術である
    • IPv6でもNATは使用できるが、それがセキュリティを強化するわけではない
  • NATは内部ネットワークの複数デバイスが1つのグローバルIPアドレスを共有できるようにする
    • パケットの宛先ポートを基に宛先IPを書き換え(rewrite) してルーティングを行う
    • ネットワーク管理者が設定したポートマッピング(port mapping) またはポートフォワーディング(port forwarding) ルールに従って動作する

NATの実際の動作方式

  • NAT環境では、外部から入ってくるトラフィックが想定外の宛先ポートを持つ場合、内部デバイスには転送されない
    • このようなトラフィックはグローバルIPを持つデバイス側にとどまり、内部ネットワークへはルーティングされない
  • このためNATが外部アクセスを遮断しているように見えるが、これは副次的な結果にすぎず、セキュリティ設計上の目的ではない

ファイアウォールの役割

  • NATが提供すると誤解されがちなセキュリティ効果は、実際にはステートフルファイアウォール(stateful firewall) に由来する
    • ほとんどの現代的なルーターは、NATの有無に関係なくデフォルトでインバウンドトラフィックを遮断するファイアウォールポリシーを含んでいる
    • ファイアウォールはパケットを書き換えたりルーティングしたりする前に、想定外の宛先トラフィックを破棄(drop) する
  • 例としてUniFiルーターのデフォルトIPv6ファイアウォールルールは次のとおり
    • Established/Relatedトラフィックを許可(アウトバウンドへの応答トラフィック)
    • Invalidトラフィックを遮断
    • そのほかすべてのトラフィックを遮断

IPv6環境におけるセキュリティ

  • IPv6ネットワークでもデフォルトのファイアウォールルールが未認可のインバウンドトラフィックを遮断する
    • NATを使わなくても同等の保護レベルが適用される
  • 外部からIPv6デバイスへの未要求トラフィックを許可するには、明示的にファイアウォールルールを追加する必要がある
    • これはNATの使用有無に関係なく同様に適用される

結論

  • IPv6がNATを使わないという理由でセキュリティが弱くなるという主張には根拠がない
  • 実際のセキュリティはNATではなく、ファイアウォールポリシーとトラフィック制御ルールによって決まる
  • IPv6環境でも適切なファイアウォール設定により、デフォルト拒否(default-deny) のセキュリティ戦略を維持できる

1件のコメント

 
GN⁺ 2026-01-22
Hacker News の意見
  • 議論に参加する前に、RFC 4787 のセクション 5 を確認することを勧める
    NAT はファイアウォールではないにもかかわらずトラフィックをフィルタリングし、その結果として一定レベルのセキュリティ機能を提供する
    現実には NAT は単なるアドレス変換を超えて発展してきており、IPv6 が NAT を使わなくてもファイアウォールで同じフィルタリングを実装できる

    • RFC 4787 は実装の現実とは異なる。ほとんどの SOHO ルーターは Linux ベースなので、netfilter ベースの NAT の挙動を議論するほうが現実的
      Linux netfilter は NAT とファイアウォールの両方を実装しており、nat テーブルの DNAT/SNAT ルールは NAT、filter テーブルの REJECT/DROP ルールはファイアウォールの役割を果たす
      NAT ルールだけが適用されている場合、既存の接続に属さないトラフィックもそのまま通過させる
    • RFC 4787 のそのセクションはアウトバウンド接続についての説明
      NAT が外向きの接続を作る際に状態テーブルを生成し、それに対応するインバウンドパケットを許可する過程を扱っている
      つまり、この文書でいう “filtering” は未要求のインバウンド接続を意味しない
    • IPv6 は NAT がなくても安全性が低いわけではないが、デフォルト設定が重要
      IPv6 も IPv4 と同程度に安全にできるが、設定次第で変わる
    • 30 年の IT 経験からすると、NAT 環境は怠惰な設計を助長する
      システムやアプリケーションのエンジニアが問題全体を理解せず、NAT と境界ファイアウォールに依存するのは悪いセキュリティ習慣
    • RFC が常に絶対的な基準とは限らない
      特に実装実態とかけ離れるほど、RFC の信頼性は下がる
  • 米国のモバイルネットワークでは、NAT なしでも IPv6 アドレスを使っている
    たとえば T-Mobile は 464XLAT で IPv4 を IPv6 上にトンネリングしている
    これは NAT なしでも大規模にステートフルファイアウォールを運用できることを示している

    • フィンランドの Elisa ネットワークでは IPv6 のインバウンド TCP 接続が問題なく動作する
      Termux と netcat でテストしたところ、IPv4 は CGNAT の背後だが IPv6 は直接接続できた
    • 「スマートフォンがサーバーとして動けない理由」が気になる
    • 個人のデバイスがデータを直接提供できるべきだというのは自然な権利だと思う
      ネットワーク容量が足りないなら、それを解決すべき
      IPv6 が普及すれば、人々は直接通信するのが当たり前になるはず
    • テザリング利用時にクライアント PC が同じ IPv6 アドレスを受け取るのか気になる
    • モバイル機器はサンドボックス環境に制限されている
  • ネットワークエンジニアとして最初に学んだのは、NAT とセキュリティの関係だった
    IPv4 のプライベートアドレス (192.168.0.1) は外部から到達しにくいが、IPv6 のグローバルアドレスはデバイス情報を露出させる可能性がある
    IPv6 には Prefix Translation のような代替手段があり、NAT の利点を一部維持しつつ透過的なアクセスを可能にする

    • IPv4 のプライベートアドレスと IPv6 のグローバルアドレスを比較するのは不公平
      どちらも内部アドレス同士、あるいは外部アドレス同士で揃えて比較すべき
      CGNAT 環境ではインバウンド接続が不可能なので、IPv6 でも同じ形で制限できる
    • 内部アドレスが漏れても、実際の攻撃ポイントはインターネット境界ファイアウォール
      NAT66 でプレフィックスを隠せるが、実質的なセキュリティ上の利点は大きくない
    • 192.168.0.1 はあまりにも簡単にアクセスできた(冗談めいた口調)
    • NAT66 は「必要悪」だが、状況によっては最良の選択になりうる
  • 多くのハッカーは NAT とファイアウォールの違いを混同している
    NAT はセキュリティのためのものではなく、セキュリティはファイアウォールが提供する

    • NAT とファイアウォールの違いは理解しているが、現実には両者は一緒に動く
      NAT は名前空間化、ファイアウォールはポリシーベースのセキュリティ
      名前空間化それ自体も、攻撃者にリソースの「名前すら分からなくさせる」強力なセキュリティ特性
      IPv6 ファイアウォールは 1 行の誤ったルールで全世界に公開されうる
    • NAT は外部アクセスを遮断するので実質的なセキュリティ効果がある
      ファイアウォールがなくても NAT だけで内部リソースを保護できる
      NAT は家庭用ネットワークの攻撃面を 1 台のルーターにまで縮小する
    • NAT は多くのユーザーが望む動作をデフォルトで提供する
      一方でファイアウォールはデフォルト設定が異なる場合があり、その結果 IPv6 が一般ユーザーにはセキュリティ後退に感じられる
    • コンシューマー向け NAT は実質的にデフォルト拒否ファイアウォールと同じ挙動をする
      UPnP が NAT のセキュリティを壊すと主張するのは、PCP がファイアウォールを壊すと言うのと同じ
    • 対称 NAT や CGNAT はファイアウォールではないが、現実には似たような効果を生む
  • NAT のデフォルト拒否特性が IPv4 セキュリティの利点だという主張について
    IPv6 のデフォルト拒否ルールも同じセキュリティ水準を提供するので、構造的なセキュリティ差はない

    • 「内在的セキュリティ」という概念には意味がない
      IPv4 NAT と IPv6 のデフォルト拒否ルールは同じ不変条件を維持する
      どちらも設定を誤れば同様に脆弱になりうる
  • NAT があるから大丈夫だと油断し、IPv6 ファイアウォール未設定のせいで SBC がハッキングされた経験がある
    原因は NAT ではなく IPv6 の設定ミスだった

    • IPv6 アドレス空間は広大すぎて全体スキャンは不可能なのに、攻撃者がどうやってアドレスを知ったのか気になる
    • かなり気まずいミスだった
  • NAT もセキュリティ問題を引き起こす
    リフレクション攻撃や、アドレスとエンドポイントの分離による追跡困難が生じる
    以前 AOL が少数の egress アドレスを共有していたため、一部ユーザーのブロックが難しかった事例がある

    • RFC 1631 によれば、NAT は「セキュリティ提供の選択肢を減らす」と明記されている
      しかし時間が経つにつれて、NAT はセキュリティ信仰(cargo cult) のように扱われるようになった
  • ISP やルーター設定によって NAT の効果は変わる
    NAT は意図されたセキュリティ機能ではないが、副次的なセキュリティ効果をもたらす
    IPv6 では各デバイスが直接アドレスを受け取るなら、デフォルト拒否ファイアウォールが必要

    • ほとんどのルーターは IPv6 でもデフォルト拒否を適用するが、UPnP のような自動ポートフォワーディング機能がこれを無効化する可能性がある
      UPnP 仕様リンク
    • IPv6 でもインバウンド遮断は IPv4 と同じように動作する
    • NAT を無効にしても同じように到達不能なら、原因は NAT 自体ではなくルーティング設定かもしれない
    • IPv6 NAT を使う例はまれで、fc00::/7 アドレスを NAT するのは特殊なケース
    • ISP が IPv6 アドレスを 1 つしか提供しないのは異常な構成。最低でも /56 は提供すべき
  • NAT がセキュリティの根拠だと主張する人はネットワークをよく分かっていない、という意見に対して

    • 「それは過度な一般化だ」として、NAT はセキュリティそのものにはならなくても完全に無視すべきではないと述べる
    • 自分は IPv6 の専門家で、2008 年から IPv6 の運用経験があると明かす
      当時、プライバシーアドレスの蓄積問題で SIP サーバーが失敗した事例を共有している
      関連する議論は Reddit VOIP スレッド でも依然として有効
  • NAT がインバウンドトラフィックをドロップしないという主張について
    NAT は単にアドレス変換を行うだけで、パケットをドロップしない

    • ただしルーター設定によっては、egress インターフェースから入ってくるトラフィックを明示的に遮断する場合が多い
    • NAT がパケットをドロップしなくても、宛先 IP がルーター自身なら最終的にはルーティングされない
      このフィードバックを反映して本文を修正したとのこと