패시브 모드로 작업할 때 pasv_max_port를 10100으로 설정하고 pasv_min_port를 10090으로 설정하면 VSFTP 서버가 동시에 10개의 클라이언트에만 서비스를 제공할 수 있다는 뜻인가요?
pasv_max_port와 pasv_min_port에 동일한 포트 번호를 설정할 수 있나요? 가능하다면 VSFTP 서버가 동시에 처리할 수 있는 클라이언트 수는 몇 개입니까? 하나만요?
답변1
단순화하려면, 나는 그렇다고 말하고 싶습니다. 그리고 그것이 당신이 그것을 고려하는 방법입니다(내 생각에는).
포트 범위를 제한하면 최소 및 최대 포트 수에 따라 동시 클라이언트 연결이 제한됩니다. 이렇게 하면 이상한 행동을 피할 수 있습니다.
그러나 이는 사실이 아니며 조정이 필요합니다 :-)
더 깊이 있고 더 정확하게 말하자면:포트 제한은 데이터 채널의 동시 사용에 영향을 줍니다..
새로운 연결 요청에는 사용 가능한 데이터 채널이 필요합니다.
데이터 채널을 사용하는 모든 FTP 명령에 대해 알지 못하지만 기본적으로 upload (STOR)
, download (RETR)
, list (LIST)
명령에는 데이터 채널이 필요합니다.
이를 설명하기 위해 내 vsftpd 서버와 다음 설정을 사용하여 실험실에서 테스트를 수행했습니다(재현 가능).
pasv_max_port=10100
pasv_min_port=10100
1. 첫 번째 테스트 :
- 나는 Client1과 연결한다: ok
- Client1이 아직 연결되어 있는 동안 Client2에 연결합니다. 확인
- Client1과 Client2가 계속 연결되어 있는 동안 Client3에 연결합니다. 확인
왜 ?
- Client1이 아무 작업도 하지 않고(유휴) 데이터 채널을 사용하지 않았기 때문에 Client2가 연결할 수 있었기 때문에 서버가 Client2에 포트를 할당했습니다.
- Client1과 Client2가 유휴 상태이고 데이터 채널을 사용하지 않았기 때문에 Client3이 연결할 수 있었기 때문에 서버가 Client3에 포트를 할당했습니다.
2. 두 번째 테스트 :
- Client1에 연결하고 파일 업로드를 시작합니다. : ok 파일 업로드 진행 중
- Client1 업로드가 계속 실행되는 동안 Client2에 연결합니다. 오류가 연결될 수 없습니다.
- Client1 업로드가 완료될 때까지 기다립니다.
- Client1 업로드가 완료되면 Client2에 연결할 수 있었습니다.
왜 ?
- Client1이 업로드를 위해 데이터 채널을 사용하고 있었기 때문에 Client2는 서버 측에 서비스를 제공할 수 있는 포트가 더 이상 없기 때문에 연결할 수 없었습니다.
- Client1 업로드가 완료되면 서버는 데이터 채널 포트를 확보하고 Client2는 이를 사용하여 연결할 수 있습니다.
3. 세 번째 테스트:
- 나는 Client1과 연결한다: ok
- Client1이 아직 연결되어 있는 동안 Client2에 연결합니다. 확인
- Client1에서 FTP 서버로의 업로드를 시작합니다. 확인 업로드 진행 중
- Client1 업로드가 계속 실행되는 동안 Client2에서 ftp 서버로의 업로드를 시작합니다. 오류 연결이 서버에 의해 닫혔습니다. 전송에 실패했습니다.
왜 ?
테스트 1과 테스트 2의 혼합:
- Client1이 아무 작업도 하지 않고(유휴) 데이터 채널을 사용하지 않았기 때문에 Client2가 연결할 수 있었기 때문에 서버가 Client2에 포트를 할당했습니다.
- Client2가 유휴 상태이므로 서버가 업로드를 위해 Client1에 포트를 할당했기 때문에 Client1은 파일을 업로드할 수 있습니다.
- Client1이 업로드를 위해 이미 데이터 전송 포트를 사용 중이므로 Client2는 파일을 업로드할 수 없습니다.
이제 내가 왜 처음에 "이상한" 행동에 대해 이야기했는지 이해하실 수 있을 것입니다.
그것이 도움이 되기를 바랍니다!