Проброс порта FTP

Приветствую всех.
Поднял на локальном компе тестовый vsftpd-сервер. Порт 20207 назначил. Из локальной сети, всё работает нормально. Но теперь необходимо, чтобы этот сервер был доступен извне. На шлюзе пытаюсь пробросить порт, не выходит.
Делаю так:
-A INPUT -d (внешний ip) -m state –state NEW -m tcp -p tcp –dport 20207 -j ACCEPT
-A PREROUTING -p tcp -m tcp -d (внешний ip) –dport 20207 -j DNAT –to-destination (внутренний ip):20207

Где у меня косяк?
Для протокола FTP недостаточно одного порта, ему нужно минимум два, поскольку в его рамках устанавливается два TCP-соединения – первое для управления (обычно это порт 22) и второе для данных. В “активном” режиме соединение для данных устанавливается от сервера к клиенту, в “пассивном” от клиента к серверу.

Если клиент находится за NAT (выходит из локальной сети в интернет), он в общем случае не может работать в активном режиме.
Для пассивного режима в конфигурации сервера обычно указывается не один порт, а диапазон портов для передачи данных. Если ваш сервер сам находится в локальной сети, то шлюз должен перенаправлять на сервер и порт для управления, и диапазон портов для данных. И разумеется, надо ещё разрешить форвардинг всего этого из интернета в локалку.

Это можно сделать примерно так:
iptables -t nat -A PREROUTING -i $WAN -p tcp --dport $PORT1 -j DNAT --to-destination $LOCALSERVER
iptables -t nat -A PREROUTING -i $WAN -p tcp --dport $PORTS2 -j DNAT --to-destination $LOCALSERVER
iptables -A FORWARD -i $WAN -p tcp -d $LOCALSERVER -j ACCEPT
где $WAN внешний интерфейс, $LOCALSERVER внутренний адрес сервера, $PORT1 порт для управления, $PORTS2 диапазон портов для данных.
Подразумевается, что форвардинг ответных пакетов соединений на шлюзе уже включён.

P.S.
А цепочка INPUT тут совсем ни при чём – она работает только с пакетами, предназначенными самому шлюзу.
Подробнее схему прохождения пакетами цепочек см. в Iptables Tutorial.
По-русски: http://www.opennet.ru/docs/RUS/iptables … INGGENERAL
Большое спасибо за информацию! Завтра займусь. Отпишусь подробней.
 
Зарегистрироваться или войдите чтобы оставить сообщение.