新闻资讯

很多人在Linux上搭建FTP服务器后,如何让外网也能访问?试试贝锐花生壳内网穿透

2026-09-05

一、为什么需要Linux搭建FTP服务器并实现外网访问

在日常工作中,无论是个人的数据备份、团队文件共享,还是企业的远程协作,FTP服务器都是一种经典且可靠的文件传输方案。Linux系统因其稳定性、安全性和低资源占用,成为搭建FTP服务器的首选平台。然而,大多数家庭或小型企业的宽带并没有分配固定的公网IP地址,甚至公网IP都很难获取,这就导致在内网中完成Linux搭建FTP服务器后,只能被局域网内的设备访问,无法让远在外地的同事或合作伙伴连接。贝锐花生壳内网穿透服务恰好可以解决这一痛点——无需公网IP、无需复杂的路由器端口映射,只需在Linux服务器上安装花生壳客户端,就能将内网的FTP服务发布到公网,通过一个固定域名实现远程访问。

二、Linux搭建FTP服务器的具体步骤

1. 安装vsftpd软件

在主流Linux发行版(如CentOS 7/8、Ubuntu 20.04/22.04)中,vsftpd是最常用的FTP服务器软件,它以轻量、安全著称。首先更新系统软件包,然后安装vsftpd:


sudo yum update -y          # CentOS/RHEL

sudo yum install vsftpd -y

**或 Ubuntu/Debian**

sudo apt update

sudo apt install vsftpd -y

2. 配置vsftpd

编辑配置文件 /etc/vsftpd/vsftpd.conf,确保以下关键参数正确设置:


anonymous_enable=NO                # 禁止匿名访问

local_enable=YES                   # 允许本地用户登录

write_enable=YES                   # 允许写入

local_umask=022                    # 文件权限掩码

dirmessage_enable=YES              # 显示目录消息

xferlog_enable=YES                 # 启用上传下载日志

connect_from_port_20=YES           # 启用20端口数据传输

pam_service_name=vsftpd            # PAM认证

userlist_enable=YES                # 启用用户列表控制

userlist_file=/etc/vsftpd/user_list # 允许登录的用户列表

为了安全,建议使用/etc/vsftpd/user_list文件指定可登录的本地用户,每行一个用户名。然后重启vsftpd服务:


sudo systemctl restart vsftpd

sudo systemctl enable vsftpd

图片2

3. 创建FTP访问用户

添加一个专门用于FTP的系统用户,并设置密码:


sudo useradd -m ftpuser

sudo passwd ftpuser

ftpuser添加到/etc/vsftpd/user_list中,确保其可以登录。

4. 配置防火墙允许FTP端口

如果Linux开启了防火墙(如firewalld或iptables),需要放行FTP默认的21端口以及被动模式端口范围(建议配置为被动模式指定端口范围)。示例(firewalld):


sudo firewall-cmd --permanent --add-port=21/tcp

sudo firewall-cmd --permanent --add-port=30000-31000/tcp  # 被动端口范围

sudo firewall-cmd --reload

同时,在vsftpd配置文件中添加被动端口范围:


pasv_enable=YES

pasv_min_port=30000

pasv_max_port=31000

至此,内网Linux搭建FTP服务器已完成,可以通过局域网IP测试访问。

三、使用贝锐花生壳实现内网穿透

1. 注册贝锐账号并获取免费域名

访问贝锐官网,注册账号后,在“花生壳管理”中会自动分配一个免费的壳域名(例如yourname.iok.la)。注意:注册后需按要求完成实名认证,否则域名会被锁定无法使用。

2. 在Linux上安装花生壳客户端

花生壳支持Linux客户端,可直接通过命令行安装。以CentOS为例:


**下载安装脚本**

wget https://hsk.oray.com/download/linux/64 -O ph<a href='https://hsk.oray.com/' target='_blank'><a href='https://hsk.oray.com/' target='_blank'>ddns</a></a>_linux_64.tar.gz

tar -zxvf phddns_linux_64.tar.gz

cd phddns_linux_64

![图片1](https://public-cdn.orayimg.com/help/ccdda6df95117ca633dd6d0903e4096b)

sudo ./phddns install

安装成功后,启动并登录:


sudo systemctl start phddns

sudo phddns status   #

3. 添加映射,将FTP服务发布到外网

登录贝锐花生壳管理平台(或使用客户端命令添加映射),添加一条映射记录:

应用名称:FTP-Server

映射类型:TCP

外网域名:选择你的免费壳域名

外网端口:动态分配(如随机生成5位数端口)

内网主机:Linux服务器的内网IP地址(如192.168.1.100)

内网端口:21

保存后,系统会生成一个外网访问地址,例如 yourname.iok.la:12345

4. 额外配置被动模式端口映射

由于FTP传输数据会使用被动端口,需要再添加一条TCP映射,内网端口填写上面配置的被动端口范围中的某一个(例如30000),外网端口设置为与内网一致(或动态端口)。然后在vsftpd配置文件中,将被动端口的IP地址修改为花生壳生成的外网域名或IP(如果使用IP动态变化,建议设置pasv_address为外网域名,但花生壳解析可能存在延迟,更稳妥的方式是固定外网端口并在客户端设置主动模式)。不过多数FTP客户端支持主动/被动模式切换,推荐外网使用时设置客户端为被动模式,并确保被动端口映射正确。

四、外网访问测试

在外网电脑(如手机4G热点或异地办公室)打开FTP客户端软件(如FileZilla),输入花生壳生成的外网地址和端口,使用之前创建的ftpuser账号密码登录。连接成功后,即可看到Linux服务器上的目录,进行文件上传、下载等操作。

注意事项**:** 如果连接失败,请检查Linux防火墙是否开放了对应的外网端口,以及花生壳客户端的运行状态(可使用phddns status查看)。另外,部分运营商可能会屏蔽非标端口,如需指定外网端口,需购买固定端口服务;体验/免费映射的外网端口由系统动态分配,无法自行改写。

FAQ

Q:Linux搭建FTP服务器后,内网访问正常,但外网连不上是什么原因?

A:常见原因包括:防火墙未放行21端口和被动端口;花生壳客户端离线或映射配置错误;运营商封锁了该端口。建议先检查phddns status确认在线状态,然后使用telnet 外网域名 外网端口测试网络连通性。

Q:是否需要映射两条记录(21端口和被动端口)?

A:是的,FTP协议的控制连接使用21端口,数据连接使用被动端口。如果不映射被动端口,外网客户端在被动模式下将无法获取数据连接,导致目录列表失败或传输中断。

Q:免费域名有效期是多久?

A:注册贝锐账号后赠送的壳域名有效期为1年,到期后可以续期或付费升级。建议在到期前1个月进行续费操作,避免服务中断。

Q:能不能使用主动模式来避免配置被动端口?

A:可以尝试,但主动模式需要内网服务器能够直接连接到外网客户端的高位端口,这在多数NAT环境下不可行。因此推荐配置被动模式并做好端口映射。

通过以上步骤,你就完成了完整的Linux搭建FTP服务器并借助贝锐花生壳实现外网访问的方案。这套方案成本低、部署快,即使没有公网IP,也能让全球任何角落的同事通过域名访问你的文件共享服务。

新闻资讯
热门专题
最新专题
友情链接