Есть легаси система, которую я сопровождаю и до некоторой степени упорядочиваю. И есть потребность передать внутренний обмен (по loopback) на другой хост.


Для зеркалирования трафика можно использовать TEE как-то так:


iptables -t mangle -A POSTROUTING ${OPTIONS} -j TEE --gateway "${IP}"


Если сделать следующее правило и пинговать заданный адрес то на целевой машине появляются пакеты:


iptables -t mangle -A POSTROUTING -o eth0 -d 8.8.8.8 -j TEE --gateway 192.168.1.2


Но когда я пробую подставить в условия интерфейс lo то на целевой машине ничего не получаю (пинг на 127.0.0.1 виден в tcpdump на локальной машине и не виден на целевой):


iptables -t mangle -A POSTROUTING -o lo -j TEE --gateway 192.168.1.2


Пробовал на POST/PREROUTING, FORWARD, INPUT, OUTPUT. Это я что-то делаю не так и трафик локалхоста идёт другим путём или его принципиально невозможно зеркалировать?


Со следующим правилом пинг идти перестал, то есть трафик похоже идёт как в других случаях:


iptables -t mangle -A POSTROUTING -p icmp --icmp-type any -o lo -j DROP


В man iptables есть только одно упоминание loopback: «except loopback traffic, which involves both INPUT and OUTPUT chains».









 ,






URL записи