AlKov Posted December 10, 2021 Posted December 10, 2021 Поставлена задача - разделить трафик между двумя аплинками. Разделить статически - один IP - "туда", другой - "сюда". На машине (CentOS 6.10) NAT для абонентских PPPoE, прилетающих с отдельных NAS серверов. Маршруты NAS-ы отдают серверу rip-ом. Списки IP для каждого аплинка находятся в таблицах ipset - isp1 и isp2 соответственно. Для решения задачи использую материал вот этой статьи. Все вроде понятно, но.. Смущает наличие NAT. В статье рекомендуется использовать CONNMARK, т.е. маркировать новые соединения. Подходит ли это для моего случая? Может здесь необходимо использовать маркировку пакетов (MARK)? Вставить ник Quote
NiTr0 Posted December 10, 2021 Posted December 10, 2021 mark - для routing table. connmark - для маркировки соединений. чтобы потом матчить пакеты и вешать на них mark, либо --restore-mark для восстановления метки пакета из метки соединения, либо еще для чего-то подобного. Вставить ник Quote
AlKov Posted December 10, 2021 Author Posted December 10, 2021 В 10.12.2021 в 17:46, NiTr0 сказал: mark - для routing table. Ну это, вроде как, и есть моя задача - направить трафик от IP, находящихся в таблицах ipset, в соответствующие шлюзы. В 10.12.2021 в 17:46, NiTr0 сказал: connmark - для маркировки соединений. Т.е. для входящих соединений, предназначенных собственно маршрутизатору (INPUT в терминологии iptables)? Если так, то мне это и не нужно, т.к. основная задача - это обработка транзитного трафика. Или я ошибаюсь? И еще - нужна ли вообще, в моем случае, маркировка пакетов/соединений? Может это все и без нее можно сделать, средствами iproute2 ? Вставить ник Quote
[anp/hsw] Posted December 10, 2021 Posted December 10, 2021 В 10.12.2021 в 23:07, AlKov сказал: И еще - нужна ли вообще, в моем случае, маркировка пакетов/соединений? Вы можете ограничиться SNAT с разными --to-source для разных клиентских IP. Не забудьте при этом соответствующее ip rule from xxx, чтобы трафик уходил в нужный интерфейс. Маркировка нужна только, если вы хотите чего-то странного или очень сложного, а также если хотите перенаправить трафик в другой интерфейс без NAT. Вставить ник Quote
AlKov Posted December 10, 2021 Author Posted December 10, 2021 В 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
AlKov Posted December 13, 2021 Author Posted December 13, 2021 ДокладАю - все взлетело успешно: мальчики - налево, девочки - направо. По "технологии" из предыдущего поста. Вставить ник Quote
NiTr0 Posted December 14, 2021 Posted December 14, 2021 В 10.12.2021 в 18:07, AlKov сказал: Т.е. для входящих соединений, предназначенных собственно маршрутизатору (INPUT в терминологии iptables)? для любых соединений. в т.ч. транзитных. ессно, если они попадают в conntrack таблицу. правило срабатывает на один пакет - и все пакеты сессии имеют connmark метку. вот только сделать из нее обычную метку, которую увидит iproute2, надо будет отдельным правилом. Вставить ник Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.