我在运行 ifconfig 时注意到有一个名为 tun0 的网络接口,它有一个 ipv4 地址。一些研究表明它是一个隧道设备,但我真的不知道它是如何使用的,什么在使用它,以及为什么它有一个IP地址。
我确实启用了 iptables,并且 iptables 和 tun 之间似乎存在一些链接(如果有帮助的话)。
答案1
它用于隧道软件。请参阅维基百科文章标题:TUN/TAP了解完整详情。
摘自 FreeBSD tun 手册页
tun 接口是一种软件环回机制,可以宽松地描述为 pty(4) 的网络接口模拟,即 tun 对网络接口的作用与 pty(4) 驱动程序对终端的作用相同。
本socat
文档页面很好地展示了如何使用它们。
摘自 socat 文档
某些操作系统允许生成虚拟网络接口,这些接口不连接到线路,而是连接到模拟网络的进程。这些设备通常称为 TUN 或 TAP。
参考
答案2
正如 @slm 已经写过的,TUN 接口是一个软件环回,它模拟与 TAP 接口相同的网络接口。实际上,TUN 接口是对第3层界面。也就是说,它是一个网络层仿真设备,可以隧道传输各种性质的数据包,无论是原始 TCP、UDP、SCTP 还是诸如 PPP、PPTP、AH/IPSEC 等封装数据包。另一方面,TAP 接口是对二层接口,即它是一个数据链路仿真设备,可以用作原始以太网、arcnet、令牌环等。
这具有不同的实际意义。例如,在设计防火墙时,如果要创建具有不可路由地址的 NAT 内部网络,则可以使用 TUN 接口来创建过滤桥。如果您有一组可以分配给内部主机的公共 IP 地址,但仍希望对所有流量进行防火墙,则可以使用 TAP 接口来模拟以太网桥,以在其上过滤数据包。顺便说一句,这是所谓的“透明防火墙”的基础。
答案3
要理解,您需要逻辑地想象 tun/tap 之间的区别:在 Tap 模式下,您需要一个 br0 桥,为裸铁的地址工作,而对于 tun 则相反,它是来自 VPN 服务器“工作 VPN”的流量,如图所示:
为了拥有一个 tun,您需要首先创建它,您可以使用systemd-networkd
:
通过 SSH 进行 VPN(维基百科):
tun
将创建一个路由IP隧道,tap
将创建一个以太网隧道。
tap0
如果您是以太网桥接并且已预先创建了一个 tap0 虚拟接口并将其与您的以太网接口桥接,请使用。
如果您想控制 VPN 上的访问策略,则必须为 tun/tap 接口创建防火墙规则。
在非 Windows 系统上,您可以给出明确的单元号,例如 tun0。在大多数系统上,除非您部分或完全禁用 tun/tap 接口的防火墙,否则 VPN 将无法运行。
答案4
我知道你问过 tun 但因为它们是相关的,(该接口称为 tun/tap)我想我会分享这个关于 Tap 的 Cloudflare 博客文章以及他们如何在虚拟机中使用它。
他们说:
从历史上看,Tap 设备主要用于实现 VPN 客户端。
然后接着说:
最近,虚拟机开始使用分路设备来启用网络。
这篇文章还包括了这个人工智能生成的小迪迪来帮助记忆,我觉得这很有趣:
Tap就像一个开关,
以太网标头会挂断。
屯就像一条隧道,
它将汇集 VPN 连接。
它不会容纳以太网标头,
据我们所知,tap 使用,tun 不使用。