인터넷을 자주 사용하다 보면 자체 서버에 파일을 올리고 내려받을 수 있는 사이트를 한 번쯤은 접하게 됩니다. 여기서 말하는 것은 HTTP(하이퍼텍스트 전송 프로토콜)를 통해 파일을 업로드·다운로드하는 일반적인 파일 공유 사이트가 아니라, FTP(File Transfer Protocol)라는 특수한 프로토콜을 사용하는 사이트입니다. FTP는 인터넷을 통해 컴퓨터 간에 파일을 전송하기 위해 특별히 설계된 프로토콜로, 대용량 파일이나 다수의 파일도 끊김 없이 전송할 수 있으며, 가능한 경우 업로드·다운로드 재개 기능까지 지원합니다.
이 튜토리얼은 웹 서버에 FTP 서버를 구축하는 방법이 아니라, 집에 있는 개인 컴퓨터를 FTP 서버로 만들어 원격지에서 파일을 업로드하고 다운로드하는 방법을 다룹니다. 친구나 가족을 위한 계정을 만들어 파일을 공유할 수도 있습니다. 민감한 데이터를 인터넷에 절대 올리고 싶지 않을 때 특히 유용하며, FTP는 승인된 사용자들 사이에서만 데이터가 유지되도록 보장해 줍니다.
Windows용 FTP 서버 프로그램은 많지만 대부분 가격이 비싸거나 무료 버전의 기능이 크게 제한적입니다. 그래서 이 글에서는 FileZilla FTP Server를 선택했습니다. 수많은 기능 중에서도 특히 마음에 드는 것은 직관적인 사용자 관리 인터페이스와 사용자별 권한 할당 기능입니다. 그룹과 사용자를 손쉽게 만들고 읽기/쓰기 권한을 지정할 수 있으며, 권한 체계는 고급 옵션과 함께 리눅스 권한 시스템과 매우 유사합니다.
동적 IP 설정하기
먼저 모든 가정용 사용자가 직면하는 문제, 즉 고정 IP가 없다는 점을 해결해야 합니다. IP는 컴퓨터에 연결된 네트워크 주소입니다. 대부분의 인터넷 서비스 제공업체(ISP)는 가정용 사용자에게 고정 IP를 제공하지 않습니다. 고정 IP가 없다면 인터넷 공유기를 재시작할 때마다 서버 주소를 변경해야 하는 불편함이 생깁니다. 이 문제를 해결하기 위해 동적 DNS 서비스를 활용합니다. No-IP는 아주 기본적이지만 무료로 제공되는 동적 DNS 서비스로, 우리 목적에 충분히 부합합니다.

No-IP.com에 접속해 무료 계정을 만듭니다. 계정이 완전히 활성화되면 Windows용 No-IP 동적 업데이트 클라이언트를 다운로드합니다. 업데이트 클라이언트 설치는 매우 간단하며 별도의 사용자 입력이나 수동 설정이 필요하지 않습니다.
Windows 시작 메뉴에서 No-IP 동적 업데이트 클라이언트를 실행하면 등록한 이메일 주소와 비밀번호를 입력하라는 메시지가 나타납니다. 로그인 후에는 컴퓨터의 호스트 이름을 생성해야 합니다. 호스트 이름을 입력하고 호스트 유형은 DNS Host(A)로 선택한 뒤 나머지 옵션은 기본값으로 두고 Create Host 버튼을 클릭합니다. 설정이 전파되는 데 약 1분 정도 소요됩니다.

이제 No-IP에서 제공한 호스트 이름으로 언제 어디서나 컴퓨터에 접근할 수 있습니다. 필자의 경우 sanix.serveftp.com입니다.

