Туннелирование и IPSec

«Определение»: инкапсуляция трафика внутрь специального сетевого протокола

Задачи:

Простейшее решение: использовать прикладной уровень:

  1. Подключение и авторизация
    • Клиент                                           Сервер
      VPN-клиент ---> eth0: 5.6.7.8 ---> (Интернет) ---> eth0: 1.2.3.4 ---> VPN-сервер
  2. Создание виртуальных сетевых tun или tap интерфейсов и настройка их как обычных сетевых карт:
    • Клиент                                           Сервер
      VPN-клиент <--> eth0: 5.6.7.8 <--> (Интернет) <--> eth0: 1.2.3.4 <--> VPN-сервер
       |                                                                     |
      tun0: 192.168.10.2                                                    tun0: 192.168.10.1
  3. Обмен данными через туннель:
    • VPN-клиент <--> eth0: 5.6.7.8 <--> (Интернет) <--> eth0: 1.2.3.4 <--> VPN-сервер
       |                                                                     |
      tun0: 192.168.10.2 <-- (Пакет для 102.168.10.1)                 … <-- tun0: 192.168.10.1
      На всем протяжении пути от 5.6.7.8 до 1.2.3.4 пакет не меняется.
    • TCP over TCP ⇒ использование UDP
    • Паразитная нагрузка (поля транспортного и прикладного уровней)
    • Примеры: vtun, OpenVPN, …

Использовать сетевой уровень ( «IP over IP») :

Пример: настройка GRE-тоннеля