Существует множество руководств по установке NAT в Linux с помощью iptables. Они содержат строку
iptables --table nat --append POSTROUTING --out-interface $UPLINK --jump MASQUERADE
где UPLINK
это имя сетевого интерфейса, подключенного к Интернету. Я не вижу правила, которое переводит IP-пакеты в обратном направлении, а именно переводит глобальные IP-адреса в локальные. Должно получиться вот так.
iptables --table nat --append PREROUTING --in-interface $UPLINK $ARGS
Где включается обратное направление?