Есть легаси система, которую я сопровождаю и до некоторой степени упорядочиваю. И есть потребность передать внутренний обмен (по 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».