1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

OpenVPNの“トンネルを張る”って、結局なにしてるの?仕組みとレイヤーを追ってみた

Last updated at Posted at 2025-06-14

OpenVPNがやってること:仮想NICから出口IP固定までの流れを追ってみた

✅ この記事について

この投稿は、次のような方を想定して書いています:

  • VPNを「なんとなく便利」で使っていて、仕組みをちゃんと知りたい人
  • 「なぜ出口IPが変わるのか?」にモヤモヤしている人
  • OpenVPNの内部動作(tap0, 暗号化, NATなど)をざっくりでも把握したい人

この記事で扱うこと:

  • OpenVPNの接続確立後、パケットがどう流れるか
  • 仮想NIC(tap0/tun0)と暗号化処理の流れ
  • NATによる出口IP固定のしくみ
  • 通信レイヤーとの関係(L3〜L7ざっくり)

この記事では扱わないこと:

  • OpenVPNの設定手順(証明書の作り方など)
  • 各OSごとの実装や挙動の違い(今回は Linux 視点多め)
  • WireGuard や IPSec など、他の VPNプロトコルとの比較

🧭 OpenVPNとは?

仮想プライベートネットワーク技術を使って、サイト間・ポイントツーポイント間に安全な通信経路を作るVPNプロトコル。オープンソースで、広く使われています。

「VPNは便利だけど、実際なにしてるの?」
tap0って?出口IPがなぜ変わるの?通信はどう通ってるの?
そんな疑問を、自分で調べながら理解して、整理した内容です。

🛠 OpenVPNの接続が確立するまで

  1. クライアントとサーバーが、証明書などを使って接続します。
  2. クライアント側のOSに仮想NIC(例:tap0 または tun0)が作られます。
    • OpenVPNサーバーが、仮想NICにIPアドレスを割り当てます。
      • Windowsでは自動でやってくれました。Linux(私の環境)は手動でした。Macは試してないので不明。
  3. クライアントの全トラフィックが仮想NICに向くよう、OSがルーティングを書き換えます。

🌐 接続後の通信の流れ (Googleサイトへのアクセスを例に)

  1. Googleのサイトを見たくなった私は、宛先がGoogleなIPパケットを作成(便宜上、元パケットと呼びます)。
  2. OpenVPNクライアントは、「元パケット」をまるごと暗号化して、パケット(便宜上、包みパケットと呼びます)を作ります。
    • 「包みパケット」の宛先IPは会社のVPNサーバー
    • 「元パケット」の中身(宛先IPはGoogle)は、暗号化されて包まれています。
  3. サーバーが「包みパケット」を受け取り、中身を開梱&復号化。
  4. サーバーが「元パケット」をGoogleに送信。
    • このとき、送信元IPはサーバー自身のIPにNAT変換されるため、Googleから見ると「会社からのアクセス」に見えます。
  5. Googleが返してきたレスポンスを、サーバーが暗号化し、また「包みパケット」にしてクライアントへ戻します。
  6. クライアントは包みを開けて、中身のパケットを受信します。

補足:tap0tun0 の違い(ざっくり)

  • tap0:Ethernetフレーム(L2)を扱う仮想NIC。ブリッジ構成や複雑なネットワーク向け
  • tun0:IPパケット(L3)専用の仮想NIC。VPN用途では tun が使われることが多い
    👉 雰囲気でいうと、tap は「もっと下」、tun は「ちょっと上」です。

🧠 レイヤー視点で見ると

  • クライアントの仮想NIC(L3)に届いたパケットを、OpenVPNプロセス(L7)がアプリ層として受け取ります。
  • それを暗号化して、L4のUDP(またはTCP)セグメントに乗せて送信。
  • さらにL3(IPパケット)→ L2(イーサネットフレーム)→ L1(物理)へと、ネットワークスタックに従って流れていきます。

💡 この文脈では、L6/L5は特に活躍する場面が少ないです。

💬 感想:トンネルってなんだっけ

「トンネル」というと、直通の専用道路みたいなイメージを持っていたのですが、
実際は「荷物を再梱包して安全に送るためのルート」という方がしっくりきます。

また、VPNって“ピア接続”のような感覚で語られることがありますが、
物理的には全然ピアではないです。お互いに一生懸命、包んで包んで、ほどいてほどいて、をやっているだけ

✅ まとめ

  • OpenVPNは、「仮想NIC+暗号化通信」で安全なトンネルを作ってくれる
  • 出口IPが変わるのは、通信の送信元がVPNサーバーに見えるようNATされるから
  • tap0/tun0、パケットの包み構造、レイヤー構造まで理解すると、VPNの仕組みが一気に身近になる

🚪 次の扉?

WireGuard、気になってます。
でもまずはOpenVPNを理解できたので、ようやく次の一歩へ進めそうです。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?