皆さん、こんにちは!日夜、目に見えないパケットの往来にロマンを感じ、ネットワークの安全を守り続けるインフラエンジニアの皆さん、そしてこれからネットワークの世界に飛び込もうとしている未来のスペシャリストの皆さん。技術メディア主筆のキタムラです。
突然ですが、拠点間を安全に結ぶ「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つのポートが、今日もインターネットの裏側で手を取り合って、私たちの安全な通信を支えてくれています。
皆さんが構築するネットワークが、今日もトラブルフリーで快適にパケットを運び続けられますように。この記事が、皆さんの日々の運用や学習の少しでもお役に立てれば幸いです。
「一歩ずつ理解していけば、ネットワークはもっと楽しくなる!」
それでは、また次回の技術ブログでお会いしましょう!
コメント