Linux, bridge и iptables
Aug. 18th, 2011 09:24 amЯ с ваших линуксов фигею.
Коллега создал бутерброд с несколькими KVM'ами. Внутрь каждого KVM идёт tap, который снаружи входит в bridge. Нормальная себе конфигурация, у нас в бою такие работают.
Дальше нужно рисовать бы, но облом. В общем, KVM1 выходит наружу через br0 хоста и имеет также внутренний интерфейс, который через xbm-br0 хоста подключается к KVM2.
К br0 подключен eth0 - единственный во всём этом зоопарке реальный физический, за ним мир. На br0 навешен маскарад 10-й сетки.
Пинги мира с KVM1 проходят без проблем, src IP меняется.
Пинги мира с KVM2 уходят без NAT (src IP остаётся 10.*)
Облизали правила iptables, прыгали между MASQUERADE и SNAT - ничего не нашли. NAT этот пакет тупо не видит.
Облизали таблицу раутинга - ничего не нашли.
Подключили Самого Опытного Коллегу. Тот сказал, что выход из бриджа может идти напрямую на L2 вместо L3 и тогда nat/POSTROUTING не работает, что это известные грабли бриджа. Но тогда бы и с KVM1 не работало. А в чём разница, спрашиваем? Афигегознаетъ.
Вечером коллега - автор конфигурации приходит офигевший. Перенёс, говорит, KVM2 домой, прокинул путь с местного бриджа туда туннелем - всё работает.
Получается, пакет, который пробежал только что через систему и ушёл наружу (через tap в KVM1), причём модулями NAT не замеченный, оставил какой-то след в ядре, который приводил к тому, что когда этот пакет снова входил в ядро уже через другой входной интерфейс, NAT его игнорировал несмотря на то, что не имел никакого отношения к первому проходу.
Коллега создал бутерброд с несколькими KVM'ами. Внутрь каждого KVM идёт tap, который снаружи входит в bridge. Нормальная себе конфигурация, у нас в бою такие работают.
Дальше нужно рисовать бы, но облом. В общем, KVM1 выходит наружу через br0 хоста и имеет также внутренний интерфейс, который через xbm-br0 хоста подключается к KVM2.
К br0 подключен eth0 - единственный во всём этом зоопарке реальный физический, за ним мир. На br0 навешен маскарад 10-й сетки.
Пинги мира с KVM1 проходят без проблем, src IP меняется.
Пинги мира с KVM2 уходят без NAT (src IP остаётся 10.*)
Облизали правила iptables, прыгали между MASQUERADE и SNAT - ничего не нашли. NAT этот пакет тупо не видит.
Облизали таблицу раутинга - ничего не нашли.
Подключили Самого Опытного Коллегу. Тот сказал, что выход из бриджа может идти напрямую на L2 вместо L3 и тогда nat/POSTROUTING не работает, что это известные грабли бриджа. Но тогда бы и с KVM1 не работало. А в чём разница, спрашиваем? Афигегознаетъ.
Вечером коллега - автор конфигурации приходит офигевший. Перенёс, говорит, KVM2 домой, прокинул путь с местного бриджа туда туннелем - всё работает.
Получается, пакет, который пробежал только что через систему и ушёл наружу (через tap в KVM1), причём модулями NAT не замеченный, оставил какой-то след в ядре, который приводил к тому, что когда этот пакет снова входил в ядро уже через другой входной интерфейс, NAT его игнорировал несмотря на то, что не имел никакого отношения к первому проходу.
no subject
Date: 2011-08-18 01:43 pm (UTC)