Tun虚拟接口应用总结

 

一、实现原理

Linux内核的TUN/TAP虚拟设备,不同于内核的其它设备,其发送和接收数据包都在网络协议栈内部完成,发送的数据包并不会离开协议栈进入到物理网络中,同样,也不会接收到从物理网络中进入协议栈的数据包。

用户空间的设备节点/dev/net/tun用于读写TUN/TAP设备,内核中TUN/TAP设备在发送数据包时,将数据包发送到与/dev/net/tun文件描述符相关联的套接口,用户空间就可从设备节点读取数据。用户空间程序向/dev/net/tun文件描述符写入数据时,TUN/TAP驱动调用内核的数据包接收函数(如netif_rx)将接收到的数据包送入网络协议栈,就像数据包是从物理网络中接收的一样。

 

使用TUN/TAP设备,可实现各种各样的隧道,如下示意图:

Tun虚拟接口应用总结_第1张图片

 

二、网络拓扑图:

 

Tun虚拟接口应用总结_第2张图片

 

三、测试实例

实例网址:https://github.com/gregnietsky/simpletun

路由A:

Eth0.2:192.168.1.4

Br-lan:192.168.11.1

Tun0:192.168.3.1

PC1:192.168.11.188

 

做为服务端运行:./simpletun -i tun0 –s

Ifconfig tun0 192.168.3.1

route add –net 192.168.3.0/24 dev tun0

route add –net 192.168.12.0/24 gw 192.168.3.2

 

路由B:

Eth0.2:192.168.1.180

Br-lan:192.168.12.1

Tun0:192.168.3.2

PC2:192.168.12.224

 

做为客服端运行:./simpletun -i tun0 -c 192.168.1.4

Ifconfig tun0 192.168.3.2

route add –net 192.168.3.0/24 dev tun0

route add –net 192.168.11.0/24 gw 192.168.3.1

iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE

 

虚拟接口信息:

Tun虚拟接口应用总结_第3张图片

Tun虚拟接口应用总结_第4张图片

 

 

1、点到点通信测试:

实例默认是TCP连接,测试ping对端虚拟接口Ip是30-50毫秒左右。Iperf灌包速度1M左右。

 

 

Tun虚拟接口应用总结_第5张图片

 

修改实例为UDP连接后,测试ping对端虚拟接口Ip是0.7毫秒时间。Iperf灌包速度5M多左右。

Tun虚拟接口应用总结_第6张图片

Tun虚拟接口应用总结_第7张图片

 

 

 

 

2、子网到子网测试:

PC2上ping PC1的地址:

Tun虚拟接口应用总结_第8张图片

 

路由1抓tun0接口包:

 

Tun虚拟接口应用总结_第9张图片

下载PC1主机上共享目录的文件到PC2:

Tun虚拟接口应用总结_第10张图片

你可能感兴趣的:(linux,路由器)