Назад | Перейти на главную страницу

Как я могу зарегистрировать содержимое пакета OpenVPN?

Я разрабатываю инструмент разработчика, который будет анализировать и отлаживать произвольные сетевые соединения, но я хочу предоставить его как услугу, а не как программное обеспечение для локальной установки.

В идеале я хотел бы сохранять все входящие и исходящие пакеты для каждого пользователя в базе данных.

Например:

  1. Разработчик подключает машину, на которой работает его программное обеспечение, к VPN.
  2. Затем разработчик запускает свое программное обеспечение, которое может подключаться к произвольным хостам.
  3. Трафик направляется через VPN, где и регистрируется.
  4. Затем разработчик может получить доступ к журналам этого сеанса.

Мне сложно понять, как решить третий шаг.

Я читал руководство, искал в Интернете и искал сбой сервера, но подозреваю, что где-то упускаю часть головоломки. Нужен ли мне дополнительный инструмент для обнюхивания виртуального интерфейса или OpenVPN может как-то с этим справиться?

OpenVPN сам по себе ничего не обнюхивает, но вы можете использовать стандартные инструменты сниффинга.

Если вы настроите OpenVPN для работы в туннельном режиме, то соединение между хостом приложения и вашим сервером появится в виртуальном интерфейсе (с именем вроде tun0 на unix-подобных хостах) с собственным IP-адресом на каждой стороне. С точки зрения приложения ваш сервер будет выглядеть так, как если бы он физически находился в той же сети, что и хост приложения, и действовал как маршрутизатор, поэтому любой инструмент сниффинга, который работает с обычным сетевым интерфейсом, для получения необходимых вам данных Сделаю.

Я бы сделал примерно следующее

  • Попросите пользователя подключиться к VPN (конечно, OpenVPN должен быть настроен для маршрутизации все трафик через VPN-сервер).
  • На стороне сервера настройте ловушку, которая регистрирует время соединения, пользователя и IP-адрес, который он использует.
  • (необязательно) на стороне сервера настройте еще один перехватчик отключения, который регистрирует событие.

Между тем, запустите программу сниффинга на виртуальном устройстве VPN, которая непрерывно захватывает пакет из интерфейса, просматривает удаленный адрес, сопоставляет его с текущим списком пользователей и сохраняет его в базе данных. Вероятно, это будет комбинация стандартного инструмента сниффинга для извлечения пакета из сетевого интерфейса и специального инструмента, который анализирует пакет, извлекает необходимую информацию и сохраняет ее где-нибудь.

Вам нужно будет прослушивать трафик, когда он покидает интерфейс OpenVPN TUN или TAP на вашем компьютере, который действует как конечная точка VPN. Здесь нет никакой магии (или, по крайней мере, ничего, о чем я могу думать). Интерфейс - это интерфейс, это интерфейс.

OpenVPN не предоставляет встроенных функций для сниффинга пакетов, но существует множество специализированных инструментов для выполнения этой задачи, например tcpdump или tshark / wirehark.

На самом деле, как OpenVPN вписывается в общую картину?

У меня смутное ощущение, что вы где-то читали, что Linux поддерживает «виртуальные» сетевые интерфейсы, типы которых называются «TUN» и «TAP» (для интерфейсов в стиле IP-туннеля и Ethernet, соответственно), поэтому вы погуглили и выполнили поиск появился OpenVPN, который так же называет типы своих интерфейсов (потому что я верю, что он использует то же ядро ​​в Linux).

Я считаю, что на самом деле вы заботитесь о прямое управление этими виртуальными интерфейсами который позволяет вам создавать свои собственные сетевые интерфейсы, которые эффективно пропускают весь проходящий через них трафик через ваше пользовательское приложение.