У меня есть хост, на котором я переписываю saddr и daddr IP-пакетов, приходящих на него, это делается программой, использующей libnetfilter_queue. В основном это действует как прокси. Например, пакет приходит от 10.0.0.2, предназначенного для этого хоста (IP- хоста), мы переписываем этот пакет, чтобы прийти с IP- хоста, например. google.com. Я хочу использовать conntrack, чтобы пометить ответный пакет google.com → IP- хост, чтобы перейти в ту же очередь, которую нужно переписать, и отправить обратно на 10.0.0.2.
Я использую два правила PREROUTING:
iptables -tmangle -A PREROUTING -p tcp -s 10.0.0.2 -j CONNMARK --set-mark 0x10
iptables -tmangle -A PREROUTING -m connmark --mark 0x10 -j NFQUEUE
Но ответные пакеты не имеют этой метки, и я вижу только пакет 10.0.0.2 → IP- хост в выходных данных программы conntrack.
Вопрос в том, можно ли так поступить? Или я не понимаю, что делает CONNMARK? Мне кажется, он должен установить эту отметку на всем, что связано с соединением, включая ответные пакеты.