外网访问内网的FTP服务器


1. 背景简介

最近研究如何在内网搭架FTP服务器,同时要保证外网(公网)能访问的到。终成正果,但走了一些弯路,在此记下,以飨后人。

2. 基础知识

FTP 使用 2 个端口,一个数据端口和一个命令端口(也叫做控制端口)。这两个端口一般是21 (命令端口)和 20 (数据端口),当然你也可以自定义。控制 Socket 用来传送命令,数据 Socket 是用于传送数据。每一个 FTP 命令发送之后,FTP 服务器都会返回一个字符串,其中包括一个响应代码和一些说明信息。其中的返回码主要是用于判断命令是否被成功执行了。

2.1. 命令端口

一般来说,客户端有一个 Socket用来连接 FTP 服务器的相关端口,它负责 FTP 命令的发送和接收返回的响应信息。一些操作如“登录”、“改变目录”、“删除文件”,依靠这个连接发送命令就可完成。

2.2. 数据端口

对于有数据传输的操作,主要是显示目录列表,上传、下载文件,我们需要依靠另一个 Socket来完成。

如果使用被动模式,通常服务器端会返回一个端口号。客户端需要用另开一个 Socket 来连接这个端口,然后我们可根据操作来发送命令,数据会通过新开的一个端口传输。

如果使用主动模式,通常客户端会发送一个端口号给服务器端,并在这个端口监听。服务器需要连接到客户端开启的这个数据端口,并进行数据的传输。

下面对 FTP 的主动模式和被动模式做一个简单的介绍。

2.3. 主动模式(PORT)

主动模式下,客户端随机打开一个大于1024 的端口向服务器的命令端口 P,即 21 端口,发起连接,同时开放N +1 端口监听,并向服务器发出 “port N+1” 命令,由服务器从它自己的数据端口 (20) 主动连接到客户端指定的数据端口 (N+1)。

FTP 的客户端只是告诉服务器自己的端口号,让服务器来连接客户端指定的端口。对于客户端的防火墙来说,这是从外部到内部的连接,可能会被阻塞。

2.4. 被动模式(PASV)

为了解决服务器发起到客户的连接问题,有了另一种 FTP 连接方式,即被动方式。命令连接和数据连接都由客户端发起,这样就解决了从服务器到客户端的数据端口的连接被防火墙过滤的问题。

被动模式下,当开启一个 FTP 连接时,客户端打开两个任意的本地端口 (N > 1024 和 N+1) 。

第一个端口连接服务器的 21 端口,提交 PASV 命令。然后,服务器会开启一个任意的端口 (P > 1024 ),返回如“227 entering passive mode (127,0,0,1,4,18)”。 它返回了 227 开头的信息,在括号中有以逗号隔开的六个数字,前四个指服务器的地址,最后两个,将倒数第二个乘256 再加上最后一个数字,这就是 FTP 服务器开放的用来进行数据传输的端口。如得到 227 entering passive mode(h1,h2,h3,h4,p1,p2),那么端口号是 p1*256+p2,ip 地址为h1.h2.h3.h4。这意味着在服务器上有一个端口被开放。客户端收到命令取得端口号之后, 会通过 N+1 号端口连接服务器的端口 P,然后在两个端口之间进行数据传输。

3. 我走过的弯路

使用Serv-U搭架FTP服务器很简单,网上教程也很多,不再累述。我这里只记录下我遇到的问题。

3.1. 使用环境

 

操作系统

FTP软件

FTP软件版本

FTP服务器

Windows XP

Serv-U

版本15.0.1.20

FTP客户端

Windows XP

FileZilla

版本3.8.0

 

FTP服务器安装在公司内网的电脑上,FTP客户端在外网的电脑上(严格来说也是在另一外局域网内)。

3.2. PASV端口范围

被动模式(PASV)下,有数据要传输时,服务器会打开一个数据端口(并处于监听状态),然后告知客户端,客户端连接这个数据端口发送数据。但是数据端口是随机的,那么服务器该如何将这些随机数据端口映射到公网的路由器上呢???总不能让内部网的一台机器完全暴露到公网上吧,虽然确实有这样的方案(称之为DMZ主机),但这绝对是最愚蠢的选择。

 

