Реально. Но есть особенности.
Я сейчас не могу вспомнить по какому принципу раздаются порты и как это соотносится с ftp протоколом, с пассивным и активным режимом. Поэтому отмечу где именно есть засады, но не скажу пошаговых инструкций.
Во первых надо освоить в роутере опции "port forwarding". Это для того, чтобы роутер знал какому именно ip адресу внутри, в какой порт передавать запросы приходящие снаружи в порт 21, например. Обычно номера портов делают одинаковыми, но можно пришедшее в 21 порт передавать в 80 порт для внутреннего компа... Потом только не запутаться бы.
Внутреннему компу придётся назначить постоянный ip адрес. По хорошему на роутере надо настроить какие именно ip адреса внутри постоянны, и заузить диапазон адресов выдаваемых по DHCP. Это двольно просто, см. мануал (в т.ч. раздел про DHCP configuration и раздел про LAN clients).
Тогда роутер будет знать в какой компьютер перенаправлять услышанные им внешние запросы к ftp.
Теперь сам vsftp.
Вот кусок конфига:
listen_port=21
pasv_address=74.125.67.100
pasv_enable=YES
pasv_max_port=45625
pasv_min_port=45623
74.125.67.100 это внешний адрес роутера. Именно по этому адресу снаружи виден сервер. См. справку по параметру pasv_address. Если параметр не прописать, то vsftp в заголовках отправляемых в ответ пакетов прописывает адрес локального компьютера, что приводит к несколько минутным у клиета паузам, когда он считывает каталоги сервера.
Но этот адрес обычно меняется. Зная язык Bash или подобный, возможно, что ещё и разрешив (что небезопасно) telnet в модеме, можно, написав скрипт, узнавать о смене адреса не позднее чем через одну-две минуты. Я этого не делал и готового скрипта не имею.
Кроме порта 21, на роутере надо дополнительно "прокинуть" диапазон портов от pasv_min_port до pasv_max_port. После первичного обмена через 21-й порт, vsftp будет осуществлять соединения через эти pasv порты. Он так устроен. В настройках роутера везде будет протокол только TCP.
После этого работает "как из пушки". Забыл только в пассивном или активном режиме. Попробуйте на клиенте оба режима, сразу станет понятно. По ходу нужен пассивный режим у клиента (туго соображаю сегодня
).
Для активного режима может понадобится пробрасывать порт 20/tcp. Смотря по возможностям роутера, но вряд ли возможности этого модема столь богаты, чтобы динамично и на автопилоте понимать что 20-й порт понадобился в связи с ftp через 21-й...
P.S. Программа wireshark в графике или tcpdump в консоли помогут увидеть через какие и адреса:порты идёт трафик. Заодно там будет куча другой информации, но при отладке бывает достаточно смотреть только на адреса и порты. Иногда помогает понять проблему, если вдруг вместо ожидаемых сочетаний видны другие числа.