【入門編】 IPsecで使用されるUDPポート4500番(NATトラバーサル)の仕組み – ゼロトラスト&エンタープライズセキュリティ実践ガイド

皆さん、こんにちは!日夜、目に見えないパケットの往来にロマンを感じ、ネットワークの安全を守り続けるインフラエンジニアの皆さん、そしてこれからネットワークの世界に飛び込もうとしている未来のスペシャリストの皆さん。技術メディア主筆のキタムラです。

突然ですが、拠点間を安全に結ぶ「IPsec VPN」を構築しているとき、ファイアウォールの設定やルーターの設定で、こんなポート番号を目にしたことはありませんか?

  • UDP 500番
  • UDP 4500番

「500番は鍵交換(IKE)で使うのは知っているけれど、4500番って一体何のためにあるんだろう?」
「これ、本当に両方開けないとVPNは繋がらないの?」

そんな疑問を抱いたことがある方も少なくないはずです。このUDP 4500 番こそが、今回の主役である「NATトラバーサル(NAT-T)」という、ネットワーク界の「超・名脇役」が使うポートなのです。

今回は、このUDP 4500 番がなぜ必要なのか、そしてどのような仕組みでパケットを届けているのかを、難しい専門用語やビット数の計算を極力使わず、身近な「郵便」の例えを交えながら、一歩ずつ丁寧に紐解いていきましょう!

—

1. そもそもIPsecとルーター(NAT)の「冷え切った関係」

IPsec VPNの仕組みを理解する上で、最初に知っておかなければならない「不都合な真実」があります。それは、「IPsecと、私たちが普段使っているルーター(NAT)は、ものすごく相性が悪い」ということです。

まずはここから順を追って説明しますね。

ルーター(NAT/NAPT)の役割をおさらい

私たちが会社や自宅からインターネットに接続するとき、ルーターは「プライベートIPアドレス」を「グローバルIPアドレス」という外向きの住所に変換してくれています。この仕組みを「NAT(Network Address Translation)」や「NAPT(IPマスカレード)」と呼びます。

ルーターは、戻ってきた荷物(パケット)を正しいパソコンに届けるために、「ポート番号」という部屋番号のような宛先をメモして管理しています。
「192.168.1.10のパソコンが、ポート番号 12345 を使って外に出て行ったから、戻ってきたパケットもそのパソコンに届けよう!」という具合です。

IPsecの主役「ESP」には部屋番号(ポート番号)がない!

ところが、IPsecでデータを暗号化して送る主役である「ESP(Encapsulating Security Payload)」というプロトコルには、なんとポート番号という概念がありません。

ESPは、TCPやUDPといったお馴染みのプロトコルと並ぶ、独立したプロトコル(IPプロトコル番号 50)なのです。

【普通のパケット】
 [IPヘッダー] + [TCP/UDPヘッダー (ポート番号あり!)] + [データ]  ⇒ ルーター「よし、ポート番号で管理できるぞ!」

【IPsec(ESP)パケット】
 [IPヘッダー] + [ESPヘッダー (ポート番号がない!)] + [暗号化データ] ⇒ ルーター「えっ、ポート番号がない!? 誰に返せばいいの!?」

ポート番号が書かれていないESPパケットが戻ってきたとき、ルーターは「これは社内のどのパソコン宛てに届いた荷物なんだ…?」と迷子になってしまい、最悪の場合、パケットを捨ててしまいます。これでは、せっかくの安全な通信(VPN)が成り立ちませんよね。

—

2. 救世主「NATトラバーサル(NAT-T)」の登場!

この「相性最悪」な問題を解決するために開発されたのが、NATトラバーサル(NAT-T:NAT Traversal)という技術です。「トラバーサル」とは「突破する、横切る」という意味。つまり、「NAT環境を安全に突破するための仕組み」です。

そして、このNAT-Tが使用する専用の通り道こそが、今回のテーマである「UDPポート4500番」になります。

身近な例え:「定形外郵便の封筒」で包み込もう!

ポート番号を持たないESPパケットを、どうやってルーターに通すのか。そのアイデアは非常にシンプルです。

「ポート番号がないなら、ポート番号が書かれた封筒の中に、丸ごと入れちゃえばいいじゃない!」

これをネットワーク用語で「カプセル化(Encapsulation)」と呼びます。