这就是我遇到的第一个弯路,折腾了很久才知道。虽然数据端口是随机的,但Serv-U可以指定随机的范围。打开Serv-U管理控制台 > 管理服务器 > 服务器限制和设置 > 服务器设置 。在“设置”选项卡里找到“PASV端口范围”,如下图所示,在这里就可以指定随见的范围了。你只要把这些端口映射到路由器就可以了。

图表 1 PASV 端口范围

 

当然别忘了,还有一个命令端口也得映射。

3.3. PASV IP地址

我遇到的第二个难缠的问题是,FileZilla客户端获取不到FTP服务器的目录列表。日志信息如下:

 

状态:    正在连接 125.89.123.99:13000...

状态:    连接建立,等待欢迎消息...

响应:    220 Serv-U FTP Server v15.0 ready...

命令:    USER zhangsan

响应:    331 User name okay, need password.

命令:    PASS ***

响应:    230 User logged in, proceed.

命令:    CLNT FileZilla

响应:    200 Noted.

命令:    OPTS UTF8 ON

响应:    200 OPTS UTF8 is set to ON.

命令:    OPTS MLST type;size;modify;perm;

响应:    200 MLST OPTS Type;Size;Modify;Perm;

状态:    已连接

状态:    读取目录列表...

命令:    PWD

响应:    257 "/" is current directory.

命令:    TYPE I

响应:    200 Type set to I.

命令:    PASV

响应:    227 Entering Passive Mode (100,100,100,100,50,203)

命令:    MLSD

响应:    150 Opening BINARY mode data connection for MLSD.

错误:    连接超时

错误:    读取目录列表失败

 

也是经过一阵折腾,最后突然发现服务器对PASV指令的响应是:227Entering Passive Mode (100,100,100,100,50,203),这里100.100.100.100是FTP服务器在内网IP,客户端自然连接不上。打开Serv-U管理控制台 > 你自定义的域名 > 域详细信息 > 监听器 > 编辑 ,在PASV IP地址或域名中设置公网IP即可。 如下图所示。


 

4. 总结

