Как я всегда думал настройка NAT выполняется с помощью магической команды iptables:
/sbin/iptables -t nat -F POSTROUTING; /sbin/iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -d ! 192.168.0.0/24 -j SNAT --to-source xxx.xxx.xxx.xxx
Однако, ж вопреки моим ожиданиям инет на клиенте так и не заработал, причем не работал он весьма странным образом. ping до сайтов ходил, имена сайтов резолвились, curl загружал страничики, но на этом все и заканчивалось.
Ни firefox, ни icq, ни links никто не мог ничего открыть. Такие симтомы в моей практике встречались впервые. Все говорило о том что tcp/ip работал как то не так.
Запустив wireshark я убедился что, действительно, в сети наблюдается куча неправильных tcp/ip пакетов. Вопрос был почему???
Оказалось, что при MTU установленном в значение, меньшее 1500, некоторые провайдеры болкируют фрагментированные ICMP пакеты, и с сетью начинает происходить что то странное и не понятное. Мой провайдер был именно из таких.
Лечится это все двумя способами:
1. увеличить MTU на интерфейсе, смотрящев в интернет.
или
2. необходимое правило для iptables:
iptables -t mangle -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
Решение было подсмотренно Здесь