Дополнительный IP на loopback-е
Вечер добрый.
Прошу помощи всезнающего all.
Centos 6
Суть такова: для организации балансинга с DSR (direct server return) есть стенд из двух машин, для тестирования тонких моментов.
host A: eth0 10.0.0.1/24 выполняет роль директора/балансировщика
host B: eth0 10.0.0.2/24, lo:0 10.0.0.1/32 собственно, одна из нод кластера, куда, в зависимости от алгоритма распределения запросов будет пробрасываться пакет от балансера (host A).
На хосте B на lo повешен алиас lo:0 с айпишником балансера 10.0.0.1/32.
Собственно, стандартная схема, которую скорее всего многие уже реализовывали. Пакет приходящий на виртуальный айпишник балансера пропихивается дальше в ethernet с измененным мак-адресом. В качестве нового мака подставляется мак ноды, которая в свою очередь принимает фрейм.
В теории все должно работать, однако получается, так, что arp запросы от ноды B отдаются кому угодно, но только не хосту A. Пингуя адрес 10.0.0.2 с хоста А я получаю Destination host unreachable. На стороне B я вижу arp реквесты от А, но ответы не посылаются. Если сделать arping c любого другого адреса в пределах сегмента, то все отлично, есть реквест и ответ.
Проблема с ответами на не свой айпишник на ноде B вроде как вылечилась через правила в arptables:
arptables -A IN -d 10.0.0.1 -j DROP
arptables -A OUT -s 10.0.0.1 -j mangle --mangle-ip-s 10.0.0.2
Однако, как уже было отмечено выше, нода B перестала отвечать вообще на arp запросы от хоста А. Скорее всего я делаю что-то не так. Куда копать?
Айпишник на loopback (хост B) добавлен следуюшим образом:
ip addr add 10.0.0.1 dev lo
Т.е при добавлении еще одного айпишника на лупбэк и включения фильтрации по маку через arptables, машина вообще перестает отвечать на arp запросы хоста, чей айпишник на ней прописывается.