ネットワーク) VPN

VPN

Virtual Private Network (仮想プライベートネットワーク)

  • 「遠く離れたネットワークを、あたかも同じネットワークであるかのように接続する技術」

概念

  • VPN トンネル (インターネット): 「仮想LANケーブル」
    • 実際には公衆インターネットをそのまま使用しますが、暗号化されているため外部からは見えず、
      論理的に分離されたプライベートネットワークのように動作します。
  • 「中継器」
トンネリング

元のパケットを「別のパケットの中に入れる」ことで送信します。

パケットフロー

  • 元のパケット
    • Src: VPN IP
      • VPNネットワークの仮想IPを割り当てます。
      • ⚠️ ルーティングテーブルを先に確認し、送信インターフェースに応じて Src IP を割り当てます。
    • Dst: 目標サーバー
  • ルーティング規則に従って仮想インターフェース(WireGuard仮想インターフェース) へ送信します。
  • パケット全体を暗号化します。
  • 新しいIPヘッダーを追加します。
    • Src: 自宅のグローバルIP
    • Dst: VPNサーバーのグローバルIP
      • VPNモジュール(WireGuardカーネルモジュール) が認識しています(設定ファイルから読み込みます)。
  • UDPで送信します。
    • 元のパケットはTCPであるため、接続を保証します。
  • ルーティング規則に従って物理インターフェース(eth0) へ送信します。
  • VPNサーバーでパケットを復号化し、元のパケットを抽出します。
  • 宛先にTCPで送信します。
    • 宛先がVPNネットワークに登録されている内部ネットワークの場合: 元のパケットをそのまま送信します。
    • 宛先が外部の場合: SrcのみをVPNサーバーのグローバルIPに変更して送信します(NAT処理)。
プライベートIPアドレス帯
  • 10/8
  • 172.16/12: 172.16.0.0172.31.255.255
  • 192.168/16

WireGuard

VPNプロトコル

  • 暗号化されたトンネルを作成する「ルール」です。
  • Network Layer 3 で動作します。
    • すべてのネットワークトラフィックを暗号化します。

特徴

  • 最新の暗号化を使用します。
    • ChaCha20
      • ソフトウェアで最適化されています。
      • AESよりもモバイルで高速です。
      • ハードウェアアクセラレーションは不要です。
    • Curve25519
      • RSAよりもはるかに高速です。
      • 小さなキーサイズ (32バイト) です。
      • 量子耐性について研究中です。
  • キーベース認証
    • 事前に交換した公開鍵で、互いに同じ秘密の値を作成し (ECDH計算)、
      それを用いてセッションキーを生成して通信します。
      • ECDH: 私の秘密鍵 × 相手の公開鍵 = 共有秘密
    • ハンドシェイクごとに一時キーも作成し、ECDH計算を行います。
      • 一時キーも使用して複数の共有秘密を持ち、キーを作成し、
        それをさらに加工してセッションキーを生成します。

Post
Category
Series