ftp服务器是使用比较平常的服务器,但是IP资源是有限的,那么怎么让内网的服务器給外网的用户提供服务了?
首先需要找一个FTP服务器程序,我在这边使用pure-ftpd-mysql ,这边使用-mysql版本是为了方便用户管理,同时通过数据库可以很好的和其中应用结合起来.
安装pure-ftpd-mysql
我使用的是ubuntu,所以安装没有从源码编译,直接 sudo apt-get install pure-ftpd-mysql .然后使用sudo service pure-ftpd-mysql start开启ftp服务器,这是它会打印一些启动时的配置参数.想看参数可以使用--h命令,可以使用pure-ftpd-mysql -h > help保存到文件,然后看文件.
参数:
-0 --notruncate
-1 --logpid
-4 --ipv4only
-6 --ipv6only
-8 --fscharset <opt>
-9 --clientcharset <opt>
-A --chrooteveryone
-a --trustedgid <opt>
-b --brokenclientscompatibility
-B --daemonize
-C --maxclientsperip <opt>
-c --maxclientsnumber <opt>
-d --verboselog
-D --displaydotfiles
-e --anonymousonly
-E --noanonymous
-f --syslogfacility <opt>
-F --fortunesfile <opt>
-g --pidfile <opt>
-G --norename
-h --help
-H --dontresolve
-I --maxidletime <opt>
-i --anonymouscantupload
-j --createhomedir
-K --keepallfiles
-k --maxdiskusagepct <opt>
-l --login <opt>
-L --limitrecursion <opt>
-M --anonymouscancreatedirs
-m --maxload <opt>
-N --natmode
-n --quota <opt>
-o --uploadscript
-O --altlog <opt>
-p --passiveportrange <opt>
-P --forcepassiveip <opt>
-q --anonymousratio <opt>
-Q --userratio <opt>
-r --autorename
-R --nochmod
-s --antiwarez
-S --bind <opt>
-t --anonymousbandwidth <opt>
-T --userbandwidth <opt>
-U --umask <opt>
-u --minuid <opt>
-V --trustedip <opt>
-w --allowuserfxp
-W --allowanonymousfxp
-x --prohibitdotfileswrite
-X --prohibitdotfilesread
-y --peruserlimits <opt>
-Y --tls <opt>
-J --tlsciphersuite <opt>
-z --allowdotfiles
-Z --customerproof
下面怎么控制用户访问,到/etc/pure-ftpd/db下,然后配置mysql.conf文件,mysql的IP,Port,user,password,database,然后是进行验证的sql语句,我的表是我users,其中有三个字段,用户名,密码,用户登录后的目录,UID和GID默认的是1000.
现在你在浏览器中,输入ftp://127.0.0.1,输入数据库中的保存的数据就可以登录了.
下面对ftp配置,配置文件在/etc/pure-ftpd/conf,其一个配置项为一个文件,默认有AltLog MinUID NoAnonymous PureDB
FSCharset MySQLConfigFile PAMAuthentication UnixAuthentication
其实文件名就是-h命令打印的参数全名.比如-p参数--passiveportrange,先建一个PassivePortRange文件,注意文件名,小写不认的.
内容为45000 50000,标识被动模式的端口范围,在不需要客户端有任何变化情况下访问内网的ftp,使用被动是最好的,有兴趣可以看看主动和被动的区别.
重新启动ftp
可以看到-p参数有效果了.那么怎么让外网访问,需要将21端口和45000~50000端口映射到路由器上的端口,ip为你内网的地址.进入路由器,转发规则,虚拟服务器
现在使用外网登录
ok,搞定收工