Магазин / аукцион / FPR / donate / услуги / RSS / распечатать / вход 
Мой мир
Вконтакте
Одноклассники
Google+

[11 февраля 2017 | 14 февраля 2017 | 15 февраля 2017]

Сisco проброс группы FTP портов для FileZilla Server

Кратко объясню суть проблемы. Для функционирования FTP протокола достаточно открыть порт 21/TCP на вход и порт 20/TCP на выход. Но этого достаточно для работы FTP в активном режиме. Для корректной работы стека FTP небходимо обеспечить функционирование FTP как в активном, так и в пассивном режиме. О разнице этих режимов написано много информации, дабы не перегружать пост я напишу только то, что для работы пассивного режима необходимо дополнительно пробросить порты 49152-65534/TCP. Если бы FTP-сервер «смотрел» прямо в интернет, то проблем бы никаких небыло, но часто FTP-сервер может находиться за роутером, а в небольших компаниях не только за роутером, но ещё и за NAT-ом.

Хочу напомнить, что FTP был создан в 1971 году, до того как появился стек TCP/IP. В последствии FTP был переписан для работы над стеком TCP/IP.

Теперь поближе к сути вопроса. Для того, чтобы Filezilla Server корректно обрабатывал пассивный режим, необходимо пробросить большой диапазон портов с интерфейса шлюза в сторону сервера, находящегося за роутером с NAT. На некоторых бытовых роутерах данная задача реализуется всего парой строчек в настройках web-интерфейса роутера.

D-Link проброс группы портов.
Проброс группы портов на новом интерфейсе D-Link

D-Link проброс группы портов.
Проброс группы портов на старом интерфейсе D-Link

Но, что делать администратору, который работает с профессиональным оборудованием типа CISCO? Почему-то некоторые начинающие администраторы Cisco считают, что проброс группы портов можно реализовать только соответствием внутренний порт к внешнему порту. Например, вот так:

border# conf t
border(config)# ip nat inside source static tcp 192.168.30.3 20 interface fastethernet0/0 20
border(config)# ip nat inside source static tcp 192.168.30.3 21 interface fastethernet0/0 21

Если пытаться таким образом пробросить порядка ста портов, что вполне достаточно для корректной работы пассивного режима работы FTP, то данный подход будет довольно удручащим. Как минимум при огромной таблице подобных ретрансляций процессор роутера будет обрабатывать все правила пока не доберйтся до нужной строчки. В худшем же случае подобный подход просто съест всю память выделенную под настройки. Одна подобная строчка занимает порядка 80 байт. Соответственно сотня строк выльется в 8 килобайт. А если таким образом попытаться пробросить все 16382 порта, то это займёт почти полтора мегабайта памяти. То есть использовать данный подход для проброса большой группы портов не желательно. В некоторых случаях — это даже не возможно в силу технологических ограничений.

Существует ещё два метода пробросить порты оптом. Один из них с использованием routemap, а другой — через ACL.

Проброс портов через ACL осуществляется в три этапа.

В результате, для проброса сотни портов для FTP будет выглядеть следующим образом:

border# conf t
border(config)# ip access-list extended FTPRULE
border(config-std-nacl)# permit tcp any any range ftp-data ftp
border(config-std-nacl)# permit tcp any any range 50000 50100
border(config-std-nacl)# exit
border(config)# ip nat pool FTPSRV 192.168.30.3 192.168.30.3 netmask 255.255.255.0 type rotary
border(config)# ip nat inside destination list FTPRULE pool FTPSRV

Не забывайте, что сам сервер должен знать какими портами он может распоряжаться.

Порты для работы FTP-сервера в пассивном режиме.
Порты для работы FTP-сервера в пассивном режиме.

На самом деле, есть масса примеров в которых необходимо прокинуть группу портов. Например, всеми любимые торрент-клиенты. У торрент-клиентов есть обширная область портов которые они хотят видеть снаружи. Даже IP-телефония может потребовать пробросить группу портов.

Надеюсь, что данный пост поможет понять, что Cisco довольно гибкий инструмент, но он предназначен для решения задач корпоративного значения, а не для реализации костылей, которые используются в маленьких компаниях.

• Перейти в архив


Комментарии

Включите JavaScript для комментирования.


Сообщайте нам о замеченных ошибках на: web@orcinus.ru. Все пожелания и советы будут учтены при дальнейшем проектировании сайта... Мы готовы сотрудничать со всеми желающими. Мнение авторов может не совпадать с точкой зрения редакции сайта www.orcinus.ru. В некоторых случаях, мнение автора может не совпадать с мнением автора! Phone: +7-902-924-70-49.

Рейтинг@Mail.ru LiveInternet Rambler's Top100 Яндекс.Метрика