Часть 17: Tun Tap интерфейсы - github2wiki/SPBSUT_KURS GitHub Wiki
Tun Tap интерфейсы
Что такое Tun/Tap интерфейс
Интерфейсы Tun / Tap - это программные интерфейсы, что означает, что они существуют только в ядре и, в отличие от обычных сетевых интерфейсов, у них нет физического аппаратного компонента (нет физического провода, связанного с ними).
Принцип работы
Вы можете представить интерфейс tun / tap как обычный сетевой интерфейс, который, когда ядро решает, что наступил момент отправить данные «на провод», вместо этого отправляет данные в некоторую программу пользовательского пространства, которая привязана к интерфейсу. Когда программа присоединяется к интерфейсу tun / tap, она получает специальный файловый дескриптор
/dev/tun(tap)X
чтение которого дает ему данные, которые передает интерфейс. Аналогичным образом, программа может записать этот специальный дескриптор, и данные появятся в качестве входа в интерфейс tun / tap. Для ядра это выглядит так, что интерфейс tun / tap получает данные «от провода».
Интерфейс может быть временным, что означает, что он создан, используется и уничтожается одной и той же программой; когда программа завершается, даже если она явно не уничтожает интерфейс, интерфейсы перестают существовать. Другой вариант - сделать интерфейс постоянным; в этом случае он создается с использованием специальной утилиты (например, tunctl), а затем к ней могут присоединяться обычные программы; когда они это делают, они должны подключаться с использованием того же типа (tun или tap), который использовался для первоначального создания интерфейса, иначе они не смогут подключаться.
Разница между tap и tun
Разница между интерфейсом tap и интерфейсом tun заключается в том, что интерфейс TAP эмулирует Ethernet устройство и работает на канальном уровне модели OSI, оперируя кадрами Ethernet, в то время как работает на сетевом уровне модели OSI и использует необработанные IP-пакеты (никакие заголовки Ethernet не добавляются ядром ). Независимо от того, какой интерфейс функционирует, например, как интерфейс туннеля или как интерфейс перехода, указан с флагом при создании интерфейса.
Что нам это даёт?
Как только интерфейс tun / tap создан, его можно использовать так же, как любой другой интерфейс, что означает, что могут быть назначены IP-адреса, его трафик может быть проанализирован, могут быть созданы правила брандмауэра, могут быть установлены маршруты и т. Д.