TUN/TAPは仮想ネットワークデバイス及びそのデバイスドライバの実装およびデバイス名で、主にUnix系のシステムで利用できる。実ハードウェアであるネットワークカードと対応しているデバイスドライバと同様にネットワーク通信ができるが、データはハードウェアではなく、ネットワーク通信を仮想化したソフトウェアのプロセスに送られ、そこで処理される(例えば、VPNの相手方への通信として、改めて実ハードから送信される)。

概要 TAP(Terminal Access Point) は、イーサネットデバイスをシミュレートし、データリンク層を操作できる。TUN(TUNnel) はネットワーク層をシミュレートし、IPパケットなどを操作できる。用途としては、たとえばTAPはブリッジに使われ、TUNはルーティングに使われる。

OSがTUN/TAPデバイスに送ったパケットは、そのデバイスに接続しているユーザープログラムに送信される。また、ユーザープログラムからTUN/TAPデバイスに送られたパケットは、TUN/TAPデバイスはそれらのパケットをOSのプロトコルスタックに渡すので、OS側からはあたかも外部からパケットを受け取ったように見える。

利用の具体例 TUN/TAPを使っている例を以下に列挙する。 Virtual Private Network OpenVPN - Ethernet/IP over TCP/UDP、暗号化・圧縮 OpenSSH coLinux - Ethernet/IP over TCP/UDP Hamachi tinc - Ethernet/IPv4/IPv6 over TCP/UDP、暗号化・圧縮 VTun - Ethernet/IP/serial/Unix pipe over TCP、暗号化・圧縮・トラフィックシェーピング ICMPTX - IP over ICMP (ping) iodine - IP over DNS 仮想マシンでのネットワーキング Bochs coLinux QEMU VirtualBox KVM Hercules S/390エミュレータ

実装しているOS TUN/TAPドライバは以下のオペレーティングシステム (OS) で利用できる。 FreeBSD macOS Linux - 2.1.60 以降 Microsoft Windows OpenBSD NetBSD Solaris Android iOS

外部リンク Universal TUN/TAP device driver Linux 2.4 文書 tun/tap driver for Mac OS X