世界を動かす技術を、日本語で。

IPv6はNATがないからといって安全でないわけではない

2026年1月21日原文(johnmaguire.me)

概要

  • IPv6 はNATがなくても 安全性に問題はない という誤解の指摘
  • NAT は本来 アドレス節約 のための技術
  • セキュリティ効果の大半は ファイアウォール によるもの
  • 現代のルーター はNATなしでも デフォルト拒否 の設定
  • IPv6 でも明示的設定がなければ 外部からの通信は遮断

IPv6はNATがなくても安全

  • IPv4NAT によってデフォルト拒否のセキュリティを得ているという誤解
  • NAT は本来 アドレス不足 への対応策
  • NAT は複数端末が 1つのグローバルIP を共有するための仕組み
  • パケットの 宛先IPとポート を書き換えるアドレス変換機能
  • ポートマッピングポートフォワード により通信先を制御
  • 未設定のポート への着信は 内部ネットワークに到達しない

セキュリティの本質はファイアウォール

  • NAT に付随する ステートフルファイアウォール がセキュリティの主役
  • 現代のルーター はNATの有無に関わらず 着信拒否 がデフォルト
  • ファイアウォール が予期しない着信パケットを 破棄
  • 例: UniFiルーター のIPv6ファイアウォール初期設定
    • 確立済み通信の許可 (アウトバウンド通信の戻りのみ許可)
    • 不正な通信の遮断
    • その他すべての通信の遮断
  • IPv6 環境でも 明示的な許可ルール がない限り、 外部からの通信は遮断
  • NATの有無 でセキュリティが左右されるわけではない

まとめ

  • NAT はセキュリティ機能ではなく アドレス節約策
  • ファイアウォール こそが デフォルト拒否 の根拠
  • IPv6 でも 適切な初期設定 があれば、 NATなしでも安全性は維持

Hackerたちの意見

ネットワークエンジニアとして最初に教わったことだし、受けたセキュリティの正式なクラス(だいたいCiscoのやつで、コースはめっちゃいい)でも同じことを繰り返し言われたよ。一般的な知識は、みんなが思ってるよりも少し複雑だと思う。ここに、IPアドレスが漏れた2つの高価値ターゲットを紹介するね。 IPv4ターゲット: 192.168.0.1 IPv6ターゲット: 2001:1868:209:FFFD:0013:50FF:FE12:3456 ターゲット#1は、ルーティング方法を考えないといけないから、追加のセキュリティレベルがあるし、そもそも誰のものかもわからない。ターゲット#2は、攻撃する際の90%の情報を与えてしまう(デバイス特有の情報も漏れてるから、弱点がどこかもわかっちゃう)。それに、IPv6にはNATがないけど、非常に効果的なプレフィックス変換メカニズムがあって、両方の良いとこ取りだよ。 実際のターゲットはこれだよ: FDC2:1045:3216:0001:0013:50FF:FE12:3456 これにルーティングするのは難しいけど、インターネット上のどんなものにも透過的にアクセスできるんだ。ネイティブでも、プレフィックス変換ターゲットを通じてもね。

Ciscoがこれを教えるのは皮肉だよね。NATを導入したときに言ってたこととは真逆だし。

そうそう、デフォルトではLinuxベースのルーターは、IPv6ホストにトラフィックを転送しないよ。明示的にプログラムを動かして、カーネルにそれを伝えないといけない。

IPアドレスが漏れたら、標準ゲートウェイじゃなくてNAT変換を行っているユニットのアドレスになるんじゃないの?

192.168.0.1にアクセスするのに1秒もかからなかったよ!そんなに難しくなかった。 (;-)

