Я управляю 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