译注:本文翻译自 Tun/Tap interface tutorial。这篇文章写的相当不错,特翻译。另外,为了跟以前博文统一,本文将 interface
统一翻译为设备
;在适当地方,进行意译。
前言:请注意本文所涉及代码只用于展示。如果你想谨慎点,你需要自己提高代码的健壮性和整合其到其他代码中。另外,本文的描述也不是关于本文主题的最终参考,而只是我个人的实验结果。请报告在代码和文章中找到 bug 或者错误,谢谢!
本文所涉及的源代码包链接:simpletun。
更新于 2010 年 07 月 18 日:通过这篇文章,我才了解到 iproute2 的新版本已经可以(最终)创建 tun/tap 设备,尽管对这功能没有(还是这样?)完善文档支持。因此,安装 tunctl (UML 工具)或者 OpenVPN 来只创建 tun 设备就不必要了。下边是 iproute2-2.6.34 关于 tun/tap 帮助文档:
1 | # ip tuntap help |
Tun/Tap 设备是由 Linux (和可能其他类 Unix 操作系统)所提供的特色功能,可用于用户空间网络操作(userspace networking),也即允许用户空间程序直接接触原生网络流量(以太网层或 IP 层),并对它们进行任意处理。本文尝试解释在 Linux 下 tun/tap 设备是如何工作的,并通过一些样例代码来展示如何使用它们。
more >>