tun / tap接口与物理设备的通信

时间:2012-05-10 06:48:26

标签: networking tunnel

我不清楚tun/tap界面是如何工作的。来自 Wikipedia ,我得到了这个:

操作系统通过TUN / TAP设备发送的数据包被传送到用户空间程序,该程序将自身附加到设备。用户空间程序还可以将分组传递到TUN / TAP设备。在这种情况下,TUN / TAP设备将这些数据包传送(或“注入”)到操作系统网络堆栈,从而模拟它们从外部源接收。

现在,我们假设我使用tun创建了IP 12.12.12.1。如果在这台机器上我有两个网卡,我可以从外部机器(比如说12.12.12.2)与这个tun(12.12.12.1 IP)通信,无论哪个网卡设备第二台机器连接到(比方说eth0eth1)?

换句话说,tun和NIC是否彼此独立,或者您需要通过特定的NIC与tun通信?

N.B。欢迎关于主题的链接!

1 个答案:

答案 0 :(得分:4)

如果您设置虚拟网络,例如12.12.12.0/24可以通过您的虚拟接口访问,并且您可以从您的计算机向此网络发送数据包,实现tun / tap的内核模块将通过字符设备将此数据包从内核发送到您的应用程序。由您的应用程序决定它对此数据包的作用。它可以传输到其他应用程序(例如VPN服务器)。您的应用程序还可以通过此字符设备反馈数据包,操作系统网络堆栈会将这些数据包视为入口网络流量。

如果机器充当路由器,它可以只使用tun / tap虚拟接口作为常规虚拟接口,并通过它转发流量,但它始终是处理管理数据包的设备的应用程序。通过虚拟接口的传出流量始终传递到您的应用程序,通过虚拟接口的传入流量始终来自您的应用程序。