无法从公网 IP 访问 vsftpd

无法从公网 IP 访问 vsftpd

我正在尝试在 ubuntu 上设置 vsftpd

我已经安装成功了 vsftpd

我的网络工作原理如下

主机上的 Lan 网络(localhost,127.0.0.1,192.168.1.105)-> 连接到路由器(192.168.1.1(LAN)-> 10.255.1.204(WAN))-> 连接到 ISP(10.255.1.1 -> DNS -> 106.34.26.78(公网 IP))。(注意:使用的 IP 地址仅用于说明,并非真实 IP)

我已经在路由器上启用了端口转发,它会将所有对端口 21 的请求重定向到正在运行 vsftp 守护进程的本地计算机。

我能够从我的内部 LAN 地址和连接到 ISP 的接口(即 10.255.1.204)访问 ftp。但是我无法从我的公共 IP 地址(即 106.34.26.78)访问它,我收到以下消息:

Status: Connecting to 106.34.26.78:21...
Status: Connection established, waiting for welcome message...
Response:   220 (vsFTPd 3.0.2)
Command:    AUTH TLS
Error:  Connection timed out after 20 seconds of inactivity
Error:  Could not connect to server

我的 vsftpd.conf(/etc/vsftpd.conf)

listen=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
local_root=/var/www
chroot_local_user=YES
allow_writeable_chroot=YES
hide_ids=YES

#virutal user settings
user_config_dir=/etc/vsftpd_user_conf
guest_enable=YES
virtual_use_local_privs=YES
pam_service_name=vsftpd
nopriv_user=vsftpd
guest_username=vsftpd

我的 vsftpd(/etc/pam.d/vsftpd)

auth required pam_pwdfile.so pwdfile /etc/vsftpd/ftpd.passwd
account required pam_permit.so

我为此苦思冥想了一个月,找到了几篇文章,但它们都与使用公共 IP 访问无关。

编辑

我还在端口 20 上启用了端口转发。

答案1

从你的网络设置来看,你的问题可能是发夹型NAT

此外,你似乎尝试与AUTTH TLS命令,但你没有任何参考来启用 TLS 支持vsftpd.conf

虽然对于不同的 FTP 服务器也读取这个答案关于 FTP over TLS 和 NAT 的潜在问题。

答案2

我最终通过启用 ssl 并在 vsftpd.conf 中注释几行以允许系统用户而不是使用 pam.d 定义的用户来解决这个问题。

我现在可以访问 sftp(我非常怀疑我的 ISP 是否在 21 上阻止了访问,无论如何它给了我更安全的访问),从外部网络使用以下 /etc/vsftpd.conf

listen=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
local_root=/var/www
chroot_local_user=YES
allow_writeable_chroot=YES
hide_ids=YES

#virutal user settings
user_config_dir=/etc/vsftpd_user_conf
#guest_enable=YES
virtual_use_local_privs=YES
#pam_service_name=vsftpd
#nopriv_user=vsftpd
#guest_username=vsftpd

rsa_cert_file=/etc/ssl/private/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.pem

ssl_enable=YES
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES

ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO

require_ssl_reuse=NO
ssl_ciphers=HIGH

start on (filesystem
        and net-device-up IFACE!=lo)

希望它能帮助将来遇到同样问题的人。

相关内容