郵便に例えてみましょう。

  • あなた(パソコン)は、親戚(VPN機器)に「ESP」という特殊な形の壊れやすいプレゼントを送りたいとします。
  • しかし、地元の郵便局(ルーター)は、「その特殊な形(ESP)のままでは、仕分け用のバーコード(ポート番号)が貼れないので、配送できません」と拒否してしまいます。
  • そこであなたは、郵便局が指定する「標準の段ボール(UDPポート 4500 という封筒)」を用意します。
  • その段ボールの中に、プレゼント(ESPパケット)をすっぽり入れ、外側にしっかりと「宛先ポート:4500」「差出人ポート:4500」と書いて発送します。
  • これを見た郵便局(ルーター)は、「あ、いつもの標準の段ボール(UDPパケット)ね! これならバーコード(ポート番号)が貼れるから、問題なく配送できるよ!」と、スムーズに通してくれるのです。

これが、UDPポート 4500 番を使ったカプセル化の仕組みです。

—

3. パケット構造を見てみよう(優しく図解)

文字だけだとイメージしづらいので、パケットがどんな姿に変身しているのか、簡単な図で見てみましょう!

1. 通常のIPsec(NATがない、お互いグローバルIP同士の場合)

お互いの間にルーター(NAT)がない場合は、カプセル化する必要がありません。シンプルでスマートな形をしています。

+-----------------+------------------+-----------------------------+
|  IPヘッダー      |  ESPヘッダー     | 暗号化されたデータ (ペイロード) |
| (グローバルIP)   | (ポート番号なし) |                             |
+-----------------+------------------+-----------------------------+

2. NAT-T有効時(NATルーターを通過する場合)

お互いの間にルーター(NAT)があることを検知すると、パケットは自動的に以下のように「UDPヘッダー」というお洋服を羽織ります。

+-----------------+----------------------+------------------+-----------------------------+
|  IPヘッダー      | UDPヘッダー          |  ESPヘッダー     | 暗号化されたデータ (ペイロード) |
| (プライベートIP) | (宛先/送信元: 4500)  | (ポート番号なし) |                             |
+-----------------+----------------------+------------------+-----------------------------+
                  ^^^^^^^^^^^^^^^^^^^^^^^^
                  ★ここが追加された「封筒」です!

ルーターは、この追加された UDPヘッダー(ポート 4500)だけを見て処理を行います。中身に「ESPヘッダー」が隠れていることなんて、ルーターは知る由もありません。無事に宛先のVPNゲートウェイ(対向機器)に届くと、そこでこの外側の封筒(UDPヘッダー)がペリペリと剥がされ、元のESPパケットとして処理されるのです。

実によくできた仕組みだと思いませんか?

—

4. ポート500番と4500番の「美しいバトンタッチ」

ここで、鋭い方はこう思うかもしれません。
「最初から 4500 番だけで通信すればいいんじゃないの? なんで 500 番も必要なの?」

実は、VPN機器同士は、最初から「お互いの間にNATがあるかどうか」を知っているわけではありません。そのため、通信の始まりから終わりまで、とても美しい「バトンタッチ」を行っているのです。

接続確立までの4つのステップ

1. まずは「UDP 500番」でご挨拶(IKEフェーズ1)
まずは、暗号化の鍵を決めるための話し合い(IKE)を、標準の UDP 500 番ポートを使って開始します。
2. 「お互いの間にルーター、いる?」とお互いにチェック(NAT検出)
話し合いの中で、「私の見えているIPアドレス」と「相手から見えている私のIPアドレス」を答え合わせします。もしこれが食い違っていれば、「あ、途中にIPアドレスを書き換えるルーター(NAT)がいるな!」と判断します。
3. 「じゃあ、4500番に切り替えよう!」と合意
ルーターの存在を検知した瞬間、VPN機器同士は「よし、ここからはルーターに邪魔されないように、お互い UDP 4500 番に切り替えて話そう!」と約束します。
4. 「UDP 4500番」でカプセル化通信(通信開始)
以降の鍵交換の続きも、その後に流れる本番のデータ(ESP)も、すべて UDP 4500 番の封筒に入れてやり取りします。

このように、500 番は「最初の出会いと状況確認の場」であり、4500 番は「状況に合わせた本番の通信路」という見事な役割分担がなされているのです。

—

5. 実務で役立つ設定例:Cisco IOSでのVPN設定

インフラエンジニアの皆さんに向けて、実務でよく使われる Cisco IOS ルーターを例に、NAT-Tに関連する設定例をご紹介します。

現在の多くのネットワーク機器では、NAT-Tはデフォルトで有効(自動的にオン)になっていますが、設定の流れと、明示的に有効化/確認するコマンドを知っておくことはトラブルシューティングにおいて極めて重要です。

