Если не ошибаюсь, то правильно не "DNAT --to", а "DNAT --to-destination". Не уверен, что правильно отработает DNAT с портов 20:21 на порты 20:21. Вроде как это значит, что порт назначения пакета, пришедшего на 21 порт будет изменен либо на 20, лтбо на 21. Возможно стоит вместо одного правила для двух портов, написать отдельное правило для каждого.
PS: первое правило для INPUT можно убрать. Сначала обрабатывается цепочка PREROUTING таблицы nat, входящему пакету подменяется адрес назначения, затем пакет попадает в таблицу filter, где обрабатывается как транзитный, то есть в цепочке FORWARD.