FTP 서버 설치하기
동적 DNS 서비스 설정을 마쳤다면 이제 FileZilla FTP 서버를 다운로드할 차례입니다.
설치 과정에서 FTP 서버와 함께 설치할 구성 요소를 선택해야 합니다. 설치 유형은 Standard(표준)로 유지하는 것을 권장합니다. 설치 과정에서 또 하나 중요한 부분은 FileZilla 서버 관리 인터페이스의 포트 선택입니다. 기본 포트는 14147이며, 이 튜토리얼에서는 기본값을 그대로 사용하지만 필요하다면 1024~65535 사이의 값으로 자유롭게 변경할 수 있습니다.
Windows 시작 시 FTP 서버가 함께 실행되길 원한다면 "서비스로 설치하여 Windows 시작 시 자동 시작" 옵션을 선택하세요. 그렇지 않다면 수동 옵션을 선택하면 되지만, Windows를 재시작할 때마다 서버를 직접 시작해야 합니다.

설치가 완료되면 시스템 트레이에서 FileZilla 서버 아이콘을 찾을 수 있습니다. 아이콘을 더블클릭하면 설정 화면에 접근할 수 있습니다.

"Connect to Server" 대화 상자가 나타납니다. 관리자 비밀번호를 설정하고 싶다면 여기에 비밀번호를 입력한 뒤 다른 설정은 그대로 두고 OK를 클릭합니다.

FTP 서버 구성하기
이제 실제 FTP 서버를 구성하며 본격적인 작업이 시작됩니다. 먼저 그룹을 생성합니다. 그룹을 사용하면 사용자를 효율적으로 관리할 수 있으며, 그룹에 적용한 권한과 제한 사항은 해당 그룹의 모든 사용자에게 일괄 적용됩니다. 새 그룹을 만들려면 "Edit 메뉴 → Groups"로 이동한 뒤 Groups 아래의 Add 버튼을 클릭합니다.

첫 번째 그룹을 만들었다면 이제 이 그룹에 사용자를 추가합니다. "Edit 메뉴 → Users → Add"로 이동해 사용자를 추가합니다.

OK를 클릭하면 계정 설정에서 각 사용자의 비밀번호를 생성할 수 있습니다.

그룹 또는 개별 사용자마다 공유할 폴더를 다르게 지정할 수 있습니다. 그룹에 새 폴더를 추가하려면 "Edit 메뉴 → Groups → Shared folders"로 이동합니다. Add 버튼을 클릭해 해당 그룹의 공유 폴더를 만들고, 생성된 폴더에 대해 그룹별로 세부 권한을 설정할 수 있습니다. 파일 권한은 다음과 같습니다.
파일 권한
- 읽기(Read)
- 쓰기(Write)
- 삭제(Delete)
- 추가(Append)
폴더 권한
- 생성(Create)
- 삭제(Delete)
- 목록 보기(List)
- 목록 + 하위 폴더(List + Sub-folders)

여기까지가 가정용 컴퓨터에 기본적인 FTP 서버를 구축하는 데 필요한 전부입니다. Edit 메뉴의 고급 설정도 함께 살펴보시기 바랍니다. 참고로 네트워크 사용자가 FTP 서버에 접근하려면 서버가 Active 모드로 설정되어 있어야 합니다. FTP 서버 접근을 일시적으로 제한하고 싶다면 서버 메뉴에서 Lock 옵션을 선택해 서버를 잠그면 됩니다.
FTP 서버에 접속하기
모든 설정이 완료되고 FTP 서버가 활성화되면 네트워크상의 다른 컴퓨터에서 로컬 IP 주소를 사용해 FTP 서버에 접속할 수 있습니다. 인터넷을 통한 원격 접속이 필요하다면 이 튜토리얼 초반에 설정한 동적 DNS 주소를 사용하면 됩니다. 주소 형식은 다음과 같습니다: username.no-ip.com:21. 관리 포트 번호는 서버 수신(listening) 포트와 다르다는 점에 유의하세요. 수신 포트는 클라이언트가 서버에 접속할 때 사용하는 포트로, 기본값은 21입니다. 옵션에서 변경할 수 있지만, 어떤 포트를 선택하든 방화벽에서 해당 포트가 열려 있어야 컴퓨터 간 통신이 원활합니다. 관리 포트는 오직 FTP 서버 관리 목적으로만 사용되며 외부에는 노출되지 않습니다.
이 가이드를 통해 가정용 컴퓨터에 자신만의 FTP 서버를 성공적으로 구축하실 수 있기를 바랍니다.
이미지 출처: Multiple Wired To Ftp by Big Stock Photo.