完整配置
listen=yes listen_port=21 max_clients=100 max_per_ip=10 local_max_rate=5120000 anonymous_enable=no local_enable=yes write_enable=no chroot_local_user=yes chroot_list_enable=yes chroot_list_file=/etc/vsftpd/chroot_list guest_enable=yes guest_username=kingsoft virtual_use_local_privs=yes user_config_dir=/etc/vsftpd/user_config pasv_enable=yes pasv_min_port=4500 pasv_max_port=5000 tcp_wrappers=yes xferlog_enable=yes xferlog_file=/var/log/ftp/vsftpd.log idle_session_timeout=600 data_connection_timeout=120 accept_timeout=60 connect_timeout=60 connect_from_port_20=no local_umask=022 pam_service_name=vsftpd.vu pasv_address=本機ip pasv_addr_resolve=yes
說明:
主動模式
Port_enable=YES 開啟主動模式 Connect_from_port_20=YES 當主動模式開啟的時候 是否啟用默認的20端口監聽 Ftp_date_port=%portnumber% 上一選項使用NO參數是 指定數據傳輸端口
被動模式 PASV_enable=YES 開啟被動模式 PASV_min_port=%number% 被動模式最低端口 PASV_max_port=%number% 被動模式最高端口
iptables中開放這段端口
service iptables start 打開防火牆
iptables -I INPUT -p tcp --dport 10020:10040 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 21 -j ACCEPT
在被動模式,服務器做了NAT,例如雲主機,這時候我們用特定的IP訪問機器,其實還轉了一層。FTP客戶端訪問機器可能會沒響應。具體情況為登錄成功,但是list目錄和文件的時候卡住。
這時候我們用lsof -i:21
vsftpd 22411 nobody 0u IPv4 68905 0t0 TCP 10.140.41.65:ftp->10.10.10.98:43380 (ESTABLISHED) vsftpd 22411 nobody 1u IPv4 68905 0t0 TCP 10.140.41.65:ftp->10.10.10.98:43380 (ESTABLISHED)
這時候可以看到機器的真正IP。
我們需要設置
pasv_address=本機ip【就是我們能訪問的外網IP】
pasv_addr_resolve=yes
這樣ftp客戶端就可以解析IP,訪問成功