Есть два физических интерфейса, например, eth0 и eth1. Юзер подключается к eth0, я ему раздаю ip, включаю маскарадинг на eth1, и он из-под NAT выходит в инет через этот eth1. Тут вопросов нет.
Я хочу этот трафик обрабатывать, протаскивать все пакеты через свой процесс и иногда кое-что в этих пакетах менять. Как это сделать? Попробовал сделать так: написал софтину, которая поднимает два tap интерфейса, tap0 и tap1, внутри пока что просто читаю из tap0 и пишу в tap1 и наоборот (дальше надо будет разбирать и модифицировать). Мне надо заставить пакеты ходить так: eth0 - (tap0 - tap1) - eth1.
Сделал:
ifconfig tap0 192.168.100.1
ifconfig tap1 192.168.200.1
ip route add <адрес внешнего сервера> via 192.168.100.1
iptables -t nat -A POSTROUTING -o tap0 -j MASQUERADE
Теперь пакеты идут через мой tap0, но во внешнюю сеть они не уходят. Точнее, идут только ARP запросы, ответов нет, на этом все заканчивается. Как мне заставить пакеты идти с tap1 в eth1?
Может быть, есть более адекватный способ эту задачу решить, но еще раз, внимание! Мне надо не просто пробросить трафик, а иметь возможность делать некую произвольную модификацию пакетов, т.е. только лишь средствами iptables тут не обойтись. Или обойтись? В iptables не силен..