AlKov Posted December 10, 2021 · Report post Поставлена задача - разделить трафик между двумя аплинками. Разделить статически - один IP - "туда", другой - "сюда". На машине (CentOS 6.10) NAT для абонентских PPPoE, прилетающих с отдельных NAS серверов. Маршруты NAS-ы отдают серверу rip-ом. Списки IP для каждого аплинка находятся в таблицах ipset - isp1 и isp2 соответственно. Для решения задачи использую материал вот этой статьи. Все вроде понятно, но.. Смущает наличие NAT. В статье рекомендуется использовать CONNMARK, т.е. маркировать новые соединения. Подходит ли это для моего случая? Может здесь необходимо использовать маркировку пакетов (MARK)? Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
NiTr0 Posted December 10, 2021 · Report post mark - для routing table. connmark - для маркировки соединений. чтобы потом матчить пакеты и вешать на них mark, либо --restore-mark для восстановления метки пакета из метки соединения, либо еще для чего-то подобного. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
AlKov Posted December 10, 2021 · Report post В 10.12.2021 в 17:46, NiTr0 сказал: mark - для routing table. Ну это, вроде как, и есть моя задача - направить трафик от IP, находящихся в таблицах ipset, в соответствующие шлюзы. В 10.12.2021 в 17:46, NiTr0 сказал: connmark - для маркировки соединений. Т.е. для входящих соединений, предназначенных собственно маршрутизатору (INPUT в терминологии iptables)? Если так, то мне это и не нужно, т.к. основная задача - это обработка транзитного трафика. Или я ошибаюсь? И еще - нужна ли вообще, в моем случае, маркировка пакетов/соединений? Может это все и без нее можно сделать, средствами iproute2 ? Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
[anp/hsw] Posted December 10, 2021 · Report post В 10.12.2021 в 23:07, AlKov сказал: И еще - нужна ли вообще, в моем случае, маркировка пакетов/соединений? Вы можете ограничиться SNAT с разными --to-source для разных клиентских IP. Не забудьте при этом соответствующее ip rule from xxx, чтобы трафик уходил в нужный интерфейс. Маркировка нужна только, если вы хотите чего-то странного или очень сложного, а также если хотите перенаправить трафик в другой интерфейс без NAT. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
AlKov Posted December 10, 2021 · Report post В 10.12.2021 в 21:53, [anp/hsw] сказал: Вы можете ограничиться SNAT с разными --to-source для разных клиентских IP. Не забудьте при этом соответствующее ip rule from xxx, чтобы трафик уходил в нужный интерфейс. А вот этого и не получается. У меня SNAT в диапазон (--persistent). В 10.12.2021 в 21:53, [anp/hsw] сказал: Маркировка нужна только, если вы хотите чего-то странного Вот это, наверное, оно и есть.. Мне необходимо одни IP отправлять в один аплинк, другие - в другой. А подсеть одна - 172.16.0.0/12 Для этого я их раскидываю в разные таблицы ipset. С ip rule это, наверное, без меток не проканает.. Значит все-таки надо метить пакетики MARK-ом.. А вот CONNMARK, похоже, не нужен. Вот так, например, метить iptables -t mangle -A PREROUTING -m set --match-set isp1 src -j MARK --set-xmark 0xa/0xffffffff iptables -t mangle -A PREROUTING -m set --match-set isp2 src -j MARK --set-xmark 0xb/0xffffffff А вот так маршрутизировать - (ip rule) fwmark 10 table isp1 fwmark 11 table isp2 to 192.168.0.0/16 table main to 10.0.0.0/8 table main Вообщем, будем попробовать.. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
AlKov Posted December 13, 2021 · Report post ДокладАю - все взлетело успешно: мальчики - налево, девочки - направо. По "технологии" из предыдущего поста. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
NiTr0 Posted December 14, 2021 · Report post В 10.12.2021 в 18:07, AlKov сказал: Т.е. для входящих соединений, предназначенных собственно маршрутизатору (INPUT в терминологии iptables)? для любых соединений. в т.ч. транзитных. ессно, если они попадают в conntrack таблицу. правило срабатывает на один пакет - и все пакеты сессии имеют connmark метку. вот только сделать из нее обычную метку, которую увидит iproute2, надо будет отдельным правилом. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...