Привет, ребята! Хочу настроить MikroTik на стороне клиента. Клиент за MikroTik должен иметь возможность использовать FTP по TLS в активном режиме (TCP:21). Зашифрованный пассивный режим работает отлично, как и простой пассивный и простой активный режимы. Единственная проблема — зашифрованный активный режим. Насколько я понимаю, FTP-хелпер MikroTik (Firewall - Service Ports - ftp) не может читать содержимое пакетов из-за используемого шифрования и не может устанавливать соединения на основе информации из команд PORT/PASV. То есть, FTP-клиент может инициализировать TLS-сессию и начать общение с FTP-сервером, но при команде вывода списка директорий происходит таймаут. Вот лог клиента:
200 PROT command successful.
OPTS UTF8 ON
200 UTF8 OPTS ON
CWD /
250 CWD command successful. "/" — текущая директория.
Подключение установлено!
Получаем директорию
TYPE A
200 Type set to A.
MODE Z
200 Mode Z ok.
PORT 10,0,0,43,212,201
200 Port command successful.
MLSD
PORT не удался, пробуем PASV режим!
PASV
А вот лог FTP-сервера (тот же самый сеанс, просто с другой стороны):
02:54:30, 76, SRV.IP.ADDR.ES, , AUTH TLS
02:54:30, 76, SRV.IP.ADDR.ES, , 234 AUTH command ok; starting SSL connection.
02:54:30, 76, SRV.IP.ADDR.ES, , establishing encrypted session
02:54:30, 76, SRV.IP.ADDR.ES, , USER client-username
02:54:30, 76, SRV.IP.ADDR.ES, client-username, 331 Password required for client-username.
02:54:30, 76, SRV.IP.ADDR.ES, client-username, PASS ****
02:54:30, 76, SRV.IP.ADDR.ES, client-username, logged in as "client-username".
02:54:30, 76, SRV.IP.ADDR.ES, client-username, 230 User client-username logged
02:54:31, 76, SRV.IP.ADDR.ES, client-username, FEAT
02:54:31, 76, SRV.IP.ADDR.ES, client-username, 211-Extensions supported:
02:54:31, 76, SRV.IP.ADDR.ES, client-username, AUTH TLS
02:54:31, 76, SRV.IP.ADDR.ES, client-username, CCC
02:54:31, 76, SRV.IP.ADDR.ES, client-username, CLNT
02:54:31, 76, SRV.IP.ADDR.ES, client-username, CPSV
02:54:31, 76, SRV.IP.ADDR.ES, client-username, EPRT
02:54:31, 76, SRV.IP.ADDR.ES, client-username, EPSV
02:54:31, 76, SRV.IP.ADDR.ES, client-username, MDTM
02:54:31, 76, SRV.IP.ADDR.ES, client-username, MFCT
02:54:31, 76, SRV.IP.ADDR.ES, client-username, MFMT
02:54:31, 76, SRV.IP.ADDR.ES, client-username, MLST type*;size*;create;modify*;
02:54:31, 76, SRV.IP.ADDR.ES, client-username, MODE Z
02:54:31, 76, SRV.IP.ADDR.ES, client-username, PASV
02:54:31, 76, SRV.IP.ADDR.ES, client-username, PBSZ
02:54:31, 76, SRV.IP.ADDR.ES, client-username, PROT
02:54:31, 76, SRV.IP.ADDR.ES, client-username, REST STREAM
02:54:31, 76, SRV.IP.ADDR.ES, client-username, SBUF
02:54:31, 76, SRV.IP.ADDR.ES, client-username, SIZE
02:54:31, 76, SRV.IP.ADDR.ES, client-username, SSCN
02:54:31, 76, SRV.IP.ADDR.ES, client-username, TVFS
02:54:31, 76, SRV.IP.ADDR.ES, client-username, UTF8
02:54:31, 76, SRV.IP.ADDR.ES, client-username, XCRC "filename" SP EP
02:54:31, 76, SRV.IP.ADDR.ES, client-username, XMD5 "filename" SP EP
02:54:31, 76, SRV.IP.ADDR.ES, client-username, XSHA1 "filename" SP EP
02:54:31, 76, SRV.IP.ADDR.ES, client-username, 211 End.
02:54:31, 76, SRV.IP.ADDR.ES, client-username, PBSZ 0
02:54:31, 76, SRV.IP.ADDR.ES, client-username, 200 PBSZ=0
02:54:31, 76, SRV.IP.ADDR.ES, client-username, PROT P
02:54:31, 76, SRV.IP.ADDR.ES, client-username, 200 PROT command successful.
02:54:31, 76, SRV.IP.ADDR.ES, client-username, OPTS UTF8 ON
02:54:31, 76, SRV.IP.ADDR.ES, client-username, 200 UTF8 OPTS ON
02:54:31, 76, SRV.IP.ADDR.ES, client-username, CWD /
02:54:31, 76, SRV.IP.ADDR.ES, client-username, смена директории "/" --> Доступ разрешён.
02:54:31, 76, SRV.IP.ADDR.ES, client-username, 250 CWD command successful. "/" — текущая директория.
02:54:31, 76, SRV.IP.ADDR.ES, client-username, TYPE A
02:54:31, 76, SRV.IP.ADDR.ES, client-username, 200 Type set to A.
02:54:31, 76, SRV.IP.ADDR.ES, client-username, MODE Z
02:54:31, 76, SRV.IP.ADDR.ES, client-username, 200 Mode Z ok.
02:54:32, 76, SRV.IP.ADDR.ES, client-username, PORT 10,0,0,43,202,73
02:54:32, 76, SRV.IP.ADDR.ES, client-username, 200 Port command successful.
02:54:32, 76, SRV.IP.ADDR.ES, client-username, MLSD
02:54:53, 76, SRV.IP.ADDR.ES, client-username, 425 Cannot open data connection.
02:54:53, 76, SRV.IP.ADDR.ES, client-username, PASV
02:54:53, 76, SRV.IP.ADDR.ES, client-username, 227 Entering Passive Mode (SRV,IP,ADDR,ES,31,114)
Настройки файрвола сейчас очень простые, разрешены только RELATED и ESTABLISHED соединения (в обеих цепочках - IN и FW). Падений нет. И две стандартные defconf-правила: passthrough и fasttrack. Это всё. Помогите, пожалуйста, составить правило для файрвола, которое позволит такие соединения.