2013-01-03 10 views
-1

방화벽 뒤에 수동으로 ftp/TLS 서버로 작동하도록 pureftpd를 구성하려고합니다. 연기 기계 :PureFtpd 수동 포트 범위가 수신 대기 주소를 클라이언트에 전달하지 않습니다.

  • 서버 : 192.168.3.220는 (내부 네트워크가 192.168.3.1에서 라우터에 기본 경로) 구성 : PassivePorts 64000 64300와 pureftpd이 MasqueradeAddress의 ww.xx.yy.zz (이 하나가 라우터 : 내부 : 192.168.3.1, DNAT 규칙 (PREROUTING 체인) ww.xx.yy.zz tcp/21,64000 : 64300 192.168.3.220 주소로 NATed,이 패킷을 양방향으로 허용하는 FORWARD 체인.
  • 클라이언트 1 : 신도 기계 어딘가에 - 192.168.5.x 네트워크

시나리오 1에 :

  • 클라이언트 2 고정 공인 IP와 외부 서버 서버에서 227 :

    - Client1: connect OK, login OK, command 'ls': 
    gets OK, after PASV: 
    
    ---> PASV 
    GNUTLS: REC[0x28ecce0]: Sending Packet[9] Application Data(23) with length: 6 
    GNUTLS: REC[0x28ecce0]: Sent Packet[10] Application Data(23) with length: 37 
    GNUTLS: ASSERT: gnutls_buffers.c:322 
    GNUTLS: ASSERT: gnutls_buffers.c:322 
    GNUTLS: REC[0x28ecce0]: Expected Packet[9] Application Data(23) with length: 65536 
    GNUTLS: REC[0x28ecce0]: Received Packet[9] Application Data(23) with length: 64 
    GNUTLS: REC[0x28ecce0]: Decrypted Packet[9] Application Data(23) with length: 31 
    <--- 200 Protection set to Private 
    ---> LIST 
    ---> ABOR 
    

    흥미로운 것은 내가 pureftpd의 편집 로그에서 볼 수 있듯이 클라이언트에서는 보이지 않는다. - 개인 보호로 설정 한 200 보호 만 ... ACTIVE (!!) 모드 -> ls

    을 사용하여 cca 30sec 대기하고 다시 연결합니다.

    시나리오 2 :

    - using Client2 (sorry for czech locales): 
    ---> USER xxxxxx 
    <--- 331 Password required for xxxxxx 
    ---> PASS XXXX 
    <--- 230 User xxxxxx logged in  
    ---> PWD 
    <--- 230 Ls oi a:2013-01-03 21:19:00 
    ---> PBSZ 0 
    <--- 257 "/" is the current directory 
    ---> PROT P 
    <--- 200 PBSZ 0 successful 
    ---> PASV 
    <--- 200 Protection set to Private 
    ---> LIST 
    ---> ABOR 
    ---- Přerušený datový socket bude uzavřen (means closing data socket) 
    ---- Řídicí socket bude uzavřen (means closing control socket) 
    ---- Pasivní režim bude vypnut (means Passive will be turned off) 
    ---- dns cache hit          
    ---- Navazuje se spojení na ftp1.xxxxxxxxx.cz (ww.xx.yy.zz) port 21 
    <--- 220 ww.xx.yy.zz FTP server ready 
    

    ... NAT를 컴퓨터에

    ---> USER xxxxxx 
    <--- 331 Password required for xxxxxx 
    ---> PASS XXXX 
    <--- 230 User xxxxxx logged in  
    ---> PWD 
    <--- 230 Ls oi a:2013-01-03 21:19:22 
    ---> PBSZ 0 
    <--- 257 "/" is the current directory 
    ---> PROT P 
    <--- 200 PBSZ 0 successful 
    ---> PORT 192,168,5,xx,185,136 
    <--- 200 Protection set to Private 
    ---> LIST 
    <--- 500 Illegal PORT command 
    ---- Closing data socket 
    ---> QUIT 
    ls: Nepřekonatelná chyba: 500 Illegal PORT command 
    <--- 425 Unable to build data connection: Connection refused 
    

    의 iptables 포트 64000에 내 회계 카운터를 증가하지 않는 : 64300, 그래서 내가 만든 어떤 수동 연결이 없습니다 기대 조금도.

  • +0

    아마도 하나 이상의 덧글 : 라우터의 WAN 인터페이스에 더 많은 IP 주소가 있습니다. 시나리오 1에서 활성 연결이 작동하면 ww.xx.yy.zz : 20에서는 아니지만 aa.bb.cc.dd : 45678 (마스 쿼 레이 딩 된 것)입니다. 방화벽에서 SNAT 규칙에 따라이 문제를 해결할 수 있습니다. 패킷을 192.168.3.220에서 ww.xx.yy.zz로 SNATting 할 수 있지만 수동 연결에는 영향을 미치지 않습니다. 권리? 어떤 힌트 주셔서 감사합니다. – tloudev

    답변

    0

    그래서 ... 진짜 문제는 두 번째 230 응답했다 :

    ---> PWD 
    <--- 230 Ls oi a:2013-01-03 21:19:22 
    

    이 이 솔루션은 위지에서 PureFTPd를 컴파일 PureFTPd의 1.3.3a의 알려진 문제 (기본 데비안 스퀴즈)이었다한다 (1.3.4a-2) 이제 모든 것이 잘 작동합니다. 무슨 일이 일어나고 있는지 알아 내려고 고맙습니다. Tldv