У меня nat и маршрутизация пакетов работают нормально, но я бы хотел перенаправить все порты, кроме SSH, на статический ip(192.168.0.3)
Какой будет правильный синтаксис iptables для этого?
Так как правила iptables выполняются по порядку (первое соответствие применяется, следующие правила даже не проверяются), вы можете сделать это следующим образом:
iptables -t nat -A PREROUTING -i eth0 -d 192.168.0.2 -j DNAT --to 192.168.0.3
iptables -t nat -A PREROUTING -i eth0 -d 192.168.0.2 -j DNAT --to 192.168.0.3
iptables -A FORWARD -i eth0 -d 192.168.0.2 --dport 22 -j REJECT
iptables -A FORWARD -i eth0 -d 192.168.0.2 -j ACCEPT
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
предполагая, что компьютер, на котором вы это делаете, имеет IP-адрес 192.168.0.2, в противном случае измените его соответствующим образом. Последнее правило необходимо для обеспечения связи компьютера с IP-адресом 192.168.0.3.