! ==========================================================
! Cisco IOS - IPsec VPN (NAT-T) 設定サンプル
! ==========================================================

! 1. 暗号化ポリシーの定義 (IKEフェーズ1)
crypto isakmp policy 10
 encr aes 256              ! 暗号化方式としてAES-256を使用
 hash sha256               ! ハッシュアルゴリズムとしてSHA-256を使用
 authentication pre-share  ! 事前共有鍵による認証
 group 14                  ! Diffie-Hellman グループ14 (2048-bit)

! 事前共有鍵(パスワード)の設定
crypto isakmp key YourSecureSecretKey address 203.0.113.10

! ----------------------------------------------------------
! ★POINT: NAT-T(NATトラバーサル)の有効化
! 通常はデフォルトで有効ですが、明示的に有効にする場合のコマンドです。
! ----------------------------------------------------------
crypto ipasmp nat-keepalive 20  ! NATルーターのセッションが切れないよう、20秒ごとに生存確認を送る

! 2. IPsecのトランスフォームセット(データの暗号化方式)の定義
! ここで定義されたESPパケットが、NAT環境下では自動的にUDP 4500で包まれます。
crypto ipsec transform-set MY_TSET esp-aes 256 esp-sha256-hmac
 mode tunnel  ! トンネルモードを指定

! 3. 暗号マップの作成と適用
crypto map MY_VPN_MAP 10 ipsec-isakmp
 set peer 203.0.113.10
 set transform-set MY_TSET
 match address 100  ! 暗号化対象のトラフィックをACL 100で指定

! 4. 外部インターフェースへの適用
interface GigabitEthernet0/0
 ip address 192.168.100.1 255.255.255.0
 crypto map MY_VPN_MAP  ! 作成した暗号マップを適用

トラブルシューティングに効く確認コマンド

実機でVPNの状態を確認する際は、以下のコマンドを叩いてみましょう。

# IPsecの接続状態を確認するコマンド
show crypto ipsec sa

# --- 出力結果の注目ポイント ---
# 送受信パケットの項目に「pkts encaps」や「pkts decaps」が表示され、
# さらに「local ident」や「remote ident」のポート番号が「4500」になっていれば、
# 無事にNAT-T(UDP 4500)経由でカプセル化通信が行われています!

—

6. 現場で役立つトラブルシューティングの知恵袋

最後に、現場で「VPNが繋がらない!」と呼びだされたときに、役立つチェックポイントをまとめました。

チェック1:上流のファイアウォールでポートは開いているか?

最も多いトラブルが、オフィスの境界にあるファイアウォールや、クラウド(AWSのセキュリティグループやAzureのNSGなど)で、必要なポートが閉じているケースです。

  • NGな設定:UDP 500 だけを許可している。
  • 正しい設定:UDP 500 と UDP 4500 の両方を許可している。

NAT環境がある場合、最初の挨拶(500番)は通っても、その後の本番通信(4500番)がファイアウォールでブロックされ、「VPNの接続処理が途中でタイムアウトする」という現象が起きます。必ずセットで許可してあげましょう。

チェック2:NATの「セッション維持時間(Keepalive)」に注意

ルーターは、一定時間通信がないと「このポート変換のメモ、もう消していいな」と、ポートの通り道を閉じてしまいます(NATセッションのタイムアウト)。
これを防ぐために、VPN機器には「NATキープアライブ」という、定期的(15秒〜20秒おき)に「生きてるよ!」という空のパケットを送り合う機能があります。もし接続が頻繁に切れる場合は、このキープアライブの間隔を短めに調整してみてください。

—

まとめ:一歩ずつ、パケットの気持ちになって考えよう

難しそうに見えるネットワークのプロトコルも、その背景にある「困りごと(IPsecとNATの相性の悪さ)」と、「それを解決するためのアイデア(UDP 4500 番という封筒で包む)」を理解すれば、とても人間味のある、温かい技術に見えてきませんか?

  • UDP 500番:最初の出会いとお互いの状況確認
  • UDP 4500番:NAT環境を安全に突破するためのカプセル化(NAT-T)

この2つのポートが、今日もインターネットの裏側で手を取り合って、私たちの安全な通信を支えてくれています。

皆さんが構築するネットワークが、今日もトラブルフリーで快適にパケットを運び続けられますように。この記事が、皆さんの日々の運用や学習の少しでもお役に立てれば幸いです。

「一歩ずつ理解していけば、ネットワークはもっと楽しくなる!」
それでは、また次回の技術ブログでお会いしましょう!

コメント

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