Привет всем! У меня возникла проблема с манипуляциями, маршрутизацией и простыми очередями. Я пытаюсь маршрутизировать трафик на основе целевого порта через два интерфейса, назову их int1 и int2, то есть 80, 443, voip – по одному интерфейсу, и 25, 110, 143 и т.д. – по другому интерфейсу. Для этого я меткую соединения и пакеты для маршрутизации из различных источников в моей сети в соответствии с исходным IP-адресом и целевым портом, например, веб-трафик от клиента X сначала помечается X_web_conn и проходит через него, затем пакет помечается X_web – до тех пор, пока метка соединения совпадает – и затем проходит через него. Затем я применяю метку маршрутизации X_web. Все это происходит в цепочке prerouting. Соединения приходят через 256k diginet линию под названием farsync1. У меня настроен маршрут для маршрутизации трафика на основе метки маршрутизации X_web через int1. Также у меня настроены простые очереди для ограничения скорости передачи данных через 256k линию, поскольку я не хочу, чтобы порт 25 делал веб-серфинг невозможным и т.д. 256k линия настроена как родительская, а затем несколько дочерних правил ограничивают поток трафика и присваивают приоритет различным портам.
Теперь к проблеме. Если passthrough включен на правиле метки пакета, трафик маршрутизируется туда, куда он должен, но трафик проходит через простые очереди без ограничений и насыщает 256k линию. Если я отключаю passthrough, простые очереди работают прекрасно, трафик ограничивается и ставится в очередь, но ВСЕ трафик маршрутизируется по маршруту по умолчанию, а не разделяется в соответствии с моей конфигурацией маршрутизации.
Итак, мои вопросы — я не смог найти ответы, изучая форумы, wiki, руководства и т.д. Почему метка маршрутизации, похоже, переопределяет метку пакета? Могут ли они оба быть на пакете одновременно? В этом случае как использовать простые очереди и маршрутизировать трафик одновременно?
Любая помощь или предложения будут очень приветствоваться.
Заранее спасибо.
Выдержки из моих правил mangle (я показываю только правила порта 80 - все остальные правила порта идентичны):
2 ;;; Mark CP Connections as cp_conn chain=prerouting src-address-list=cathedral action=mark-connection new-connection-mark=cp_conn passthrough=yes
7 ;;; Mark CP :80 packets as client_web chain=prerouting protocol=tcp dst-port=80 connection-mark=cp_conn action=mark-packet new-packet-mark=client_web passthrough=yes
13 ;;; Mark CP web traffic as cp_web chain=prerouting packet-mark=client_web connection-mark=cp_conn action=mark-routing new-routing-mark=cp_web passthrough=no
Выдержки из IP → Routes [admin@MK] ip route> print routing-mark=cp_web 1 A S ;;; Route CP_WEB via SAIX 0.0.0.0/0 r 165.146.0.1 1 saix
Теперь к проблеме. Если passthrough включен на правиле метки пакета, трафик маршрутизируется туда, куда он должен, но трафик проходит через простые очереди без ограничений и насыщает 256k линию. Если я отключаю passthrough, простые очереди работают прекрасно, трафик ограничивается и ставится в очередь, но ВСЕ трафик маршрутизируется по маршруту по умолчанию, а не разделяется в соответствии с моей конфигурацией маршрутизации.
Итак, мои вопросы — я не смог найти ответы, изучая форумы, wiki, руководства и т.д. Почему метка маршрутизации, похоже, переопределяет метку пакета? Могут ли они оба быть на пакете одновременно? В этом случае как использовать простые очереди и маршрутизировать трафик одновременно?
Любая помощь или предложения будут очень приветствоваться.
Заранее спасибо.
Выдержки из моих правил mangle (я показываю только правила порта 80 - все остальные правила порта идентичны):
2 ;;; Mark CP Connections as cp_conn chain=prerouting src-address-list=cathedral action=mark-connection new-connection-mark=cp_conn passthrough=yes
7 ;;; Mark CP :80 packets as client_web chain=prerouting protocol=tcp dst-port=80 connection-mark=cp_conn action=mark-packet new-packet-mark=client_web passthrough=yes
13 ;;; Mark CP web traffic as cp_web chain=prerouting packet-mark=client_web connection-mark=cp_conn action=mark-routing new-routing-mark=cp_web passthrough=no
Выдержки из IP → Routes [admin@MK] ip route> print routing-mark=cp_web 1 A S ;;; Route CP_WEB via SAIX 0.0.0.0/0 r 165.146.0.1 1 saix
