
저는 USB HDD가 연결된 FRITZ!Box 3490을 NAS 서버로 사용하고 있습니다. FTP 통신을 위해 특정 포트(32753)를 구성했습니다. 정적 정적 서버 이름(u**********u.myfritz.net)을 보장하기 위해 myFritz를 활성화하고 구성했습니다.
WinSCP를 통해 (로컬로 연결되지 않은) 노트북에서 NAS에 액세스할 때 NAS에 대한 액세스가 제대로 작동합니다.
그런데 내 웹공간의 원격 서버를 통해 NAS에 접속하려고 하면 EPSV 또는 PAS 명령 이후 연결이 실패합니다.
터미널은 다음과 같습니다.
$ curl -v --ftp-pasv --ssl -k -u speedITBackup 'ftp://u**********u.myfritz.net:32753/Backup/Superfein/'
Enter host password for user 'speedITBackup':
* Trying 92.218.125.113...
* TCP_NODELAY set
* Connected to u**********u.myfritz.net (92.218.125.113) port 32753 (#0)
< 220 FRITZ!Box3490 FTP server ready.
> AUTH SSL
< 501 Use AUTH TLS for secure control connection.
> AUTH TLS
< 234 Authentication method accepted
* successfully set certificate verify locations:
* CAfile: /etc/pki/tls/certs/ca-bundle.crt
CApath: none
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
* TLSv1.3 (IN), TLS handshake, Server hello (2):
* TLSv1.3 (IN), TLS handshake, [no content] (0):
* TLSv1.3 (IN), TLS handshake, Encrypted Extensions (8):
* TLSv1.3 (IN), TLS handshake, [no content] (0):
* TLSv1.3 (IN), TLS handshake, Certificate (11):
* TLSv1.3 (IN), TLS handshake, [no content] (0):
* TLSv1.3 (IN), TLS handshake, CERT verify (15):
* TLSv1.3 (IN), TLS handshake, [no content] (0):
* TLSv1.3 (IN), TLS handshake, Finished (20):
* TLSv1.3 (OUT), TLS change cipher, Change cipher spec (1):
* TLSv1.3 (OUT), TLS handshake, [no content] (0):
* TLSv1.3 (OUT), TLS handshake, Finished (20):
* SSL connection using TLSv1.3 / TLS_AES_256_GCM_SHA384
* Server certificate:
* subject: CN=u************u.myfritz.net
* start date: Dec 9 12:27:41 2022 GMT
* expire date: Jan 15 12:27:41 2038 GMT
* issuer: CN=u**********u.myfritz.net
* SSL certificate verify result: self signed certificate (18), continuing anyway.
* TLSv1.3 (OUT), TLS app data, [no content] (0):
> USER speedITBackup
* TLSv1.3 (IN), TLS handshake, [no content] (0):
* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):
* TLSv1.3 (IN), TLS handshake, [no content] (0):
* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):
* TLSv1.3 (IN), TLS app data, [no content] (0):
< 331 Password required for speedITBackup.
* TLSv1.3 (OUT), TLS app data, [no content] (0):
> PASS **************
* TLSv1.3 (IN), TLS app data, [no content] (0):
< 230 User speedITBackup logged in.
* TLSv1.3 (OUT), TLS app data, [no content] (0):
> PBSZ 0
* TLSv1.3 (IN), TLS app data, [no content] (0):
< 200 ok
* TLSv1.3 (OUT), TLS app data, [no content] (0):
> PROT P
* TLSv1.3 (IN), TLS app data, [no content] (0):
< 200 Data channel will be secured
* TLSv1.3 (OUT), TLS app data, [no content] (0):
> PWD
* TLSv1.3 (IN), TLS app data, [no content] (0):
< 257 "/" is current directory.
* Entry path is '/'
* TLSv1.3 (OUT), TLS app data, [no content] (0):
> CWD Backup
* ftp_perform ends with SECONDARY: 0
* TLSv1.3 (IN), TLS app data, [no content] (0):
< 250 CWD command successful.
* TLSv1.3 (OUT), TLS app data, [no content] (0):
> CWD Superfein
* TLSv1.3 (IN), TLS app data, [no content] (0):
< 250 CWD command successful.
* TLSv1.3 (OUT), TLS app data, [no content] (0):
> EPSV
* Connect data stream passively
* TLSv1.3 (IN), TLS app data, [no content] (0):
< 229 Entering Extended Passive Mode (|||60770|)
* Trying 92.218.125.113...
* TCP_NODELAY set
* Connecting to 92.218.125.113 (92.218.125.113) port 60770
* connect to 92.218.125.113 port 32753 failed: Connection refused
* Failed to connect to u***********u.myfritz.net port 32753: Connection refused
* Failed EPSV attempt. Disabling EPSV
* TLSv1.3 (OUT), TLS app data, [no content] (0):
> PASV
* TLSv1.3 (IN), TLS app data, [no content] (0):
< 227 Entering Passive Mode (92,218,125,113,230,160)
* Skip 92.218.125.113 for data connection, re-use u************u.myfritz.net instead
* Trying 92.218.125.113...
* TCP_NODELAY set
*** Connecting to 92.218.125.113 (92.218.125.113) port 59040**
* connect to 92.218.125.113 port 32753 failed: Connection refused
* Failed to connect to u**************u.myfritz.net port 32753: Connection refused
* Closing connection 0
* TLSv1.3 (OUT), TLS alert, [no content] (0):
* TLSv1.3 (OUT), TLS alert, close notify (256):
curl: (7) Failed to connect to upfamnsqwzodew4u.myfritz.net Port 32753: Connection refused
여기서 무슨 일이 일어나고 있는지 잘 모르겠습니다. EPSV 및 PAS 명령을 사용하면 FRITZ!Box가 새 포트(60770 / 59040)를 보내는 것처럼 보이지만 이전 포트에 연결됩니까?
서버 측에 문제가 있습니까, 아니면 클라이언트 측에 있습니까?
이 의사소통을 작동시킬 수 있는 방법이 있나요? 어쩌면 내 FRITZ!Box 설정을 통해서일까요?
cygwin을 사용하여 fritzbox에 도달하려고 시도했으며 결과는 다음과 같습니다.
$ curl -vvv --ftp-pasv --ssl -k -u speedITBackup 'ftp://u********u.myfritz.net:32753/Backup/Superfein/'
Enter host password for user 'speedITBackup':
* Trying 92.218.125.113:32753...
* connect to 92.218.125.113 port 32753 failed: Timed out
* Failed to connect to u*************u.myfritz.net port 32753 after 21110 ms: Timed out
* Closing connection 0
curl: (28) Failed to connect to u************u.myfritz.net port 32753 after 21110 ms: Timed out
답변1
내 안드로이드 TV와 fritzbox 3490에 x-plore가 설치되어 있습니다. 그리고 fritzbox smb ftp의 USB에 있는 HDD를 사용하여 TV에서 영화를 보았습니다.
갑자기 x-plore에서 ftp 연결까지의 시간 초과가 발생합니다. 왜 이런 일이 발생하는지 아시나요? 설정에서 아무것도 바꾸지 않았는데..
답변2
저는 FRITZ!Box 7520을 가지고 있고 FTP 서버도 실행하고 있습니다. 로컬 LAN뿐만 아니라 외부에서도 액세스하고 있습니다. Android에서 Total Commander + FTP 플러그인을 사용하고 있습니다. 저도 myFritz를 사용하고 있어요.
FTP에는 3가지 유형이 있습니다.
- 암호화되지 않은 FTP(여러 포트 사용)
- FTPS(보안 FTP, 여러 포트 사용)
- SFTP(SSH를 통한 FTP, 단일 포트 사용)
FRITZ!Box는 1과 2만 지원합니다. SFTP에는 포트가 하나만 필요하므로 이것이 방화벽에 있어서 가장 쉬운 옵션이기 때문에 안타깝습니다.
귀하의 컬 명령은 FTPS를 사용하고 있습니다. 연결할 수 있지만 파일 나열을 시도하면 수동 모드로 들어갈 수 없기 때문에 실패합니다.
다음 로그 라인은 의심스럽습니다.
*** Connecting to 92.218.125.113 (92.218.125.113) port 59040**
* connect to 92.218.125.113 port 32753 failed: Connection refused
포트 59040에서 연결을 시도한 다음 포트 32753에서 연결에 실패했다는 메시지가 표시됩니다. 나에게는 이것이 컬의 버그처럼 보입니다.
다음을 실행하세요:
curl --version
내 것은 7.74.0입니다. 이 버전에 가까운 모든 것이 허용됩니다. 운이 좋으면 컬만 업데이트하면 됩니다.
다음을 시도해 볼 수도 있습니다.
- 로컬 LAN에서 동일한 컬 명령을 사용하고 성공하는지 확인하십시오. 예를 들어 cygwin을 사용하여 Windows에서 실행할 수 있습니다.
- 성공하면 외부에서 시도해 보세요.
- 컬 대신 wget을 사용하세요
편집: 댓글에서 호스팅 업체가 49152에서 65534 사이의 나가는 포트를 차단한다고 말씀하셨습니다. 이러한 포트는 읽을 수 있듯이 동적, 개인 또는 임시 포트라고 합니다.위키피디아. 하지만 이 포트만 차단하고 다른 포트는 모두 허용하는 것이 합당한지 모르겠습니다.
아래 스크린샷은 FRITZ!Box FTP 설정을 보여줍니다. 패시브 모드 포트 변경은 불가능한 것 같습니다. 기본 포트만 변경할 수 있습니다.
문제를 해결하려면 다음을 수행하세요.
- 다른 호스팅 업체로 전환
- 프록시 사용(curl은 프록시를 지원함)
- FTP 서버를 실행하는 Raspberry Pi를 사용하십시오.
- 활성 모드 사용