我已经进行了一些搜索,或多或少地了解了tun0
界面的作用。我从各种来源获得以下信息:
操作系统通过tun / tap设备发送的数据包将传递到用户空间程序,该程序将自身附加到该设备。用户空间程序还可以将包传递到tun / tap设备中。在这种情况下,Tun / Tap设备将这些数据包传递(或“注入”)到操作系统网络堆栈,从而模拟它们从外部源的接收。tun / tap接口是仅软件的接口,这意味着它们仅存在于内核中,并且与常规网络接口不同,它们没有物理硬件组件(因此没有物理线连接到它们)。
您可以将tun / tap接口看作是常规的网络接口,当内核确定是“在线”发送数据的时候,而是将数据发送到连接到该接口的某些用户空间程序。
现在,如果比较eth0
和的输出,则会tun0
看到类似这样的内容。
ifconfig eth0
eth0 Link encap:Ethernet HWaddr 00:14:22:50:78:71
inet addr:172.16.210.32 Bcast:172.16.255.255 Mask:255.255.0.0
...
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
<snipped>
ifconfig tun0
tun0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet addr:10.8.0.1 P-t-P:10.8.0.2 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1
现在,如果我们尝试比较两者,就会发现这些差异,
eth0
确实有一个MAC地址,可以理解的tun0
是没有。eth0
在广播模式下工作,并且tun0
在点对点模式下工作。
我有以下几点我不理解。
P-t-P:10.8.0.2
在这种情况下地址的作用是什么?为什么将子网掩码
tun0
设置为255.255.255.255?