У меня есть арендованный VPS с установленным debian. Недавно я установил proftpd, чтобы разрешить доступ только для чтения всем и полный доступ для отдельных пользователей.
Я настроил proftpd (с TLS) по нескольким руководствам. Я разблокировал пассивные порты (те и порт 21 через iptables) и настроил анонимный вход.
Когда я вхожу в систему, все в порядке - быстрый вход, быстрое перемещение по каталогам ... проблема возникает, когда я пытаюсь загрузить файл - winscp / filezilla / python, все застревают при загрузке файла, а затем теряют соединение (файлы ~ 1кБ, очень маленький). Когда я подключаюсь через SFTP к серверу, у меня нет проблем и полная скорость.
Любые идеи? Тебе нужен мой proftpd.conf
файл?
Обновить:
Я вижу, что мне нужно добавить некоторую информацию, благодаря первому комментарию (о SCP):
Моя конфигурация iptables:
Chain INPUT (policy ACCEPT)
target prot opt source destination
fail2ban-ssh-ddos tcp -- anywhere anywhere multiport dports ssh
ACCEPT tcp -- anywhere anywhere tcp dpts:60000:65535
fail2ban-ssh tcp -- anywhere anywhere multiport dports ssh
ACCEPT tcp -- anywhere anywhere tcp dpt:ftp
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Chain fail2ban-ssh (1 references)
target prot opt source destination
RETURN all -- anywhere anywhere
Chain fail2ban-ssh-ddos (1 references)
target prot opt source destination
RETURN all -- anywhere anywhere
Я отключил TLS, подключился через гостевую учетную запись, включил двоичный режим и запустил tcpdump на порту 21 (на стороне сервера). Затем я сделал "получить" один файл и через некоторое время получил сообщение "Соединение закрыто удаленным хостом". Вот ввод ftp:
ftp> get light.cfg
200 PORT command successful
150 Opening BINARY mode data connection for light.cfg (94 bytes)
Connection closed by remote host.
и здесь вы можете увидеть get и connection_closed, разделенные новой строкой:
15:12:15.836468 IP (tos 0x0, ttl 119, id 30359, offset 0, flags [DF], proto TCP (6), length 67)
83-144-76-138.static.chello.pl.54225 > vz31640.dahost.pl.ftp: Flags [P.], cksum 0x5526 (correct), seq 139:166, ack 575, win 7618, length 27
15:12:15.836636 IP (tos 0x0, ttl 64, id 50952, offset 0, flags [DF], proto TCP (6), length 69)
vz31640.dahost.pl.ftp > 83-144-76-138.static.chello.pl.54225: Flags [P.], cksum 0x7049 (correct), seq 575:604, ack 166, win 115, length 29
15:12:15.856530 IP (tos 0x0, ttl 119, id 30360, offset 0, flags [DF], proto TCP (6), length 56)
83-144-76-138.static.chello.pl.54225 > vz31640.dahost.pl.ftp: Flags [P.], cksum 0xd20f (correct), seq 166:182, ack 604, win 7589, length 16
15:12:15.868348 IP (tos 0x0, ttl 64, id 50953, offset 0, flags [DF], proto TCP (6), length 106)
vz31640.dahost.pl.ftp > 83-144-76-138.static.chello.pl.54225: Flags [P.], cksum 0xba9a (correct), seq 604:670, ack 182, win 115, length 66
15:12:15.934002 IP (tos 0x0, ttl 119, id 30365, offset 0, flags [DF], proto TCP (6), length 40)
83-144-76-138.static.chello.pl.54225 > vz31640.dahost.pl.ftp: Flags [.], cksum 0x0ccc (correct), ack 670, win 7523, length 0
15:13:15.909873 IP (tos 0x0, ttl 119, id 30372, offset 0, flags [DF], proto TCP (6), length 40)
83-144-76-138.static.chello.pl.54225 > vz31640.dahost.pl.ftp: Flags [F.], cksum 0x0ccb (correct), seq 182, ack 670, win 7523, length 0
15:13:15.910056 IP (tos 0x0, ttl 64, id 50954, offset 0, flags [DF], proto TCP (6), length 40)
vz31640.dahost.pl.ftp > 83-144-76-138.static.chello.pl.54225: Flags [F.], cksum 0x29ba (correct), seq 670, ack 183, win 115, length 0
15:13:15.922725 IP (tos 0x0, ttl 119, id 30373, offset 0, flags [DF], proto TCP (6), length 40)
83-144-76-138.static.chello.pl.54225 > vz31640.dahost.pl.ftp: Flags [.], cksum 0x0cca (correct), ack 671, win 7523, length 0
Пожалуйста, опубликуйте свой iptables
настроить. Обратите внимание, что заставить его работать с FTP может быть сложно, поскольку FTP использует динамическое распределение портов (в пассивном режиме, когда клиент хочет загрузить или загрузить файл, сервер выделяет динамический порт для потока передачи данных, сообщает его клиенту. и ожидает, что клиент подключится к нему).
Это означает:
SCP (и SFTP) работают нормально, потому что они мультиплексируют потоки управления и данных в один поток TCP.
Что касается синхронизации… Во-первых, забудьте про scp
поскольку это устаревший протокол; вместо этого используйте SFTP. это Похоже, что это кроссплатформенная реализация Python SFTP, поэтому она может работать на вас. Кстати, Windows имеет хорошую поддержку интерфейсного программного обеспечения SFTP (Google для WinSCP).
И вы можете подумать и о других средствах синхронизации. Например, rsync
имеет сборки Windows, и это, пожалуй, лучший инструмент синхронизации файловой системы из существующих. Вы также можете подумать о WebDAV или даже реализовать что-то RESTful.