FTP는 서버와 서버(또는 로컬 호스트)간의 파일을 주고 받을 수 있는 파일 전송 프로토콜입니다. 일반적으로 FTP 서버가 열려있다면 FileZilla나 Xftp와 같은 FTP 클라이언트를 통하여 서버 내 파일 시스템에 접근할 수 있습니다.
이 때 업로드 또는 다운로드를 하는 데에 있어서 아래와 같은 문제점이 발생할 수 있습니다.
- 같은 내부 네트워크에서 여러 사람이 동시에 하나의 서버에 접속하는 구조인 경우 (사용량이 많은 경우)
- 서버의 네트워크 전송 속도가 원활하지 않을 때 다른 서비스에 영향을 끼칠 수도 있는 경우
- 용량이 작은 여러 파일을 동시에 업로드/다운로드해야 할 경우
위 경우에 대해서 무리한 전송 작업이 진행될 경우 자칫하다 서버에 네트워크 부하를 일으킬 수 있으므로 관리자가 서버 내에서 파일 전송에 대한 대역폭을 제한해야 할 수 있습니다.
Linux FTP 대역폭 제한 방법
일반적으로 대역폭 설정은 FTP 클라이언트의 설정에서 제한하실 수 있습니다. 서버 설정을 건드리지 않고 클라이언트 업로드 및 다운로드 속도를 조정하는 것이며 추후에 서버를 다시 설정해야 할 일이 없으므로 이 방법을 사용하는 것을 권장합니다.
FileZilla를 기준으로 ‘메뉴 모음 – 편집 – 설정 – 전송 – 속도 제한’ 부분에서 아래와 같이 설정하실 수 있습니다.
만약 본인이 사용하고 계시는 FTP 클라이언트에서 위 옵션을 지원하지 않는 경우, vsftpd 데몬 설정을 변경하여 강제로 대역폭을 제한하실 수 있습니다.
(참고 : SFTP 프로토콜은 아래 방법을 사용하실 수 없습니다.)
대역폭을 제한할 서버에 로그인한 후 /etc/vsftpd/vsftpd.conf 파일을 편집합니다. (일부 리눅스 배포판에 따라서 vsftpd.conf 파일의 위치가 다를 수 있습니다.)
$ sudo vim /etc/vsftpd/vsftpd.conf
편집기가 열리면 아래 내용을 추가합니다.
anon_max_rate=10000000 # 익명 사용자 (0=무제한) local_max_rate=0 # 로그인한 사용자 (0=무제한)
여기서 anon_max_rate는 익명의 사용자를 뜻하고, local_max_late는 계정으로 로그인된 사용자를 의미합니다. 값은 바이트(Byte) 단위로 입력해주셔야 하며 0일경우 속도에 제한을 주지 않게 됩니다. (즉, vsftpd의 기본 값으로 지정됩니다.)
만약 익명의 사용자에게 대역폭을 제한하고 싶다면 anon_max_rate=1000000 (1MB)로 설정해주시면 됩니다.
적용이 완료되었다면 파일을 저장한 후 vsftpd 서비스를 재시작해주셔야 합니다.
$ sudo service vsftpd restart (또는 sudo systemctl restart vsftpd)