VSFTP服务器外网到内网的访问方法讨论

Web、Mail、Ftp、DNS、Proxy、VPN、Samba、LDAP 等基础网络服务
回复
micro_cy
帖子: 104
注册时间: 2011-07-20 11:33

VSFTP服务器外网到内网的访问方法讨论

#1

帖子 micro_cy » 2015-08-18 16:52

有内网服务器一台,IP172.16.6.229,网关为路由器中一个VLAN的IP地址:172.16.6.254,使用路由器将内网的服务器以NAT(网络地址转换)协议方式直接暴露在公网上。
内网的计算机可向因特网上的其它计算机发送连接请求,但因特网上的其它计算机无法向内网的计算机发送连接请求,所以无法用通常的方法去建立FTP服务器。
内网的IP地址有如下2种形式:
172.16.x.x/16
192.168.68.x/24

使用VSFTP架设了FTP服务器,APACHE架设了WEB服务器,并且开启了UFW,使用手机3G网络进行测试,WEB和FTP均可以正常访问。不过有远端的计算机测试后,不能进行访问,错误提示证明已经能看到服务器的欢迎消息了,但是由于超时而断开了连接。显然不是因为超时而出的问题。查看VSFTP的日志,也没有什么特别的提示。

在VSFPD.conf 中,我设置了主动模式的的port范围,min_ports 30001,max_ports 31000,同时在UFW中需要开启这个范围的端口。
有说UFW中开启端口的范围不能大于15个,不知道是不是真的,不过我在UFW中依然设置了sudo ufw allow 30001:31000。

同时UFW也设置了开启20,21,22,23,25,80,443,等常用端口
sudo ufw status
状态: 激活

至 动作 来自
- -- --
Anywhere ALLOW 192.168.68.0/24
Anywhere ALLOW 172.16.6.0/24
Anywhere ALLOW 172.16.0.0/24
Anywhere ALLOW 172.16.1.0/24
Anywhere ALLOW 172.16.2.0/24
Anywhere ALLOW 172.16.3.0/24
Anywhere ALLOW 172.16.4.0/24
Anywhere ALLOW 172.16.5.0/24
Anywhere ALLOW 172.16.7.0/24
Anywhere ALLOW 172.16.8.0/24
Anywhere ALLOW 172.16.9.0/24
Anywhere ALLOW 172.16.10.0/24
22 ALLOW Anywhere
23 ALLOW Anywhere
25 ALLOW Anywhere
80 ALLOW Anywhere
8088 ALLOW Anywhere
30001:31000/tcp ALLOW Anywhere
21/tcp ALLOW Anywhere
20/tcp ALLOW Anywhere
443 ALLOW Anywhere
21 (v6) ALLOW Anywhere (v6)
20 (v6) ALLOW Anywhere (v6)
22 (v6) ALLOW Anywhere (v6)
23 (v6) ALLOW Anywhere (v6)
25 (v6) ALLOW Anywhere (v6)
80 (v6) ALLOW Anywhere (v6)
8088 (v6) ALLOW Anywhere (v6)
30001:31000/tcp (v6) ALLOW Anywhere (v6)
21/tcp (v6) ALLOW Anywhere (v6)
20/tcp (v6) ALLOW Anywhere (v6)
443 (v6) ALLOW Anywhere (v6)

家用的电脑或者企业其他地方的电脑不能访问的原因,估计可能是主动模式和被动模式的问题。
一般客户端都有关于主动模式和被动模式的设置
主动模式需要手动设置固定的端口,比如上例,应该设置为30001-31000
连接的时候也许被动模式不能连接,就应该使用主动模式
还有看到帖子说:家用路由器或者是低端的路由器不支持动态端口映射,所以,不能进行连接,我想问题可能就出在这里,但是无法求证了。
个人手机安卓系统安装了FTP客户端4.0的软件,通过3G访问没有问题,说明,网络链路应该没问题,应该是连接时协议或者端口的问题。
希望大家能跟帖讨论,共同研究一下这个问题。
micro_cy
帖子: 104
注册时间: 2011-07-20 11:33

Re: VSFTP服务器外网到内网的访问方法讨论

#2

帖子 micro_cy » 2015-08-18 16:56

FTP两种工作模式:主动模式(Active FTP)和被动模式(Passive FTP)

在主动模式下,FTP客户端随机开启一个大于1024的端口N向服务器的21号端口发起连接,然后开放N+1号端口进行监听,并向服务器发出PORT N+1命令。服务器接收到命令后,会用其本地的FTP数据端口(通常是20)来连接客户端指定的端口N+1,进行数据传输。
在被动模式下,FTP库户端随机开启一个大于1024的端口N向服务器的21号端口发起连接,同时会开启N+1号端口。然后向服务器发送PASV命令,通 知服务器自己处于被动模式。服务器收到命令后,会开放一个大于1024的端口P进行监听,然后用PORT P命令通知客户端,自己的数据端口是P。客户端收到命令后,会通过N+1号端口连接服务器的端口P,然后在两个端口之间进行数据传输。
总的来说,主动模式的FTP是指服务器主动连接客户端的数据端口,被动模式的FTP是指服务器被动地等待客户端连接自己的数据端口。
被动模式的FTP通常用在处于防火墙之后的FTP客户访问外界FTp服务器的情况,因为在这种情况下,防火墙通常配置为不允许外界访问防火墙之后主机,而 只允许由防火墙之后的主机发起的连接请求通过。因此,在这种情况下不能使用主动模式的FTP传输,而被动模式的FTP可以良好的工作。
回复