FTP 개요
파일을 송수신하기 위한 프로토콜 대용량 파일 전송에 적합
Port : TCP / Control 21, Data 20 (Active mode)
Active 모드 :
Data 전송 시 Server(port : 20)에서 Client(port: random)으로 접속한다
Client의 포트가 random이기 때문에 방화벽 설정이 힘들다. 그래서 응용프로그램으로 허용
Passive 모드 :
Data 전송 시 Client(port: random)에서 Server(port: 지정)으로 접속한다
Server의 포트를 고정하여 사용할 수 있으므로 방화벽 설정 용이
전송 과정
1. 접속 및 인증 : Active, Passive 동일
Client(port : random) 가 Server(port : 21)에 연결 -> 배너 출력 및 사용자 인증
평문형 FTP의 경우 ID, Password 노출됨
2-1. 데이터 전송 (Active mode)
Client가 Server에 자신이 사용할 아이피 및 포트 전달
port = request arg[-2] * 256 + request arg[-1]
Server(port : 20) 가 Client(port: random) 에 연결
데이터 전송
2-2 데이터 전송 (Passive mode)
Client가 Server에 Passive mode 요청
Server가 Client에 사용할 아이피 및 포트정보 응답
Client(port: random)가 Server(port : 지정)에 연결 - 여기서는 65000~65100사용
데이터 전송
VMware NAT 환경에서의 문제
VMware NAT 환경에서는 설정을 분명 잘 했는데 FileZilla에서 로그인 까지만 되고, 파일 목록이 안나오고 다운로드가 안될텐데 VMware NAT 에서 FTP 패킷내의 패시브 포트 정보를 바꾸기 때문이다
Host 의 방화벽은 21, 60000~60010만 허용되어 있기 때문에 dst_port 51599의 패킷은 막혀 버린다.
해결 방법 1
VMware에서 포트를 랜덤으로 바꾸니 Host PC의 방화벽을 꺼버리면 된다. (실습시만 사용, 비추천)
방화벽을 끈 후 접속 확인
해결 방법 2
Vmware의 NAT 가 문제이므로 NAT를 다른걸 쓴다.
FTP guest의 NIC를 hostonly로 바꾸고, Centos7 guest를 hostonly, bridge로 설정하고
Centos7에 iptables 마스커레이딩 설정하여 NAT 방화벽으로 사용한다.
포트 정보를 확인해보면 정상적으로 보이는데,
전과 같이 파일목록 조회 및 다운로드가 안된다. 하지만 처음과는 원인이 다르다.
패킷 내 Passive IP address가 내부망인 10.0.1.2로 되어 있어 파일질라를 사용하는 외부 서버가 찾아 올 수 없기 때문이다.
10.0.1.12 를 찾을 수 있도록 라우팅 추가
접속 확인
포트번호 정상 확인
이렇게 해결해도 문제는 있다.
만약 Client 쪽에서 이미 10.0.1.0 대역을 사용중이라면 static 라우팅 설정 시 기존 10.0.1.0 대역과의 통신에 문제가 생긴다.
NAT 환경인데 윈도우 내장 FTP는 정상 동작하는 이유
위 실습 시 파일질라에서는 조회, 다운로드가 불가능한데 윈도우 내장 FTP는 정상으로 보인다.
cmd로 접속 시 200 PORT command successful. Consider using PASV 가 나오지만 사실
내장 FTP 프로그램은 Active 모드로 동작하고, 이전 실습때 방화벽에서 ftp.exe를 허용 해놨기 때문이다.
Client에서 Server로 Request, 3 way handshake 를 먼저 보냄을 확인 할 수 있다.
quote pasv 명령어로 passive 모드로 설정할 수 있다는데 request만 나가고 계속 active로 동작 한다.
'IT > Network' 카테고리의 다른 글
Cisco 장비 기본 설정 (Packet Tracer) (0) | 2022.12.02 |
---|---|
DNS (Domain Name System) (0) | 2022.11.22 |
DHCP (Dynamic Host Configuration Protocol) (0) | 2022.11.15 |