【入門編】 仮想ネットワークインターフェース(TUN/TAPデバイス)のOSレベルの動作 – サイバーセキュリティとプライバシー保護実践ガイド

「VPNって結局何してるの?」仮想ネットワークデバイスTUN/TAPを郵便配達の現場から紐解く

こんにちは!ネットワークの世界へようこそ。

カフェでノートPCを開き、公共Wi-Fiに接続して仕事をする。そんな日常の風景の裏側で、「VPN(仮想プライベートネットワーク)」という言葉を耳にしたことはありませんか?「とりあえずセキュリティが強くなるやつ」という認識で止まってしまっている方も多いかもしれません。

でも、エンジニアとしてインフラの深淵を覗くなら、VPNがOSの中でどう動いているのか、その「心臓部」を知る必要があります。今日は、VPNの影の主役である「仮想ネットワークインターフェース(TUN/TAP)」について、郵便配達に例えてお話ししましょう。

—

郵便局の「仕分け係」がいなくなる日

通常、私たちのパソコンがインターネットにパケットを送るとき、OSという名の巨大な郵便局は、宛先(IPアドレス)を見て、黙々と外のポスト(物理的なNIC)へ放り投げています。

ところが、VPNソフトを立ち上げると、この郵便局に「新しい仕分け係」が雇われます。これが TUN(ターネル)デバイス です。

TUNデバイスは、物理的なLANケーブルが存在しない「仮想的な入り口」です。OSから見ればただのネットワークインターフェースですが、実際には、OSの「カーネル空間(OSの心臓部)」から、VPNアプリが動いている「ユーザー空間(私たちが普段プログラムを動かす領域)」へパケットを横流しする、魔法のトンネルの入り口なのです。

TUNとTAP、どっちを使う?

  • TUN(L3): IPパケットを扱います。宛先IPさえ分かれば届く「手紙」のようなもの。VPNで最も一般的なのはこちらです。
  • TAP(L2): イーサネットフレームを扱います。MACアドレスまで含めた「小包」ごと運ぶイメージ。LANを仮想的に延長したいときに使います。

—

OSとアプリの境界線で何が起きているのか?

VPNアプリが動いているのは、OSの深いところではなく、私たちが書くプログラムと同じ「ユーザー空間」です。しかし、カーネルが処理するネットワークパケットを、ユーザー空間のアプリが直接触ることはセキュリティ上許されません。

そこで登場するのが、この「TUNデバイス」という名の「連絡用ポスト」です。

1. OS: 「海外サイトへの通信(パケット)を発送しなきゃ!」
2. ルーティング: 「おっと、VPN設定が有効だ。宛先は物理ポートじゃなくて、この『TUNデバイス』というポストに放り込もう」
3. VPNアプリ: 「お、ポストにパケットが入ったぞ。これを暗号化して、遠く離れたVPNサーバーへ送る『カプセル(別のパケット)』に詰めよう」
4. 通信: 暗号化された小包が、物理的なWi-Fiを通ってVPNサーバーへ飛んでいく。

この一連の流れがあるからこそ、カフェのWi-Fiで誰かにパケットを覗き見されても、中身は暗号化された小包なので「何が書いてあるか分からない」状態になるのです。これがVPNの防御の正体です。

—

実際に触ってみよう:TUNデバイスを作る

難しそうに聞こえますが、Linux環境であればコマンド一つでTUNデバイスを作成できます。百聞は一見にしかず、試してみましょう。

# 1. 仮想インターフェース 'tun0' を作成する
# ip tuntapコマンドは管理権限が必要です
sudo ip tuntap add dev tun0 mode tun

# 2. 作成されたインターフェースにIPアドレスを割り当てる
sudo ip addr add 10.8.0.1/24 dev tun0

# 3. インターフェースを有効化する
sudo ip link set up dev tun0

# 確認:ip addrコマンドで 'tun0' が現れたら成功です!
ip addr show tun0

この tun0 というインターフェースは、OSから見れば「別のネットワークへ繋がる道」として認識されます。ここにパケットを流し込むと、先ほど説明した通り、VPNアプリがそのパケットを「受け取って」暗号化処理を始める準備が整うわけですね。

—

エンジニアとして、どこに注目すべきか

私たちがVPN製品を設計したり、トラブルシューティングをしたりする際、最も重要なのは「OSがどのパケットをどのインターフェースに流そうとしているか」というルーティングの制御です。

VPNが繋がらないとき、よくある原因は「VPN接続したのに、パケットが tun0 に入らず、そのまま物理Wi-Fiのインターフェースへ流れていっている(漏洩している)」というケースです。

# 現在のルーティングテーブルを確認するコマンド
ip route show

# 意図した宛先が 'tun0' を経由しているかチェック!
# 10.8.0.0/24 への通信が dev tun0 に向いているかを確認しましょう

終わりに:技術は「仕組み」で理解する

今回紹介したTUN/TAPデバイスは、目に見えないパケットの動きを、OSという巨大なシステムの中で可視化するための非常に強力なインターフェースです。

「難しそう」と敬遠していた方も、ぜひ一度、仮想環境で ip tuntap を叩いてみてください。物理的なケーブルがない場所に、ネットワークインターフェースが生まれる瞬間、きっと「ネットワークの仕組み」が一段と身近に感じられるはずです。

これからも、ブラックボックスになりがちなセキュリティ技術の「中身」を、泥臭く、かつ丁寧に紐解いていきます。次回もお楽しみに!

コメント

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