Как уже писал @slm, интерфейс TUN представляет собой программную петлю, которая эмулирует сетевой интерфейс так же, как интерфейс TAP. С практической точки зрения интерфейс TUN - это эмуляция интерфейса уровня 3 . То есть это устройство эмуляции сетевого уровня, которое может туннелировать пакеты данных различной природы, будь то необработанные TCP, UDP, SCTP или инкапсулированные пакеты, такие как PPP, PPTP, AH / IPSEC, что угодно. С другой стороны, интерфейс TAP - это эмуляция интерфейса уровня 2 , то есть это устройство эмуляции канала передачи данных, которое может работать как сырой Ethernet, Arcnet, Token Ring и т. Д.
Это имеет разные практические последствия. Например, при проектировании брандмауэра, если вы хотите создать внутреннюю сеть с NAT и немаршрутизируемые адреса, вы должны использовать интерфейсы TUN для создания моста фильтрации. Если у вас есть набор общедоступных IP-адресов, которые вы можете назначить внутренним хостам, но при этом все же хотите защищать весь трафик брандмауэром, вы должны использовать интерфейсы TAP для эмуляции моста Ethernet, по которому фильтруются пакеты данных. Это, между прочим, является основой того, что называют «прозрачным межсетевым экраном».