这篇文章主要讲的是FRP实现FTP内网穿透,我们举例宝塔控制面板这个平台系统实现FTP内网穿透。 首先前提条件下,你必须会使用FRP穿透内网了,比如简单的web穿透,这类教程网络百度搜索可以搜索到一堆,我们这里就不讲了。 内网宝塔控制面板实现FTP内网穿透FRP穿透方案。 首先,需要了解一下ftp分为两种模式,简单说一下两种模式的区别 PORT(主动)方式: 当FTP连接时候,服务器:“我打开了XXXX端口,客户端你过来连接我”。于是服务器从20端口向客户端的XXXX端口发送连接请求,建立一条数据链路来传送数据。 PASV(被动)方式: 当FTP连接时候,告诉客户端:“我打开了XXXX端口,服务器你过来连接我”。于是客户端向服务器的XXXX端口发送连接请求,建立一条数据链路来传送数据。
那么这两种模式在正常外网下都是可以的,但是在穿透的情况下,主动模式是无法从外网找到我们内网的机器进行访问的,只能用PASV(被动)被动模式。
以下是操作流程: 1、宝塔控制面板中,找到“安全”菜单,进行增加被动链接端口,这里我们设置为3000、3001、3002、3003、3004等等,宝塔控制面板有规定端口范围,支持放行端口范围,如: 3000:3500,这点要注意一下,如图所示:
2、设置FTP服务端被动端口链接范围,也就是我们刚刚在防火墙增加的3000、3001、3002、3003、3004端口,我们在“软件商店”里面找到“Pure-Ftpd”点击设置,在配置修改里面找到“PassivePortRange”关键词,修改后面的端口段,保存记得重启服务,如图所示:
3、配置一下frpc.ini配置文件,然后重启一下。 配置信息如下: [ftppvs1] type = tcp custom_domains = local_ip = 192.168.0.123 local_port = 3000 remote_port = 3000 use_compression = false use_encryption = false [ftppvs2] type = tcp custom_domains = local_ip = 192.168.0.123 local_port = 3001 remote_port = 3001 use_compression = false use_encryption = false [ftppvs3] type = tcp custom_domains = local_ip = 192.168.0.123 local_port = 3002 remote_port = 3002 use_compression = false use_encryption = false [ftppvs4] type = tcp custom_domains = local_ip = 192.168.0.123 local_port = 3003 remote_port = 3003 use_compression = false use_encryption = false [ftppvs5] type = tcp custom_domains = local_ip = 192.168.0.123 local_port = 3004 remote_port = 3004 use_compression = false use_encryption = false
以上是全部操作,需要注意的是FRP外网服务器防火墙是否开启,是否限制了端口,如果是腾讯云、阿里云ecs等等类似的,会有服务器的安全组,需要设置安全组开放或者端口开放,才能链接成功。 另外补充一点,如果你是群晖下的docker容器安装的宝塔控制面板,还需要进行docker容器端口转发,才能链接,如图所示:
|