境界の崩壊と「トランスポートモード」の真価:パケットレベルで読み解くIPsecの最適解
ゼロトラストアーキテクチャが叫ばれて久しい昨今、我々ネットワークエンジニアにとって「境界防御」という言葉は、かつての神聖さを失いつつある。しかし、境界が消失しても「通信そのものの信頼性」という本質は変わらない。エンドツーエンドのセキュアなパスをどう確保するか。そこで再びスポットライトを浴びるのが、IPsecの「トランスポートモード」だ。
本稿では、教科書的な説明を飛び越え、カーネルレベルの挙動と、現場で血を流しながら得たチューニングの知見を共有したい。
—
1. トランスポートモードの「正体」:パケット構造の解剖
多くのエンジニアが「VPNといえばトンネルモード」と信じ込んでいるが、ホスト間通信においてトンネルモードは余分なオーバーヘッドを招く。
トランスポートモードの最大の特徴は、「オリジナルのIPヘッダーを保持する」ことだ。
IPsecヘッダー(ESP)は、オリジナルのIPヘッダーとトランスポート層(TCP/UDP)の間に挿入される。つまり、パケットのルーティング情報は保護されず、ペイロードのみが暗号化される。
パケット構造の比較
- トンネルモード:
[新IP][ESP][旧IP][TCP][DATA][ESPトレーラー][ESP Auth] - トランスポートモード:
[IP][ESP][TCP][DATA][ESPトレーラー][ESP Auth]
この「IPヘッダーを二重に持たない」という構造こそが、RTT削減の鍵となる。特にクラウドネイティブな環境や、マイクロサービス間通信において、このヘッダー削減はMTU(Maximum Transmission Unit)の断片化回避に直結する。
—
2. 現場で直面する「パフォーマンスの壁」とチューニング
トランスポートモードを選択する最大の理由は「レイテンシの極小化」だ。しかし、IPsecを有効にした途端、パフォーマンスがガタ落ちするケースは後を絶たない。
TCPバッファとウィンドウサイズの最適化
IPsecの暗号化・復号処理はCPUリソースを食う。さらに、NICのオフロード機能(tx-checksum-ip-generic等)が正しく機能していないと、カーネルのスタックでパケットが滞留する。以下のLinuxカーネルパラメータは、高スループットなホスト間通信の必須設定だ。
# /etc/sysctl.conf に追記して、TCPウィンドウのバッファを拡大
# 大規模転送時のスループットを維持する
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.ipv4.tcp_rmem = 4096 87380 16777216
net.ipv4.tcp_wmem = 4096 65536 16777216
# 送信時のパケット結合(TSO)を有効化し、IPsec処理の負荷を軽減
ethtool -K eth0 tso on gso on
RTT削減のためのTLSハンドシェイク最適化
トランスポートモードはIP層での保護だが、上位層のTLS 1.3との併用が現代の標準だ。IPsecで「通信の正当性」を担保し、TLSで「アプリケーション層の秘匿性」を担保する。この二段構えの場合、TLSのハンドシェイク回数を削ることが重要だ。
- TCP Fast Open (TFO): 初回ハンドシェイクのRTTを1回分削減する。
- TLS 1.3 0-RTT: セッション再開時に、暗号化済みのデータを最初のパケットで送信可能にする。
—
3. 実装の勘所:StrongSwanによる設定例
設定ファイルをいじる際は、espの暗号化方式に注意が必要だ。AES-GCMを選択することで、認証と暗号化を同時に処理し、処理コストを下げることが可能だ。
# /etc/ipsec.conf (StrongSwan例)
conn host-to-host
authby=secret
type=transport # ここで明示的にトランスポートモードを指定
left=192.168.1.10
right=192.168.1.20
esp=aes128gcm16-modp2048 # GCMモードでパフォーマンスを最大化
ike=aes128-sha256-modp2048
auto=start
—
4. 脆弱性回避と設計思想
トランスポートモードにおいて、最も警戒すべきは「IPアドレスの偽装」と「リプレイアタック」だ。
IPsecにはESN(Extended Sequence Numbers)という機能がある。これは高速な通信でシーケンス番号がオーバーフローするのを防ぐ仕組みだが、これを無効化していると、長時間の高負荷通信でパケットがドロップし、結果としてセキュリティ強度が低下する。
- 鉄則:
esn=yesを必ず設定せよ。 - 脆弱性回避: 古い
3DESやSHA-1は論外。量子耐性を考慮するなら、鍵交換にはmodp3072以上のDHグループを選択するか、楕円曲線暗号(ecp256等)を推奨する。
—
結びに:パケットを信じるな、設計を信じろ
トランスポートモードは、決して「お手軽なVPN」ではない。オリジナルのルーティングを活かすということは、ホスト側のルーティングテーブルやファイアウォール(iptables/nftables)の管理を厳格に行う必要があることを意味する。
パケットがNICを通り抜けるその一瞬、何が起きているか。暗号化のオーバーヘッドを最小化し、カーネルのバッファを最適化し、そして何より「どの層で何を保護すべきか」を明確に言語化できること。それこそが、境界防御が崩壊した後のゼロトラスト時代を生き抜く、我々スペシャリストの矜持である。
次に構築するサーバーのipsec.confには、ぜひこの「血の通った設定」を反映させてみてほしい。そのパフォーマンスの向上が、あなたの設計が正しいことを証明してくれるはずだ。
コメント