Я использую гостевую систему FreeDos v1.1 VirtualBox на 64-битном хосте Windows 7. Сегодня я запустил mTCP ftpsrv.exe для доступа по FTP и перешел в FreeDos с помощью WinSCP. Это начало меня в моем последнем доступном каталоге, который был /DRIVE_C/RR2
. Я просмотрел корневой каталог (/DRIVE_C
) и загрузил небольшой файл. После завершения передачи файла WinSCP зависла при передаче файла, прежде чем сообщить мне, что соединение было разорвано и ему не удалось получить список каталогов:
Тайм-аут обнаружен. (подключение для передачи данных)
Не удалось получить список каталогов
Ошибка при выводе каталога '/DRIVE_C'.
Сначала я думал, что произошла ошибка на диске, но файл был успешно загружен, а все остальное в порядке.
Однако попытка переподключения приводит к той же ошибке. Очистка настроек удаленного каталога из WinSCP ничего не решает. Я создал нового пользователя, и вход в систему таким образом все еще получил ту же ошибку.
Что я могу сделать, так это вручную указать начальный каталог практически для любого подкаталога, кроме /DRIVE_C
или /DRIVE_C/FDOS
. Каталоги случайно «не найдены», в результате чего WinSCP отключается, а WinSCP будет случайным образом подавляться и отключаться при передаче файлов. Иногда я могу скопировать файл в FreeDOS в другое место, а затем загрузить его по FTP, но иногда нет. Загрузка файла обычно делает его каталог невидимым для FTP.
Виртуальная машина имеет диск 2 ГБ и наполовину пуст, поэтому на диске недостаточно места.
Потратив несколько часов на поиск и устранение неисправностей, я, наконец, сказал "винт" и установил гостевую виртуальную машину FreeDOS 1.2. Я загрузил столько файлов игр, сколько смог, с моей виртуальной машины FreeDos 1.1, а затем начал загружать их на свою новую виртуальную машину FreeDOS 1.2. Я решил поместить файлы игры в /DRIVE_C/GAMES/
и перетащить их с моего хоста на гостя через WinSCP. Время ожидания и возобновления работы WinSCP несколько раз, прежде чем задушить ошибку листинга каталога, а затем завершить работу с ошибкой "ненормальное выполнение". Я больше не могу получить доступ к /DRIVE_C/GAMES/
через FTP (но у меня нет проблем при работе непосредственно в системе).
Вот мои настройки ftpsrv на обеих виртуальных машинах FreeDOS:
# userid password sandbox_directory incoming_directory permissions
redacted redacted [none] [any] all
В соответствии с этим мой логин должен иметь полный доступ без ограничений.
Конфигурация mTCP в FreeDOS 1.1 (в основном настройки по умолчанию)
packetint 0x60
mtu 1472
DOSRules
ftpsrv_password_file c:\FDOS\ftppass.txt
ftpsrv_log_file c:\FDOS\ftpsrv.log
ftpsrv_filebuffer_size 16
ftpsrv_tcpbuffer_size 16
ftpsrv_packets_per_roll 2
Конфигурация mTCP в FreeDOS 1.2 (в основном настройки по умолчанию)
packetint 0x60
mtu 1500
DOSRules
ftpsrv_password_file c:\FDOS\ftppass.txt
ftpsrv_log_file c:\FDOS\ftpsrv.log
# I forgot to uncomment these, but seems to have made no difference
#ftpsrv_filebuffer_size 16
#ftpsrv_tcpbuffer_size 16
#ftpsrv_packets_per_roll 2
Я почему-то сомневаюсь, что WinSCP является виновником здесь, хотя взаимодействие с mTCP, кажется, делает его шатким. Я использую WinSCP почти каждый день для подключения к другим системам, и я никогда не сталкивался с таким поведением.
Конфигурация WinSCP для обоих подключений:
Protocol: FTP
Encryption: No encryption
Port number: 21
UTF-8 encoding for filenames: Auto
[ ] Trim VMS version numbers
[ ] Synchronize browsing
[x] Remember last used directory
(отключение не помогло)
[x] Cache visited remote directories
[x] Cache directory changes
[x] Permanent cache
[x] Resolve symbolic links
[ ] Follow symbolic links to directories
[ ] Preserve deleted files to recycle bin
[x] Passive mode
Protocal options: All auto
Server response timeout: 15
Keepalives: Executing dummy protocol commands
Seconds between keepalives: 30
Internet protocol version: Auto
Proxy type: None
Я склонен полагать, что ошибка заключается в настройке разрешения ОС. Однако я не могу найти документацию о правах доступа к файлам во FreeDos. Наиболее близким я могу найти атрибуты, которые дают мне следующую информацию (в FreeDOS 1.1):
[D----] FDOS
[----A] KERNAL.SYS
[----A] AUTOEXEC.BAT
[----A] COMMAND.COM
[----A] FDCONFIG.SYS
[----A] BOOTSECT.BIN
[D----] DUKE3D
[D----] RR2
которые явно не имеют ничего общего с разрешениями.
Обновление 2017.04.03: По запросу, здесь мои файлы журнала. (WinSCP не регистрировался, так что это с сегодняшнего утра.)
Файл журнала от WinSCP:
. 2017-04-03 10:22:22.641 --------------------------------------------------------------------------
. 2017-04-03 10:22:22.642 WinSCP Version 5.9.4 (Build 7333) (OS 6.1.7601 Service Pack 1 - Windows 7 Professional)
. 2017-04-03 10:22:22.643 Configuration: C:\Users\Redacted\AppData\Roaming\winscp.ini
. 2017-04-03 10:22:22.643 Log level: Normal
. 2017-04-03 10:22:22.643 Local account: Redacted
. 2017-04-03 10:22:22.644 Working directory: C:\Users\Redacted
. 2017-04-03 10:22:22.644 Process ID: 7508
. 2017-04-03 10:22:22.644 Command-line: "C:\Windows\winscp.exe"
. 2017-04-03 10:22:22.644 Time zone: Current: GMT-6, Standard: GMT-7 (Mountain Standard Time), DST: GMT-6 (Mountain Daylight Time), DST Start: 3/12/2017, DST End: 11/5/2017
. 2017-04-03 10:22:22.644 Login time: Monday, April 03, 2017 10:22:22 AM
. 2017-04-03 10:22:22.644 --------------------------------------------------------------------------
. 2017-04-03 10:22:22.644 Session name: FreeDos 1.1 (Modified site)
. 2017-04-03 10:22:22.644 Host name: 192.168.1.123 (Port: 21)
. 2017-04-03 10:22:22.644 User name: redacted (Password: No, Key file: No, Passphrase: No)
. 2017-04-03 10:22:22.644 Transfer Protocol: FTP
. 2017-04-03 10:22:22.644 Ping type: Dummy, Ping interval: 30 sec; Timeout: 5 sec
. 2017-04-03 10:22:22.644 Disable Nagle: No
. 2017-04-03 10:22:22.644 Proxy: None
. 2017-04-03 10:22:22.644 Send buffer: 262144
. 2017-04-03 10:22:22.644 UTF: Auto
. 2017-04-03 10:22:22.644 FTPS: None [Client certificate: No]
. 2017-04-03 10:22:22.645 FTP: Passive: Yes [Force IP: Auto]; MLSD: Auto [List all: Auto]; HOST: Auto
. 2017-04-03 10:22:22.645 Local directory: C:\TEMP\FdDOS, Remote directory: /DRIVE_C/UP, Update: Yes, Cache: Yes
. 2017-04-03 10:22:22.645 Cache directory changes: Yes, Permanent: Yes
. 2017-04-03 10:22:22.645 Recycle bin: Delete to: No, Overwritten to: No, Bin path:
. 2017-04-03 10:22:22.645 Timezone offset: 0h 0m
. 2017-04-03 10:22:22.645 --------------------------------------------------------------------------
. 2017-04-03 10:22:22.774 Connecting to 192.168.1.123 ...
. 2017-04-03 10:22:22.774 Connected with 192.168.1.123. Waiting for welcome message...
< 2017-04-03 10:22:22.774 220 mTCP FTP Server
> 2017-04-03 10:22:22.774 USER redacted
< 2017-04-03 10:22:22.775 331 User OK, send Password
> 2017-04-03 10:22:26.075 PASS ********
< 2017-04-03 10:22:26.281 230 User logged in
> 2017-04-03 10:22:26.281 SYST
< 2017-04-03 10:22:26.281 215 UNIX Type: L8
> 2017-04-03 10:22:26.281 FEAT
< 2017-04-03 10:22:26.282 211-mTCP FTP server features:
< 2017-04-03 10:22:26.282 MDTM
< 2017-04-03 10:22:26.282 211 End
. 2017-04-03 10:22:26.327 Connected
. 2017-04-03 10:22:26.327 --------------------------------------------------------------------------
. 2017-04-03 10:22:26.327 Using FTP protocol.
. 2017-04-03 10:22:26.329 Doing startup conversation with host.
> 2017-04-03 10:22:26.379 PWD
< 2017-04-03 10:22:26.380 257 "/" is current directory
. 2017-04-03 10:22:26.380 Changing directory to "/DRIVE_C/UP".
> 2017-04-03 10:22:26.380 CWD /DRIVE_C/UP
< 2017-04-03 10:22:26.381 250 CWD command successful
. 2017-04-03 10:22:26.381 Getting current directory name.
> 2017-04-03 10:22:26.381 PWD
< 2017-04-03 10:22:26.381 257 "/DRIVE_C/UP/" is current directory
. 2017-04-03 10:22:26.581 Retrieving directory listing...
> 2017-04-03 10:22:26.581 TYPE A
< 2017-04-03 10:22:26.581 200 Type set to A
> 2017-04-03 10:22:26.582 PASV
< 2017-04-03 10:22:26.582 227 Entering Passive Mode (192,168,1,123,8,42)
> 2017-04-03 10:22:26.582 LIST -a
. 2017-04-03 10:22:26.582 Connecting to 192.168.1.123:2090 ...
< 2017-04-03 10:22:26.583 150 Sending file list
. 2017-04-03 10:22:26.583 Data connection closed
. 2017-04-03 10:22:26.583 <Empty directory listing>
< 2017-04-03 10:22:26.584 226 Transfer complete
. 2017-04-03 10:22:26.584 Directory listing successful
. 2017-04-03 10:22:26.584 LIST with -a switch returned empty directory listing, will try pure LIST
. 2017-04-03 10:22:26.584 Retrieving directory listing...
> 2017-04-03 10:22:26.584 TYPE A
< 2017-04-03 10:22:26.584 200 Type set to A
> 2017-04-03 10:22:26.585 PASV
< 2017-04-03 10:22:26.585 227 Entering Passive Mode (192,168,1,123,8,91)
> 2017-04-03 10:22:26.585 LIST
. 2017-04-03 10:22:26.585 Connecting to 192.168.1.123:2139 ...
< 2017-04-03 10:22:26.586 150 Sending file list
. 2017-04-03 10:22:26.586 Data connection closed
. 2017-04-03 10:22:26.586 <Empty directory listing>
< 2017-04-03 10:22:26.586 226 Transfer complete
. 2017-04-03 10:22:26.586 Directory listing successful
. 2017-04-03 10:22:26.587 ..;D;0;1899-12-30T07:00:00.000Z;0;"" [0];"" [0];---------;0
. 2017-04-03 10:22:26.681 Startup conversation with host finished.
. 2017-04-03 10:22:30.251 Cached directory change via ".." to "/DRIVE_C".
. 2017-04-03 10:22:30.251 Getting current directory name.
. 2017-04-03 10:22:30.254 Retrieving directory listing...
> 2017-04-03 10:22:30.254 CWD /DRIVE_C/
< 2017-04-03 10:22:30.254 250 CWD command successful
> 2017-04-03 10:22:30.254 PWD
< 2017-04-03 10:22:30.254 257 "/DRIVE_C/" is current directory
> 2017-04-03 10:22:30.254 TYPE A
< 2017-04-03 10:22:30.254 200 Type set to A
> 2017-04-03 10:22:30.254 PASV
< 2017-04-03 10:22:30.254 227 Entering Passive Mode (192,168,1,123,11,61)
> 2017-04-03 10:22:30.254 LIST
. 2017-04-03 10:22:30.254 Connecting to 192.168.1.123:2877 ...
< 2017-04-03 10:22:30.256 150 Sending file list
. 2017-04-03 10:22:30.256 Data connection closed
< 2017-04-03 10:22:30.256 226 Transfer complete
. 2017-04-03 10:22:30.256 drwxrwxrwx 1 ftp ftp 0 Jul 14 2016 FDOS
. 2017-04-03 10:22:30.256 -rwxrwxrwx 1 ftp ftp 45344 Jun 21 2011 KERNEL.SYS
. 2017-04-03 10:22:30.256 -rwxrwxrwx 1 ftp ftp 1266 Apr 2 06:26 AUTOEXEC.BAT
. 2017-04-03 10:22:30.256 -rwxrwxrwx 1 ftp ftp 66945 Aug 28 2006 COMMAND.COM
. 2017-04-03 10:22:30.256 -rwxrwxrwx 1 ftp ftp 848 Jul 14 2016 FDCONFIG.SYS
. 2017-04-03 10:22:30.256 -rwxrwxrwx 1 ftp ftp 512 Jul 14 2016 BOOTSECT.BIN
. 2017-04-03 10:22:30.256 drwxrwxrwx 1 ftp ftp 0 Jul 14 2016 RR
. 2017-04-03 10:22:30.256 drwxrwxrwx 1 ftp ftp 0 Jul 14 2016 ATOMIC
. 2017-04-03 10:22:30.256 drwxrwxrwx 1 ftp ftp 0 Jul 14 2016 DUKE3D
. 2017-04-03 10:22:30.256 drwxrwxrwx 1 ftp ftp 0 Jul 30 2016 RR2
. 2017-04-03 10:22:30.256 drwxrwxrwx 1 ftp ftp 0 Aug 9 2016 HUNT
. 2017-04-03 10:22:30.256 drwxrwxrwx 1 ftp ftp 0 Apr 2 08:13 TEST
. 2017-04-03 10:22:30.256 -rwxrwxrwx 1 ftp ftp 527 Apr 2 07:09 README.TXT
. 2017-04-03 10:22:30.256 drwxrwxrwx 1 ftp ftp 0 Apr 2 18:23 DCINST
. 2017-04-03 10:22:30.256 drwxrwxrwx 1 ftp ftp 0 Apr 2 18:26 DUKEDC
. 2017-04-03 10:22:30.256 drwxrwxrwx 1 ftp ftp 0 Apr 2 18:36 ERR200
. 2017-04-03 10:22:30.256 drwxrwxrwx 1 ftp ftp 0 Apr 2 18:39 UP
. 2017-04-03 10:22:30.256 -rwxrwxrwx 1 ftp ftp 161 Apr 2 18:44 GAMER.INI
. 2017-04-03 10:22:30.266 Directory listing successful
. 2017-04-03 10:22:30.266 ..;D;0;1899-12-30T07:00:00.000Z;0;"" [0];"" [0];---------;0
. 2017-04-03 10:22:30.266 FDOS;D;0;2016-07-14T06:00:00.000Z;2;"ftp" [0];"ftp" [0];rwxrwxrwx;1
. 2017-04-03 10:22:30.266 KERNEL.SYS;-;45344;2011-06-21T06:00:00.000Z;2;"ftp" [0];"ftp" [0];rwxrwxrwx;1
. 2017-04-03 10:22:30.266 AUTOEXEC.BAT;-;1266;2017-04-02T12:26:00.000Z;1;"ftp" [0];"ftp" [0];rwxrwxrwx;1
. 2017-04-03 10:22:30.266 COMMAND.COM;-;66945;2006-08-28T06:00:00.000Z;2;"ftp" [0];"ftp" [0];rwxrwxrwx;1
. 2017-04-03 10:22:30.266 FDCONFIG.SYS;-;848;2016-07-14T06:00:00.000Z;2;"ftp" [0];"ftp" [0];rwxrwxrwx;1
. 2017-04-03 10:22:30.266 BOOTSECT.BIN;-;512;2016-07-14T06:00:00.000Z;2;"ftp" [0];"ftp" [0];rwxrwxrwx;1
. 2017-04-03 10:22:30.267 RR;D;0;2016-07-14T06:00:00.000Z;2;"ftp" [0];"ftp" [0];rwxrwxrwx;1
. 2017-04-03 10:22:30.267 ATOMIC;D;0;2016-07-14T06:00:00.000Z;2;"ftp" [0];"ftp" [0];rwxrwxrwx;1
. 2017-04-03 10:22:30.267 DUKE3D;D;0;2016-07-14T06:00:00.000Z;2;"ftp" [0];"ftp" [0];rwxrwxrwx;1
. 2017-04-03 10:22:30.267 RR2;D;0;2016-07-30T06:00:00.000Z;2;"ftp" [0];"ftp" [0];rwxrwxrwx;1
. 2017-04-03 10:22:30.267 HUNT;D;0;2016-08-09T06:00:00.000Z;2;"ftp" [0];"ftp" [0];rwxrwxrwx;1
. 2017-04-03 10:22:30.267 TEST;D;0;2017-04-02T14:13:00.000Z;1;"ftp" [0];"ftp" [0];rwxrwxrwx;1
. 2017-04-03 10:22:30.267 README.TXT;-;527;2017-04-02T13:09:00.000Z;1;"ftp" [0];"ftp" [0];rwxrwxrwx;1
. 2017-04-03 10:22:30.267 DCINST;D;0;2017-04-03T00:23:00.000Z;1;"ftp" [0];"ftp" [0];rwxrwxrwx;1
. 2017-04-03 10:22:30.267 DUKEDC;D;0;2017-04-03T00:26:00.000Z;1;"ftp" [0];"ftp" [0];rwxrwxrwx;1
. 2017-04-03 10:22:30.267 ERR200;D;0;2017-04-03T00:36:00.000Z;1;"ftp" [0];"ftp" [0];rwxrwxrwx;1
. 2017-04-03 10:22:30.267 UP;D;0;2017-04-03T00:39:00.000Z;1;"ftp" [0];"ftp" [0];rwxrwxrwx;1
. 2017-04-03 10:22:30.267 GAMER.INI;-;161;2017-04-03T00:44:00.000Z;1;"ftp" [0];"ftp" [0];rwxrwxrwx;1
. 2017-04-03 10:22:34.312 Cached directory change via "FDOS" to "/DRIVE_C/FDOS".
. 2017-04-03 10:22:34.312 Getting current directory name.
. 2017-04-03 10:22:34.316 Retrieving directory listing...
> 2017-04-03 10:22:34.316 CWD /DRIVE_C/FDOS/
< 2017-04-03 10:22:34.317 250 CWD command successful
> 2017-04-03 10:22:34.317 PWD
< 2017-04-03 10:22:34.317 257 "/DRIVE_C/FDOS/" is current directory
> 2017-04-03 10:22:34.317 TYPE A
< 2017-04-03 10:22:34.317 200 Type set to A
> 2017-04-03 10:22:34.317 PASV
< 2017-04-03 10:22:34.317 227 Entering Passive Mode (192,168,1,123,9,182)
> 2017-04-03 10:22:34.317 LIST
. 2017-04-03 10:22:34.317 Connecting to 192.168.1.123:2486 ...
< 2017-04-03 10:22:34.317 150 Sending file list
< 2017-04-03 10:22:34.317 226 Transfer complete
. 2017-04-03 10:22:39.872 Timeout detected. (data connection)
. 2017-04-03 10:22:39.872 Could not retrieve directory listing
. 2017-04-03 10:22:39.872 Connection was lost, asking what to do.
. 2017-04-03 10:22:39.872 Asking user:
. 2017-04-03 10:22:39.872 Lost connection. ("Timeout detected. (data connection)","Could not retrieve directory listing")
* 2017-04-03 10:22:41.881 (ESshFatal) **Lost connection.**
* 2017-04-03 10:22:41.881 Timeout detected. (data connection)
* 2017-04-03 10:22:41.881 Could not retrieve directory listing
* 2017-04-03 10:22:41.881 Error listing directory '/DRIVE_C/FDOS'.
* 2017-04-03 10:22:41.881 Error changing directory to 'FDOS'.
Файл журнала от mTCP на FreeDOS 1.1
2017-04-03 10:17:37.40 mTCP FtpSrv version (Oct 29 2011) starting
2017-04-03 10:17:37.40 Clients: 3, Client file buffer size: 16384, TCP buffer size: 16384
2017-04-03 10:17:37.40 Packets per poll: 2, TCP sockets: 10, Send buffers: 15, Recv buffers: 40
2017-04-03 10:17:37.40 Client session timeout: 182 seconds
2017-04-03 10:17:37.40 Control port: 21, Pasv ports: 2048-3071
2017-04-03 10:17:37.46 Real IP address: 192.168.1.123, Pasv response IP addr: 192.168.1.123
2017-04-03 10:17:49.65 (0) User redacted signed in from 192.168.1.147:51304 at 2017-04-03 10:17:44
2017-04-03 10:18:09.31 (0) Disconnect: 192.168.1.147:51304
2017-04-03 10:22:23.84 (1) User redacted signed in from 192.168.1.147:51316 at 2017-04-03 10:22:20
2017-04-03 10:22:37.62 (1) Disconnect: 192.168.1.147:51316
2017-04-03 10:36:36.83 (2) User redacted signed in from 192.168.1.147:51365 at 2017-04-03 10:36:33
2017-04-03 10:36:51.39 (2) Disconnect: 192.168.1.147:51365
2017-04-03 10:36:55.83 Shutdown requested
2017-04-03 10:36:56.88 Stats: Sessions: 3 Timeouts: 0
2017-04-03 10:36:56.88 LIST: 11 NLST: 0 RETR: 0
2017-04-03 10:36:56.88 STOR: 0 STOU: 0 APPE: 0
2017-04-03 10:36:56.88 === Server shutdown ===
Обновление: я пробовал с Core FTP, и вот его журнал:
Welcome to Core FTP, release ver 2.2, build 1887 (x64) -- © 2003-2016
WinSock 2.0
Mem -- 33,531,236 KB, Virt -- 8,589,934,464 KB
Started on Monday April 03, 2017 at 11:36:AM
Connect socket #752 to 192.168.1.123, port 21...220 mTCP FTP Server
USER redacted
331 User OK, send Password
PASS **********
230 User logged in
SYST
215 UNIX Type: L8
Keep alive off...PWD
257 "/" is current directory
PASV
227 Entering Passive Mode (192,168,1,123,10,76)
LIST
Connect socket #800 to 192.168.1.123, port 2636...150 Sending file list
226 Transfer complete
Transferred 54 bytes in 60.000 seconds
CWD /DRIVE_C
250 CWD command successful
PASV
227 Entering Passive Mode (192,168,1,123,9,147)
LIST
Connect socket #844 to 192.168.1.123, port 2451...150 Sending file list
226 Transfer complete
Transferred 1,028 bytes in 60.001 seconds
CWD /DRIVE_C/FDOS/
250 CWD command successful
PASV
227 Entering Passive Mode (192,168,1,123,8,41)
LIST
Connect socket #960 to 192.168.1.123, port 2089...150 Sending file list
226 Transfer complete
Transferred 1,279 bytes in 0.001 seconds
CDUP
250 CWD command successful
PWD
257 "/DRIVE_C/" is current directory
PASV
227 Entering Passive Mode (192,168,1,123,8,67)
LIST
Connect socket #972 to 192.168.1.123, port 2115...150 Sending file list
226 Transfer complete
Transferred 1,028 bytes in 60.001 seconds
QUIT
221 Server closing connection
Total uploaded files: 0
Total uploaded data: 0
Total downloaded files: 0
Total downloaded data: 0
Как видите, для получения 54 байтов информации каталога потребовалось чуть более 60 секунд. Базовый FTP кажется более успешным, поскольку в конечном итоге он получает список каталогов. Иногда он работает так же быстро, как вы ожидаете от FTP, например, когда он передал 1279 байтов за 0,001 секунды, но все равно кажется, что его ударил.
Я подумал, что, может быть, просто не позволил WinSCP ждать достаточно долго, поэтому увеличил время ожидания до двух минут. Единственное другое поведение заключалось в том, что WinSCP зависал в течение двух полных минут перед отображением ошибки.
Журнал mTCP из этих двух последних попыток показывает не что иное, как "Пользователь вошел в систему" и "Отключить" с 0 таймаутами и без ошибок, так же как и полный журнал на этой странице.
Я начал думать, что проблема может быть в роутере, поэтому я выключил и снова включил, но это не имело значения. Мой компьютер подключен напрямую к маршрутизатору с помощью 3-футового шнура, и все остальные подключения к Интернету кажутся нормальными, поэтому я, скорее всего, не испытываю сетевых помех.
Может быть, пришло время сообщить об ошибке разработчику mTCP и посмотреть, что он придумает.