Нужно перед отправкой Ethernet пакета его перехватить и при наличии определенных условий модифицировать. Соответственно принятый модифицированный Ethernet пакет тоже нужно перехватить и модифицировать в обратном порядке. Под модификацией понимается любое изменение в Ethernet payload.
Ставить ловушки в prerouting и postrouting вроде как не имеет смысла. В prerouting, насколько я понимаю, пакет поступает уже после обработчика протокола L3. То есть пакет должен быть преобразован еще раньше, ибо в IP-заголовке могут быть неадекватные данные.
Вроде как приходит на ум как вариант, что для принимаемых пакетов можно написать и зарегистрировать собственный обработчик протокола L3.
А что делать с отправляемыми пакетами?

