Использование ebtables для перезаписи MAC-адреса до и после моста
У меня есть сервер с двумя сетевыми интерфейсами, которые соединены мостом (назовем этот сервер №1).
Я дал входящему порту тот же MAC-адрес, что и другое устройство (сервер № 2) в сети, и разместил сервер № 2 за исходящим портом моста. Используя этот метод, я хотел, чтобы сервер № 1 получал трафик, предназначенный для сервера № 2, анализировал его, а затем переправлял его на сервер № 2 через мост.
Когда я сначала попытался отправить трафик на IP-адрес сервера # 2, я обнаружил, что пакеты останавливаются на входящем порте на сервере #1. Я предполагаю, потому что MAC-адрес совпадает.
В этом случае MAC-адрес входящего порта на сервере № 1 (и сервере № 2) составляет 00:30:36:cd:2a:c2. IP сервера № 2 - 192.168.10.24.
Чтобы позволить пакетам проходить к мосту, я использовал следующие таблицы ebtable, чтобы изменить MAC-адрес пакетов, чтобы они больше не соответствовали:
-A PREROUTING -p IPv4 -i eth0 --ip-dst 192.168.10.24 -j dnat --to-dst 00:30:36:cd:2a:c3 --dnat-target ACCEPT
-A PREROUTING -p ARP -i eth0 --arp-ip-dst 192.168.10.24 -j dnat --to-dst 00:30:36:cd:2a:c3 --dnat-target ACCEPT
После этого я смог увидеть, как пакеты передаются на исходящую сторону моста и принимаются сервером №2, однако, очевидно, что они имели неправильный MAC-адрес назначения. Чтобы попытаться решить эту проблему, я добавил новые правила для исходящего порта с правильным MAC-адресом:
-A PREROUTING -p IPv4 -i eth1 --ip-dst 192.168.10.24 -j dnat --to-dst 00:30:36:cd:2a:c2 --dnat-target ACCEPT
-A PREROUTING -p ARP -i eth1 --arp-ip-dst 192.168.10.24 -j dnat --to-dst 00:30:36:cd:2a:c2 --dnat-target ACCEPT
Но это не имело никакого эффекта - пакеты, полученные сервером # 2, все еще адресованы: c3.
Ясно, что это необычное использование ebtables, но я чувствую, что оно должно работать. Кто-нибудь знает о проблеме с методом, который я использую, или, возможно, предложить альтернативу для достижения того же результата?