下面我将为您提供两种最主流的 FTP 服务器方案:vsftpd(非常安全的 FTP 守护进程)和 ProFTPD,并附上详细的配置步骤和安全建议。

使用 vsftpd (推荐)
vsftpd 是一个轻量级、高性能且非常安全的 FTP 服务器,是 OpenWrt 官方软件源中提供的首选方案。
安装 vsftpd
通过 SSH 登录到您的 OpenWrt 路由器。
更新软件包列表并安装 vsftpd:
opkg update opkg install vsftpd
创建 FTP 用户
FTP 服务器需要一个专门的系统用户来隔离其访问权限,我们不建议使用 root 用户。

-
创建一个新用户,
ftpuser,您需要设置一个密码。adduser ftpuser
系统会提示您设置密码和用户信息,一路回车使用默认值即可。
-
为
ftpuser创建一个用于存放 FTP 文件的目录,我们通常放在/home/ftpuser/ftp目录下。mkdir -p /home/ftpuser/ftp
-
设置目录的所有权,确保
ftpuser对该目录有完全的读写权限。
(图片来源网络,侵删)chown -R ftpuser:ftpuser /home/ftpuser/ftp
配置 vsftpd
配置文件位于 /etc/vsftpd.conf,我们先备份原文件,然后进行编辑。
cp /etc/vsftpd.conf /etc/vsftpd.conf.bak vi /etc/vsftpd.conf
或者使用 nano 编辑器:nano /etc/vsftpd.conf
打开文件后,确保以下配置项存在或被修改为以下值,您可以保留文件中其他未提及的配置项不变。
# 禁止匿名登录 anonymous_enable=NO # 允许本地用户登录 local_enable=YES # 允许对文件系统进行写操作 write_enable=YES # 用户被限制在自己的家目录中 (chroot) chroot_local_user=YES # 当用户被 chroot 时,不允许他有写权限 (为了安全) # 我们需要把它设为 NO,才能让用户在自己的目录里上传文件 allow_writeable_chroot=YES # 指定用户登录后的根目录 # 这是一个重要的安全特性,将用户限制在指定目录 local_root=/home/ftpuser/ftp # 启用被动模式 (强烈推荐,因为主动模式通常会被路由器或防火墙阻止) pasv_enable=YES pasv_min_port=10090 pasv_max_port=10095 # 设置欢迎信息 ftpd_banner=Welcome to OpenWrt FTP Service.
配置解释:
pasv_min_port和pasv_max_port:定义了被动模式使用的端口范围,稍后我们需要在防火墙中开放这个端口范围。allow_writeable_chroot=YES:这是一个现代vsftpd的安全选项,允许在受控的 chroot 环境中进行写入操作。
配置防火墙
为了能从外部网络访问 FTP 服务器,您需要配置 OpenWrt 的防火墙(firewall)。
-
编辑防火墙配置文件
/etc/config/firewall:vi /etc/config/firewall
-
在
config zone部分找到您的lan区块(通常是第一个zone),在list options中添加ftp和related established。config zone option name 'lan' option input 'ACCEPT' option output 'ACCEPT' option forward 'ACCEPT' # 在下面添加这两行 list options 'ftp' list options 'related established' -
在文件的末尾添加一个规则,以开放我们在
vsftpd.conf中设置的被动模式端口范围(10090-10095):# 在文件末尾添加 config rule option name 'Allow-FTP-Passive' option src 'lan' option dest_port '10090 10091 10092 10093 10094 10095' option proto 'tcp' option target 'ACCEPT'或者更简洁的写法:
config rule option name 'Allow-FTP-Passive' option src 'lan' option dest_port '10090-10095' option proto 'tcp' option target 'ACCEPT' -
保存文件后,重启防火墙使配置生效:
/etc/init.d/firewall restart
启动并设置开机自启
# 启动 vsftpd 服务 /etc/init.d/vsftpd start # 设置开机自启 /etc/init.d/vsftpd enable
访问 FTP 服务器
您可以从局域网内的任何一台电脑上访问 FTP 服务器了。
- 地址:
ftp://<您的OpenWrt路由器IP地址> - 用户名:
ftpuser - 密码:您在第 2 步设置的密码
如果您的路由器 IP 是 168.1.1,就在文件资源管理器的地址栏输入 ftp://192.168.1.1。
使用 ProFTPD
ProFTPD 是另一个功能强大且配置灵活的 FTP 服务器,如果您对 vsftpd 不满意,可以尝试这个。
安装 ProFTPD
opkg update opkg install proftpd
创建 FTP 用户
与 vsftpd 步骤完全相同。
adduser ftpuser mkdir -p /home/ftpuser/ftp chown -R ftpuser:ftpuser /home/ftpuser/ftp
配置 ProFTPD
配置文件是 /etc/proftpd.conf。
cp /etc/proftpd.conf /etc/proftpd.conf.bak vi /etc/proftpd.conf
主要检查和修改以下配置:
# 设置服务器名称
ServerName "OpenWrt ProFTPD"
# 使用 inetd 模式还是独立模式,推荐独立模式
# 取消下面这行的注释
ServerType standalone
# 默认端口
Port 21
# 匿名登录禁止
<Anonymous ~ftp>
User ftp
Group nogroup
# 用户被限制在目录中
<Limit LOGIN>
DenyAll
</Limit>
</Anonymous>
# 允许本地用户登录
DefaultRoot ~
# 启用被动模式
PassivePorts 10090 10095
# 其他安全设置
<Limit LOGIN>
DenyGroup !ftpusers
</Limit>
注意:DefaultRoot ~ 会将所有用户限制在其主目录下。
配置防火墙
防火墙配置与 vsftpd 完全相同,因为 FTP 协议本身是一样的。
启动并设置开机自启
/etc/init.d/proftpd start /etc/init.d/proftpd enable
重要安全建议
- 仅限局域网访问:强烈建议不要将 FTP 服务器暴露在互联网上,FTP 协议(尤其是用户名和密码)是明文传输的,非常不安全,请确保您的防火墙只允许来自
lan区域的连接。 - 使用 SFTP/FTPS:如果确实需要从公网访问,请考虑更安全的替代方案:
- SFTP (SSH File Transfer Protocol):基于 SSH,通过端口 22 传输,所有数据都是加密的,您只需要在 OpenWrt 上安装
dropbear或openssh-server即可,无需额外安装服务器软件,在文件管理器中使用sftp://user@host访问。 - FTPS (FTP Secure):FTP over SSL/TLS,这需要为
vsftpd或ProFTPD配置 SSL 证书,配置更复杂,但安全性远高于普通 FTP。
- SFTP (SSH File Transfer Protocol):基于 SSH,通过端口 22 传输,所有数据都是加密的,您只需要在 OpenWrt 上安装
- 定期更改密码:为您的 FTP 用户设置一个强密码,并定期更换。
- 限制用户权限:始终为 FTP 服务创建一个独立的、权限受限的用户,绝对不要使用
root用户。
通过以上步骤,您应该就能成功在 OpenWrt 上搭建一个功能完善的 FTP 服务器了,对于绝大多数家庭用户来说,vsftpd 是最佳选择。