「高価値ターゲットのアドレスが漏れたけど、インターネット経由でルーティングできるかはわからないし、漏れたのは内部アドレスで、誰がその高価値ターゲットを持ってるかもわからない」って話はちょっと信じられないな。実際に心配なら、NAT66を使ってプレフィックスを隠すことができるけど、公共の攻撃ポイントが最初に公開アドレスを変換しているファイアウォールだとしたら、これがセキュリティを達成するとは思えない。それに、もし本当に漏れたIPv6アドレスなら、一時的な形式になっていて期限切れになってるはずだよ。もしインバウンドが許可されるべき静的サービスのことを言ってるなら、結局「攻撃ポイントはインターネットのエッジがインバウンドを公開するところであって、内部アドレスじゃない」ってことになる。

あなたの例で言うと、2つの「プライベート」IPアドレスを提示するべきじゃない?その場合、IPv6アドレスは自動設定されたリンクローカルアドレスに置き換えるべきだし(ULAアドレスも有効だけど)、または外部から見える2つのIPアドレスを提示するべきで、その場合はIPv4アドレスを192.168.0.1がNATされる「パブリック」アドレスに置き換えるべきだよね?そうすれば、言ってる違いはあまり際立たなくなる。最初のケースでは、ローカルIPv6アドレスはローカルIPv4アドレスと同じくらい無駄だし(ただし、ユニークである可能性は高いけど、どうやってアクセスするかはわからない)。2番目のケースでは、ターゲットが巨大なIPv4 NAT(キャリアグレードNATかも)に隠れていない限り、すぐにルーティング方法がわかるはずだよ。でも、IPv4のローカルIPとIPv6のグローバルIPを提示するのはちょっと不公平だと思う。パブリックIPv4アドレスと自動設定されたリンクローカルアドレスを提示して同じ質問をするのも同じくらいおかしいよ。キャリアグレードNATが結果を変えるのは認めるけど、それにはキャリアグレードNATの持つすべての欠点が伴うんだ。つまり、NATピアシングなしではインバウンド接続を受けることが完全にできないし、IPv6でもキャリアグレードNATを使えば同じことができるけど(ただし、私たちはそれを望んでないし、IPv4 CGNATを使いたいのも他に選択肢があまりないからだよね)。

ごめん、これはただの「不明確さをセキュリティとして扱う」ための複雑な議論に過ぎないよ。プライバシーをセキュリティのようにしがみついてるけど、ケルクホフの原則を完全に無視してるよね。

面白い事実なんだけど、デフォルトのパスワードを変えなかったせいで、実際にSBCがハッキングされたことがあるんだ。VLANにはNATと関連するファイアウォールルールがあって、アウトバウンドなしではインバウンドパケットを拒否するから、数日間はそれなりに安全だと思ってたんだけど、実はそのVLANでIPv6も有効になっててファイアウォールがなかったんだ。10年以上経った今でも、設定ミスのファイアウォールだったとはいえ、あの時のことは嫌な思い出だよ。

…まさか、IPv6アドレスを本当に推測したの?IPv6アドレス空間のフルスキャンは現実的じゃないと思うけど。もしかして、SBCがインターネットに接続してアドレスが露出したのかな?それとも、膨大なアドレス数があるからIPv6は「より安全」だと思うんだけど。

それはちょっと恥ずかしいね(笑)

NATもセキュリティの問題を引き起こすよね。エンドポイントとネットワークアドレスが切り離されてると、リフレクション攻撃を止めるのがすごく難しくなる。いろんなループや絡まりを引き起こせるし、同じプロトコルレベルのものもあれば、上下に行き来するものもある。記憶が曖昧だけど、AOLが特定のトラフィックのために十数個の出口アドレスを共有してた時代があったような気がする。今のNATや「PAT」とは違って、プロキシだったかもしれない。つまり、一つをブロックするとAOLのユーザーの1/12をブロックすることになっちゃう。IPアドレス(NATのものもあればそうでないものもあって、ISPによって異なる)がどのモデムバンクにダイヤルしたかによって変わってた時代の記憶が強い。これが特定のコンピュータやユーザーにとってのIPのアイデンティティ価値を薄めてたんだよね。

Hacker Newsで議論の続きを見る