siklog
[Server/FTP] FTP Active, PassiveMode 차이점 본문
FTP(File Transfer Protocol)는 이름 그대로 원격지의 서버에 필요한 파일을 올리기 위한 도구로,
인터넷 망으로 연결되어 있는 멀리 떨어져 있는 서버로 파일을 올리거나 가져오기 위해 필요한 일종의 프로토콜이다.
서버를 사용해본 사람들이라면 FTP를 이용해본 경험이 있는 사람이 대부분일 것이라고 생각하고 그만큼, 많이 사용되는 서비스이다.
FTP는 Active, Passive 두 가지 모드가 있는데 이번 포스팅은 Active, Passive 두 가지 모드에 대해 작성해 보려고 한다.
Step 1. FTP 모드
먼저 Active, Passive 두 가지 모드를 간략하게 알아보면, 다음과 같다.
Active Mode에서는 아래와 같이 동작하게 된다.
1. 모든 클라이언트에서 서버측 포트로 접속을 시도하고 클라이언트가 사용할 두번째 포트를 서버에 알려 준다. (아래 그림에서는 21번이 서버측 포트)
2. 서버는 클라이언트에게 ack를 보내고 서버의 20번 데이터 포트는 클라이언트가 알려준 두번째 포트로 접속을 시도.
# 문제점 : 일반적인 TCP/IP의 특징인 클라이언트가 서버에 접속을 시도하는 것이 아니라 서버 --> 클라이언트로 접속을 시도.
이 때문에 만약 클라이언트 PC등에 방화벽이나 공유기가 있어 외부에서 접속을 허용하지 않는 다면,
서버(20번포트) ---> 클라이언트(1024~65535포트)의 접속이 정상적으로 되지 않아 FTP 로그인은 되지만
데이터 전송 및 디렉토리,파일 리스트를 받지 못하는 문제가 발생하게 된다.
Passive Mode에서는 아래와 같이 동작하게 된다.
1. 모든 클라이언트에서 서버측 21번 포트로 접속(login)을 시도한다.
2. 서버는 클라이언트에게 서버에서 사용할 두번째 포트(1024~65535포트)를 알려준다.
3. 클라이언트는 다른 포트를 열어 서버가 알려준 이 포트로 접속을 시도하고 데이터를 전송
# 문제점 : 서버에서 클라이언트가 접속할 수 있도록 1024~65535 사이의 포트를 개방해야 하는 문제점이 발생.
하지만 대부분의 FTP프로그램에서 passive 접속 범위를 제한 할 수 있는 기능이 있어, 1024~65535 포트중
일부 포트만 선택하여 사용 할 수 있게 되었다. 따라서, 방화벽에서는 해당 포트만 개방하면 된다.
Step 2. FTP 연결 방식에 따른 Port 사용 주의 사항
Active Mode
액티브 모드는 클라이언트의 20번 포트에 연결할 수 없다면 데이터 채널을 연결할 수 없다.
따라서 액티브 모드에서 방화벽 설정으로 서버 측 20번 포트에 아웃바운드 허용, 클라이언트 측에는 인바운드 허용을 해주어야 한다.
Passive Mode
패시브 모드는 방화벽에서 서버측에서 사용하는 데이터 채널의 포트에 대해 인바운드 허용 설정이 필요하다.
별도의 설정을 하지 않으면 설명한 바와 같이 1024 이후의 모든 포트를 사용하게 되어 모든 포트에 대해 인바운드 허용 설정이 필요하게 된다.
따라서 서버 측에서 데이터 채널 포트 범위를 지정해 특정 범위의 포트만 인바운드를 허용해 줘야한다.
Step 3. 클라우드 환경에 구성 시 오류와 해결 방법
클라우드 환경에서 구성한다고 크게 다를 건 없다.
다만, 클라우드 환경에서 FTP 서버를 구성할 때 접근제어 규칙이 허용이 되어 있음에도 아래와 같은 경고 문구로 접속이 안되는 경우가 있을 수 있다.
원인은 ftp 서버가 공유기에 연결되어있기 때문에(NCP 서버, AWS EC2에서도 동일한 문제 발생) ftp 클라이언트에게 사설 ip 주소를 보낸다.
아래 사진과 같이 ftp 클라이언트는 분명 111.111.111.111이라는 ip로 요청을 보냈는데 응답이 192.168.219.101(사설 ip)로 돌아왔기 때문에 오류가 났고 해결 방법은 ftp서버 vsftpd 설정 파일에 공인 ip를 추가 후 재시작하면 된다.
'클라우드 > NCP' 카테고리의 다른 글
[NCP/Load Balancer] LB 내 바인딩된 Target VM에서 동일 LB로 재호출하는 경우 (0) | 2022.08.31 |
---|---|
[NCP/Security] ACG, NACL 설정 간 유의할 사항 (0) | 2022.08.16 |
[NCP/Containers] NKS 생성 및 접근 방법 (0) | 2022.05.17 |
[NCP/Security] NCP CDN Security Token 발급 및 사용 방법 (0) | 2022.05.09 |
[NCP/Certificate Manager] 외부 SSL 인증서 등록 방법(feat. Let's Encrypt) (0) | 2022.04.24 |