iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
При пробрасывании пакетов из локальной сети, подменяет исходящий адрес пакета на адрес самого шлюза. Для удалённого хоста всё выглядит так, как будто сам шлюз отправил этот пакет.
Но ведь удалённый хост будет отвечать на адрес шлюза, то есть шлюз должен как-то понять что ответ от данного IP на данный port следует пробросить обратно именно на тот хост из локалки, который всё это начал. То есть, должно срабатывать что-то из цепочки PREROUTING, ведь ответный пакет от удалённого узла с точки зрения нашего шлюза будет входящим.
Но во всех мануалах сказано, что достаточно добавить описанное выше правило в POSTROUTING и netfilter автоматически начнёт пробрасывать и ответные пакеты на локальный хост.
Но эта «автоматическость» путает. Непонятно, куда ещё дополнительно добавилось какое правило (в PREROUTING?), чтобы входящий ответный пакет от удалённого хоста был проброшен именно на тот локальный хост, который послал из локалки запрос удалённому хосту?
Что произошло буквально, какие правила куда ещё добавились при исполнении вышеприведённого правила?
Перемещено leave из development