在 Linux 中创建 TUN 设备时,在我的计算机上创建的 TUN 设备具有以下标志:
<POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP>
显然,其中列出了 MULTICAST,但没有列出 BROADCAST。由于 TUN 设备使用 IP 数据包,因此处理 TUN 设备文件的程序应该决定如何处理发送到广播地址的数据包。此外,即使此设备上未列出 BROADCAST 标志,应用程序也可以合法地将数据包发送到 TUN 设备上的广播地址。
那么为什么TUN设备没有BROADCAST标志?
编辑:抱歉造成混淆。我所说的 TUN 设备并不是指 OpenVPN 用于隧道传输的方式。我指的是 Linux(或其他 Unix)中的 TUN 设备,如下所述:http://www.kernel.org/doc/Documentation/networking/tuntap.txt
答案1
关键在于它是“POINTTOPOINT”...您的机器直接连接到远程端,任何实际广播都必须由您的远程端生成。当然,如果您向广播地址发送数据包,您的远程端肯定会将其传递,并且还会将发送到广播地址的任何数据包传回给您。
相反,如果您有多个工作站直接插入交换机,您的机器就可以发送广播,并且不需要将该gateway
广播重新传输给其他对等点。
答案2
我也遇到过这种情况。我正在实施 tinc VPN,我们需要在“tun0”接口(tinc 创建的虚拟接口)上启用 SAMBA。
在我的特定情况下,在我们的服务器中,我们有两个物理接口:一个用于 SAMBA 和其他 Web 服务,另一个用于 docker 中的 SAMBA,以允许 WinXP 客户端(SMB1)。
长话短说,在 tinc.conf 中定义:Mode = switch 在这种情况下,将使用标志创建“tun0”接口。我很确定 OpenVPN 有一个类似的选项。