事情远没有楼上说得那么简单。
根据楼主得说法,服务器应该没有公网地址了,我猜是处于家用路由器得后方吧。如果我的说法正确,这里就涉及到第一个前提了。第一个前提是你的运营商给你分配了公网IP了吗?很多二级运营商是不会给用户分配公网IP的,我这里电信分配的是公网IP,而移动和联通分配的都是10.0.0.0/8。如果运营商没有给你分配公网IP,可以尝试打电话给运营商索要,听说有些地方可以解决。如果索要不到公网IP,那就需要NAT穿透了。NAT穿透我没尝试过,有兴趣可以Google一下。
没有运营商会给私人用户分配固定公网IP的,如果你得到了公网IP,你需要做的第一件事是DDNS(动态域名解析)以便可以随时获知你的IP。中国的运营商封锁了到私人用户的常用端口,FTP所用的21端口有没有在封锁范围内我不知道。如果21端口被封锁,服务器就不能监听在21端口。
完成了DDNS就可以做端口映射了。在做端口映射时需要了解清楚主动模式和被动模式。
主动模式:服务器监听21端口,客户端向服务器21端口发送请求并告知客户端的一个零时端口,服务器用自己的20端口连接客户端零时端口进行数据传输。因为服务器传输数据时是主动向客户端零时端口发起连接的,所以叫主动模式。对NAT比较收悉的人就应该明白了,如果客户端没有公网IP,即使映射了21端口服务器端也是无法连接客户端零时端口进行数据传输的,而大部分情况下客户端都没有公网IP。客户端没有公网IP的情况下如何使用主动模式?从原理上说根本无法实现。
被动模式:服务器端监听21端口,客户端向服务器21端口发送请求,服务器端使用21端口发送一个大于1024的随机零时端口号给客户端,客户端向服务器的零时端口发起连接进行数据传输。可知,在使用被动模式时需要映射的除21端口外还有服务器分配的随机端口。好在服务器的随机端口范围可以设定,某些路由器可以对端口段进行映射,所以客户端没有公网IP的前提下也是可以成功访问的。
我已经成功从家里访问办公室没有公网IP的FTP了,本来想截个图的,可惜这破论坛上传图片还要安装flash插件。