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

Маршрутизация уровня 3 на основе содержимого пакета HTTP

Я управляю HTTP прокси и хотите направлять трафик на различный Слой 3 TUNs на основе содержание из HTTP пакеты (например, Заголовки HTTP).

я использую BSD и Linux сделать это, но похоже, что ни один из них не способен Слой 7 классификации при принятии решений о маршрутизации (по крайней мере, без написания собственных обширных патчей для ядра).

Итак, можно ли сделать Слой 3 решения по маршрутизации исходя из содержания HTTP пакеты в Linux или BSD?

А если нет, сделайте любое Unix исходя из операционные системы или распределения есть такая возможность?

Проблема, которую я вижу здесь, заключается в том, что вам нужно принять TCP-соединение, прежде чем вы увидите HTTP-запрос. Таким образом, даже если бы система могла использовать данные уровня приложения, у нее не было бы этих данных в то время, когда ей нужно решить, куда должно идти соединение.

Я не думаю, что есть большой выбор, кроме как иметь «обратный прокси», который завершает TCP-соединение от клиента, а затем устанавливает прямое TCP-соединение с исходным сервером.

Для BSD я бы посмотрел relayd(8) - он родной для OpenBSD, но я считаю, что у FreeBSD тоже есть порт. Он довольно мощный и может делать больше, чем несколько вещей (например, прокси, балансировщик нагрузки, шлюз приложений), включая то, что вы запрашиваете.

Прочтите справочные страницы, особенно разделы «Правила фильтрации» и «Протоколы»:

Если у вас есть проблемы, обязательно зайдите в список рассылки openbsd 'misc'. Сообщество быстрое, а автор часто доступен.


relayd тесно связан с pf фильтр пакетов, с помощью которого он может совместно создавать правила для уровней 3 и 7