FTP服务器至少需要两个端口:命令端口和数据端口。命令端口是固定的,而数据端口是随机的。随机的端口如何映射到公网?Serv-U可以设置PASV端口范围,随机也只是在设定的范围内随机。另外需要设置PASV IP地址,否者服务器响应客户端的PASV 命令时,会把服务器在内网中的IP地址告知客户端,这个地址对应客户端来说是连接不上的。

  • 12
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
"班 级 "13网络一 "学生姓名 "许富翔 "指导教师 "员志超 " " "班 " " " " " "设计(论文)题目 " 企业网络服务器的规划与管理 " "主要 "用户的需求 " "研究 "系统结构设计 " "内容 "系统的组成和安装 " " "企业网系统介绍 " " "系统集群等技术实现 " "主要技 "系统的容错和负载均衡 " "术指标 "网络操作系统的安装和设置,DNS,IIS和DHCP,VPN,FTP,Web等 " "或研究 "服务的设置 " "目标 "网络操作系统结构设计 " " "企业网络服务器的配置 " "基本 "局域网服务器包括:DNS服务器、DHCP服务器、Web服务器、FT" "要求 "P服务器、VPN服务器、邮件服务等。 " " "网络中的服务器必须具有容错和负载均衡能力。 " " "网络操作系统的选择:在Windows " " "Server、UNIX、Linux、等网络操作系统中任意选择。 " " "利用网络操作系统自带的防火墙或ISA等软件技术,构建网络 " " "防火墙确保局域网的安全。 " " "必须构建VPN服务器,使位于Internet网络的客户端能够访问 " " "局域网的资源。 " " "设计的网络应具备对系统的保护及还原措施。 " " "设计的网络应易于维护,并具备可靠性、安全性。 " "参考文献 "1、林天峰.Linux服务器架设指南.清华大学出版社.2010年1月" " ". " " "2、张勤.Linux服务器配置实录.人民邮电出版社.2010年1月. " " "3、张保通.网络互连技术—路由、交换与远程访问.2009年10月" " ". " " "4、(美)Sandra " " "K.Linux服务器性能调整.清华大学出版社.2009年9月. " " "5、黄骁.Windows Server " " "2008服务器配置与管理手册.海洋出版社.2009年11月. " " "6、IT同路人.Windows Server " " "2003服务器架设详解.人民邮电出版社.2008年7月. " " "7、王达.网管员必读—服务器与数据存储.电子工业出版社.200" " "7年10月. " 摘 要 大庆公司包括一个园区网络和两个分支机构。在园区网络中,大约有500个员工,每个 分支机构大约有50个员工,此外还有一些soho员工。 现在公司的园区网络要进行规划和实施,现有条件如下 :公司已租借了一个公网的ip地址为222.206.160.1,和isp提供的一个公网dns服务器的 ip为222.206.160.2园区网络和分支机构使用192.168.1.0网络,并进行必要的子网划分 ,具体要求如下: 1.搭建samba服务器,因公司内部每个机构用的操作系统不同,这些机构可以利用sam ba实现linux和windows系统之间的文件共享和打印共享,,并设置该服务器所属工作组 为WORKGROUP,并限制该samba服务器只允许192.1638.1.0网段的客户访问。 2.在公司内部搭建DHCP和dsn服务器,使网络中的计算机可以自动获得ip地址,并使用 公司内部的dns服务器完成内部主机名以及Internet域名的解析。 3.搭建ftp服务器,设置本地用户SOHO在登录FTP服务器之后,在进入dir目录时显示提 示信息"welcome",要求每个员工都可以匿名访问ftp服务器,并进行公共文档的下载。 4.搭建VPN服务器, VPN服务器有eth0和eth1两个网络接口。其中eth0用于连接内网,IP地址为192.168.1.2 ;eth1用于连接外网,IP地址为222.206.160.1。 VPN客户端通过Internet网络与VPN服务器连接后,可访问局域网内部的服务器。建立VP N连接后,分配给VPN服务器的IP地址为192.168.1.100,分配给VPN客户端的IP地址池为 192.168.1.200-192.168.1.220,192.168.1.230- 192.168.1.240。客户端可以以用户名king、密码123456和VPN服务器建立连接,建立连 接后获得的IP地址为192.168.1.221。 5.搭建squid服务器,该代理服务器配置为奔腾1.6G/512M/80G,公司所用IP地址段为1 92.168.1.0/24,并且想用8080作为代理端口。要求进行Internet访问性能的优化,并提 供必要的安全特性。 6.为了整个网络的安全,要求网络中的服务器必须要有集群和容错功能。 本论文主要围绕该企业的网络环境进行网络搭建,重点放在对网络服务器的配置、验 证和运用到实际网络中的详细过程和图解步骤。 关键字:园区网络 服务器 网络搭建 网络安全 目 录 第一章 绪
外网访问内网FTP服务器的方法有多种。其中一种方法是使用端口映射技术,如使用frp工具进行配置。首先,您需要在内网FTP服务器上安装并配置frp工具。您可以通过下载并解压缩frp软件包,然后修改frpc.ini文件来配置frp。在frpc.ini文件中,您需要指定服务器的IP地址和端口号,以及要映射的本地IP地址和端口号。例如,您可以将本地的FTP服务器端口21映射到外网的端口2121。完成配置后,您可以运行frpc工具来启动端口映射。通过运行命令"./frpc -c ./frpc.ini",您可以验证配置是否正确并启动端口映射。这样,您的朋友就可以通过外网访问您的内网FTP服务器了。请注意,为了使端口映射生效,您还需要在防火墙中放行相应的端口。您可以使用iptables命令来放行指定的端口。例如,您可以使用命令"iptables -I INPUT -i eth0 -p tcp --dport 21 -j ACCEPT"来放行FTP服务器的端口。请确保您的操作系统上已安装iptables,并按照上述步骤进行配置和放行端口。 #### 引用[.reference_title] - *1* [外网用户如何访问内网FTP服务器](https://blog.csdn.net/qinqijing_123/article/details/5805492)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [【内网穿透服务器】使用Frp外网访问内网FTP服务器(以访问内网samba服务为例)](https://blog.csdn.net/deng_xj/article/details/89063768)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值