tun / tap работает с входящим или исходящим пакетом?

Когда мы создаем виртуальный интерфейс tun, мы используем read и write для чтения и записывать пакеты из / в сетевой стек. Мой вопрос: когда мы используем .read , мы фактически читаем исходящие пакеты (пакеты, которые создаются машинными приложениями для отправки в другую сеть) или входящие пакеты ( пакетов, которые поступают на машину)?

0
задан 7 July 2019 в 15:34
1 ответ

Интерфейс tun / tap способ передачи пакетов между вашим приложением и сетевым стеком ядра.

Создайте интерфейс ответвления:

ip tuntap add dev tun101 mode tun
ip link set up dev tun101
ip a add 192.0.2.1/24 dev tun101

Давайте пингуем некоторый адрес из подсети, назначенной интерфейсу tun101.

ping 192.0.2.2

Что случилось?

  • Пинг создает socket, формирует пакет эхо-запроса icmp и записывает его в сокет.
  • Ядро принимает пакеты эхо-запроса icmp от ping через сокет, определяет маршрут для этих пакетов и передает пакет в драйвер tuntap.
  • ] Для сетевого стека эти пакеты исходят локально и исходят вовне.
  • Драйвер tuntap принимает эхо-запрос icmp p ackets и отправляет его в ваше приложение.
  • Ваше приложение вызывает функцию read и получает пакет эхо-запроса icmp в соответствующем буфере памяти.
  • Ваше приложение создает пакеты эхо-ответа icmp для полученных запросов .
  • Ваше приложение пишет эти ответы с помощью функции write .
  • Драйвер tuntap принимает пакеты от вашего приложения и передает их дальше в сетевой стек.
  • Для сетевого стека ядра это пакеты поступают извне.
  • Стек ядра определяет эти пакеты как адресованные для самого хоста и отправляет их в сокет, который был создан в результате проверки связи.
  • Проверка связи считывает данные из сокета, вычисляет задержку и отображает полученный ответ.

Операция чтения в вашем приложении означает чтение пакетов, которые были отправлены в соответствующий интерфейс tun сетевым стеком ядра. Операция записи означает отправку пакетов из вашего приложения в сетевой стек ядра.

0
ответ дан 23 November 2019 в 23:03

Теги

Похожие вопросы