1000分!我想搞网站(下载类网站),请问怎样搭建服务器?
Squid是Linux下最为流行的代理服务器软件,它功能强大,支持对HTTP、FTP、Gopher、SSL、WAIS等协议的代理; 设置简单,只需对配置文件稍稍改动就可使代理服务器运转起来。此外,Squid具有页面缓存功能,它接受用户的下载申请,并自动处理所下载的数据。
前期准备
Squid对硬件的要求是: 内存不应小于128M,硬盘转速越快越好,最好使用服务器专用SCSI硬盘,对CPU的要求不高,400MHz以上即可。笔者所管理的代理服务器是Inter2150,安装了Red Hat Linux 72,安装时就带有Squid。有两块网卡,一块eth0配外部地址(比如211889966),一块eth1配内网地址(比如19216851)。如果安装了Gnome或其他图形界面,就可以在netconfig中给两块网卡配置IP地址,不然的话,可在/etc/sysconfig/network-script路径下更改文件ifcfg-eth0和ifcfg-eth1。
首先编辑ifcfg-eht0,有以下几项:
DEVICE=eth0 (表示用哪块网卡)
IPADDR=211889966 (设置该网卡的IP地址)
NETMASK=255255255252 (设置子网掩码)
同样编辑ifcfg-eth1,然后运行命令network restart就可以使配置生效了。对eth0、eth1进行配置后,可以用ifconfig命令来查看是不是配置成功。
如果服务器只有一张网卡,也不用担心,Linux可以在一块网卡上绑定多个IP地址。在图形界面下配置很简单,不赘述。如果在文本状态下配置,可以将ifcfg-eth0复制并命名为ifcfg-eth0:1,把它完全当成两块网卡来配就可以了。
Squid的安装
1 安装Linux
安装Linux在硬盘分区时要注意,最好不要让系统自己分区,而是手动分区。通常,在Linux系统中有且仅有一个交换分区(在文件系统形式中选择Linux swap),它用做虚拟内存,建议将交换分区的大小设置为内存的两倍。当硬盘的大小超过了8G,要再建立一个128M(稍稍大一点,不会出错)的boot分区,这是为了避免将系统内核文件放到1024磁道以外,如果将boot作为root分区的一个子目录,内核文件就会安装在root分区的任何地方。因为要用做代理服务器,建议再分一个分区“var”,作为Squid的缓冲区,所以根据磁盘大小尽量分配大一点,最后将硬盘的剩余空间全部分给root分区。
2 安装Squid
新手安装Squid,建议在安装Linux时就选中Squid,它并不是默认选中项,而且也不在选择的大类中,要在详细列表中查找。如果没有安装,又不想重装系统,可以从wwwsquid-cacheorg下载Squid软件。
Squid代理服务器的设置
安装好Squid后几乎就可以用了,用编辑器打开/etc/squid/squidconf文件(以root登录),Squid的配置文件共有125个配置项,但是一般来说,只要修改几个配置项即可。找到“http_access deny all”并改为“http_access allow all”令所有的电脑都能通过代理服务访问互联网资源。其实只要修改该项,Squid服务就可以启动了。
为了更好地控制代理服务器的行为,还有几个可配置项需要考虑:
1 cache_mem: 设置代理服务使用的内存大小,一般推荐为物理内存的三分之一。
2 cache_dir:设定缓存的位置、大小。一般格式如下:
cache_dir /var/spool/squid/cache 100 16 256
cache_dir指定cache目录的路径,默认为/var/spool/squid/cache。
/var/spool/squid/cache代表缓存的位置,使用squid -z指令会在这个目录下建立存储交换文件(swap files)的目录。100表示缓存最大为100M,16和256代表一级和二级目录数。实际使用时,100M是不够的,如果硬盘够大,可以增加存储空间,比如:cache_dir /var/spool/squid/cache 2000 16 256。
3 http_port:代理服务使用的端口号,默认为3128,可以使用其他的端口,注意将前面的注释符号“#”去掉。另外,使用端口不能和其他的服务重复,如果使用1024以下的端口,Squid必须以root身份运行。
4 maximum_object_size: 指定Squid可以接收的最大对象的大小。Squid缺省值为4M,可以根据自己的需要进行设定。
启动Squid
Squid可以设置为自动启动。运行命令setup,在System services选项中选中Squid。设置后每次重新开机,都会自动执行Squid。
如果是第一次启动,要建立/var/spool/squid下的暂存资料目录,先输入squid -z,再启动Squid(直接运行Squid即可)。
启动Squid后,在另一台Windows电脑上(以Internet Explorer 50为例)运行IE,单击“工具”,接着单击“Internet选项”,再单击“连接”选项卡,选择“局域网设置”。在“局域网设置”窗口中的“地址”处填上Squid服务器的IP地址,在“端口”处填上“3218”(Squid软件默认代理的端口号),确定后退出。接下来,随意浏览一些网站检查Squid的运行情况,也可以查看logs下的accesslog和cachelog,看看代理是否运行正常。
代理服务器的安全
代理服务器是一个单位对外的门户,安全至关重要。因此,应该采取必要的防护手段。
1 防火墙的配置
为了保证代理服务器的安全,最好加上防火墙,可以用IPchains或IPtable。
要使用ftp代理,还必须载入相关模块。可以使用以下命令:
modprobe ip_comtrack_ftp
modprobe命令会自动载入指定模块及其相关模块。iptables_filter模块会在运行时自动载入。
下面用IPtables一步一步地来建立包过滤防火墙,需要说明的是,在这个例子中,主要是对内部的各种服务器提供保护。
给IPtables规则设置一个存储路径: iptables -restroe /etc/sysconfig/iptables。
现在开始考虑规则。在这里需要注意的是,服务器/客户机交互是双向的,所以不仅仅要设置数据包出去的规则,还要设置数据包返回的规则,下面先建立针对来自Internet数据包的过滤规则。
1 首先禁止转发任何包,然后再一步步设置允许通过的包。
2 先允许源为内网的所有端口的TCP包。
3 再允许目的为内部网(19216850/24)的FTP数据包。
4 允许目的为内网的来自Internet的非连接请求TCP包。
5 最后一条接收所有UDP包,主要是针对oicq等使用UDP的服务。
6 icmp包通常用于网络测试等,故允许所有的icmp包通过。但是黑客常常采用icmp进行攻击,如“ping of death”等,所以我们采用limit匹配扩展加以限制。对不管来自哪里的icmp包都进行限制,允许每秒通过一个包,该限制触发的条件是10个包。
不需要允许WWW服务的包,所有WWW服务由Squid代理。
iptables -P FORWARD DROP
iptables -A FORWARD -p tcp -s 19816852 -i eth0 -j ACCEPT
iptables -A FORWARD -p tcp -s 0/0 --sport ftp-data -d 19816850/24 -i eth0 -j ACCEPT
iptables -A FORWARD -p tcp -d 198168800/24 ! -syn -i eth0 -j ACCEPT
iptables -A FORWARD -p udp -d 198168800/24 -i eth0 -j ACCEPT
iptables -A INPUT -p icmp -m limit --limit 1/s --limit-burst 10 -j ACCEPT
说明:
-A加入(append) 一个新规则到一个链 (-A)的最后。(用-I可以插入一条规则,插入位置序号写在Forward后,-D在链内某个位置删除(delete) 一条规则,-R在链内某个位置替换(replace) 一条规则 )。
Forward链、Input链和Output链的区别如下:
1 如果数据包的目的地址是本机,则系统将数据包送往Input链。如果通过规则检查,则该包被发给相应的本地进程处理;如果没有通过规则检查,系统就会将这个包丢掉。
2 如果数据包的目的地址不是本机,也就是说,这个包将被转发,则系统将数据包送往Forward链。如果通过规则检查,则该包被发给相应的本地进程处理; 如果没有通过规则检查,系统就会将这个包丢掉。
3 如果数据包是由本地系统进程产生的,则系统将其送往Output链。如果通过规则检查,则该包被发给相应的本地进程处理;如果没有通过规则检查,系统就会将这个包丢掉。
-s指定源地址,-d指定目的地址。
-p 指定协议,比如-p tcp。
-i或-o指定网络接口。需要注意的是,对于Input链来说,只可能有-i,也即只会有进入的包;同理,对于Output链来说,只可能有-o,也即只会有出去的包。只有Forward链既可以有-i的网络接口,也可以有-o的网络接口。
Drop表示符合规则就丢弃包,Accept相反。
然后,执行命令IPtables -L,可以查看已经建立的规则,并用命令IPtables -save将规则写入文件。
通过以上步骤,我们建立了一个相对完整的防火墙,只对外开放了有限的几个端口,同时提供了客户对Internet的无缝访问。
2 其他建议
为了安全,最好不要在一台机器上运行太多服务。为了方便调试,一般都会提供telnet和ftp服务,但这往往是安全隐患,可以在/etc/hostallow和/etc/hostdeny中进行限制。比如:局域网的内网网段为: 19216800,可以在hostsallow文件中加入一行: telnet:19216800/25525500。在hostsdeny中加入一行:all:all。因为是先执行hostallow,再执行hostdeny。所以上面就只打开了内网网段的telnet服务,而对外关闭。如果想打开其他服务,可以再加。如果还想加上机器名,可以在IP后加上“@abc”(abc代表某机器名)。想关闭所有服务、所有IP、所有机器名,可以在hostdeny中写上“all:all@all”。配置好了运行命令xinetdd,配置就生效了。如果想远程访问代理服务器,最好用SSH(因为telnet是明码传送,所以很不安全,SSH可以理解为加密的telnet),它的配置和应用比较简单,不赘述
平台上。
好了,让我们来实际操作一番:
假设我是一个局域网用户,我的内部IP地址是10101010,我是通过指定网关1010101上网的,我在自己的计算机上安装了“动态IP解析”软件和WEB服务器还有FTP服务器准备开一个网站和FTP服务器。以下是我的设置过程:
1 到我的网关(代理)服务器1010101 上安装“PortTunnel”软件(拷贝即可)
2 针对我需要的WEB服务进行配置,点击“Add”按钮,然后配置如下:
注意:
Port In填的端口号是80,这样填的前提是网关(代理服务器)上没有WEB服务器在运行,否则请更换其它端口,例如“8080”(在这种情况下,用户必须通过名:8080来访问你的网站。)
3 针对我需要的FTP服务进行配置,点击“Add”按钮,然后配置如下:
注意:
Port In填的端口号是21,这样填的前提是网关(代理服务器)上没有FTP服务器在运行,否则请更换其它端口,例如“2100”(在这种情况下,用户必须通过ftp://名:2100来访问你的FTP服务器。)
4 设置成功后的正常运行界面(平时这个界面可以关掉,不会影响使用)
注意:
正常运行时,你设置的通道的状态应当是“Active”,如果是“Failed”那很可能你设置
的“Port In”端口号和网关(代理服务器)上的现有端口冲突。
5 测试一下:
如果通过能访问你的网站或FTP://能访问你的FTP服务器,
那就成功了。
重要提示:
如果局域网内有多个用户想架设网站,那么注意在设置的时候,一个“Port In”端口只能为一个用户服务,例如,usera使用了“80”作“Port In“,那么他的网站就可以通过“”来访问,而userb就只能使用牡览硪彩且谎�/a>
附: PortTunnel的下载地址:
(中文)
(English)
这里,Port In是要监听的端口,port out是要映射的端口。比如你想监听服务器的88端口,映射到你的机器的80端口,这里的port in便是88,port out便是80。默认的FTP端口是21,如果想开FTP服务器,这里可以是21。添加后,点"start",服务器开始。程序自动加入系统服务,每次开机便会自动启动。
以上两步完成,一切OK!
首先你必须具备的条件:
1:你必须具有网管权限
2:主服务器操作系统是WIN2K。
下载一个FTP服务端软件,FTP serv-u(本机上如果装了IIS也可以),完成安装。
下面是在服务器(也就是局域网代理服务器)上要做的工作,以保证你的FTP可以对外服务。
一,建产DNS记录
1、打开DNS控制台:选“开始菜单→程序→管理工具→DNS”。
2,建立域名“ftpdashacom”映射IP地址“192168050”(这个IP就是客户端的真
正IP)的主机记录。
①建立“com”区域:选“DNS→WY(你的服务器名)→正向搜索区域→右键→新建区域”,然后根据提示选“标准主要区域”、在“名称”处输入“com“
②建立“dasha”域:选“com→右键→新建域”,在“键入新域名”处输入“dasha”
③建立“ftp”主机。选“dasha→右键→新建主机”,“名称”处为“ftp”,“IP地址”处输入“192168050”,再按“添加主机”。
现在测试一下,“运行”输入"ping ftpdashacom"
二、“ftpabccom”的设置
1、打开“默认FTP站点”属性窗口:选“默认FTP站点→右键→属性”即可。
2、设置“FTP站点”:在“IP地址”处选“192168050”,端口号保持默认值“21”不变。
3、设置“消息”:在“欢迎”框中输入登录成功后的欢迎信息,“退出”中为退出信息。
4、设置“主目录”:在“客户机”中按“浏览”按钮选择目标目录“E:\myweb”。
5、设置“安全帐号”:默认的,匿名用户(Anonymous)被允许登录,如果有必要,此处可选拒绝其登录以增加安全性;或增加其他用于管理此FTP服务器的用户名(默认的为“Administator”)。
6、设置“目录安全性”:此处可以设置只被允许或只被拒绝登录此FTP服务器的的计算机的IP地址。
7、如需要,也可在“默认FTP站点”处单击右键选“新建”来新建FTP的虚拟目录。
三、“ftpdashacom”的测试
1、在浏览器中登录:格式为“ftp://ftpdashacom”或“ftp://用户@ftpabccom”。如果匿名用户被允许登录,则第一种格式就会使用匿名登录的方式;如果匿名不被允许,则会弹出选项窗口,供输入用户名和密码。第二种格式可以直接指定用某个用户名进行登录。
2、在DOS下登录:格式为“ftp ftpabccom”。
3、用FTP客户端软件登录
4、如果“主目录”下有与用户同名的“虚拟目录”或“实际目录”,则该用户会直接登录到其同名目录中。
注意第二部的工作,你还可以填加另一个FTP站点,不过之前,你还得进行第一步的工作。
三,开始客户端的FTP服务器软件设置。
下边的工作便是serve-u的设置了,再转一个:
Serv-U 30017 使用详解 (转贴)
主要新功能:
以 WindowsNT/2000/XP 的 Service 形式运行, 可以随开机而启动服务
把服务器和管理工具分离, 而管理工具可以远程配置 Serv-U 3 的服务器
虚拟路径映射 (Virtual path mappings), 可以很方便地把不同分区, 甚至
不同机器上的路径都映射到你想它出现的位置, 对于登录用户来说, 他根本
看不出虚拟映射和实际有什么分别
似乎对 DoS (Deny Of Service) 攻击有点对策, 实际应用情况不清楚
主要特性:
看来内存比 2x 占用得多不了多少 (当管理工具没打开时)
至少不会比 2x 慢
注册码有点难度, 竟然出了几天都没注册机
更有cracker说它用了 ECC (Elliptic Curves) , 很可能永远都出不了注册机
现在有的是破解版, 可能有人感觉不太舒服吧
综上所述, 对于 2x 的用户来说, 如果没用到主要的新功能, 不换也没什么不好,
但如果想换又不知如何配置, 请看下回分解~~~
原文再续书接上一回, 话说上次说到对于想升级又怕不会用的人, 你可以放心了,
你只要保留你原本 2x, 升级安装上去, Serv-U 3 就会自动按原设定配置服务器,
根本不用你动手, 所以, 这篇基本上是废话
欲知重头安装该怎样做, 或想知各种功能的用法, 请看下回分解!
Step #1 安装
点击安装程序, 直点 Next 就完成了 没什么好说的
Step #2 第一次运行
安装完成后, 服务器的Service会启动, 管理工具会自动运行, 你看到的, 是要你
配置好它的 Setup Wizard 唔 基本上 Next 下去就是了, 下面几个可能你
会有兴趣:
Domain name: 域的名字
Allow anonymous access: 要让匿名登录吗 (选 No 可以跳过这部分)
Annoymous home directory: 匿名登录后, 用户会看到的目录
Lock annoymous users into their home directory: 选Yes, 不要让他们乱跑
Create named account: 要建立有非匿名用户吗
输入用户名, 密码
(大约和上面过程一样)
Account admin priviledge: 这个用户有远程管理 Serv-U 3 的权限吗
呵呵 通常选 No priviledge 吧
嘿! 基本上搞好了!
Step #3 认识 Serv-U 3 管理工具的的界面
左边的树状结构是 Serv-U 3 的结构层次:
1 Serv-U Server 下面是管理工具在管理的 FTP,
其中<<Local Server>>就是你机上那个服务器了
2 在每个服务器中
License: 给你填注册码
Settings: 服务器总配置
Activity: 给你监测本服务器的运作情况
Domains: 下面的各个 Domain, 是以你的机器拥有的不同IP开的服务器,
按刚才"第一次运行"来做, 你现在会有一个 Domain 了
Step #4: 整体配置
在<<Local Server>>的Settings:
General: 总体限制, 参数设置
Max Speed- 总体限速,
不设的话, 极速可达约 1MBytes/S
Max no of users - 同时的连接数目
不要太多, 很伤硬盘的, 建议不超过20
Check Anonymous password - 匿名登陆密码检查,
不要选, 否则 IE 不能进入
Block Anti Time-out schemes
Block "FTP_bounce"
主要是把些无聊人赶掉, 都选吧, 细节看 Help
Block users who connect
随意, 用于"罚"一下用多线程下载的用户
其馀选项看 Help 吧
Dir Cache: 目录缓存
用户较多时, 可以明显加快用户浏览的速度,
把它打开, 用默认的 MaxSize 25, Time-out 600 sec 差不多了
Auto-Refresh 选取后你会看到在缓存中有哪些目录
Advanced:
Server:
Enable security - 安全设置生效
一定要选上! 否则你会死得很难看 KAKAKA
Sockets:
Inline out-of-band data
选取后听说可以防止 DoS 攻击, 但默认没选, 你自己决定吧
至于如何配置用户, 就请看下回分解!
原文再续书接上一回, 话说上次说到我们有了个服务器,
但没设好域里的用户, 也是没用的, 所以
Step #1: 域 (Domain) 配置
在 Domains 下选取你的域吧!
Name: 域的名字
Domain IP address: 为简单起见, "Use any available IP address" 算了吧
Domain type:
Store in INI file 比较好,
它把你的服务器的设置都放到 ServUDaemonini ,
重装系统后把这文件放上去就行了
FTP port number:
通常是 21
Settings:
General:
Max no of users - 同时的连接数目
和上一个差不多, 不过是在域里限制
Virtual path mapping - 请看 VPM 篇
Links - 同上
Messages:
很好玩的, 可以把别人登录看到的信息都改掉
Logging:
就是 log 啊 不懂 看 help!
Step #2: 用户帐号
在 Domains 下
Users 右击出现新增/移除用户选单
点选任一用户后, 各项用户参数意义:
Account:
Disable account: 暂时令它失效
Automatically remove account on date: 到了某日期就删掉该用户! (爽!)
User name: 不用多说吧
Password: 留空不填代表不用密码
Home directory: 这用户登录时看到的第 1 个目录
Lock user in home directory:
最如想在用这帐号登陆后, 看到的根目录是所设的 Home Directory,
就选吧 (建议选取, 否则地址会比较难看)
Priviledge: 这用户远程管理 Serv-U 服务器的权限, 具体看 HELP
General:
Allow only N login(s) from same IP address
限制同一 IP 用这帐号的连接数, 选了它吧!
如果考虑到用 IE 的用户, 最好设两个连接,
否则对方可能不能下载, 如果狠心点, 设 1 个也没关系!
Max upload Speed
用这帐号, 每一个连接上传文件的极速
Max download Speed
用这帐号, 每一个连接下载的极速
Idle time-out
发呆多久才 kick 他出去, 个人认为 5 分钟都够了
Sesson time-out
无论他有没有发呆, 上来一段时间后就把他 KICK 走, 即使他在下载
什么东东也照踢不误, 并且在 1 分钟内不让他再上来 这样在很忙下载
站点中可能有用, 可以让多点人有机会访问, 不过确是有点讨厌 呵呵
Max no of users
这帐号同时允许的总连接数目
其馀的比较少用, 看 HELP 吧
Dir Access:
这里设置这用户对你硬盘中, 实际路径的读写权限, 关键哦!
无论是 HOME 目录好, 映射目录也罢 要让用户用得到, 也要在这里加
具体意义在界面上也很明确吧 不多说了, 但别忘了
(记得把 HOME 目录在这里加多一次, files-[read], directories-[list]
这样人家看能看到, 下载到你的东东)
Step #3: 群组帐号
在 Domains 下
Groups 右击出现新增/移除用户选单
看上去很简单是不是 对了 把一个 Group 设置了一点参数,
在任一用户 - Account - Group(s) 中把他加进去, 他就拥有那个参数的权限
有什么用 你自己想想吧
哈哈 基本上我们都搞好了, 但是重头戏 Virtual path mappings 还没出场,
到底这东东有什么用处, 又是什么设置的呢 请看下回分解!
原文再续书接上一回, 话说上次说到 Virtal path mappings 就打住不说,
究竟是什么原因呢 这是因为很多老鸟都对上面几篇一屑不顾, 但却往往
死在 VPM 手上, 但是死在 VPM 的石榴裙下也甘心了 呵呵
在 Domains 下
Settings:
General:
Virtual path mappings:
Step #1: 虚拟路径映射的概念:
1 Physical path: 目录的实际路径
可以是任何Windows分区上任何东东, 甚至网络邻居里的也可以
2 Mapped to: 映射到 (这个目录必须实际存在)
你想把它"变到"你硬盘里的那个目录呢
你可以用到两个变量:
%HOME% : 即"Home directory"
%USER% : 用户名
3 mapped path name:
这个虚拟目录在显示出来的名字
4 记得要在各用户的 Dir access 中设置它对实际路径的权限哦!!!!
Step #2: 举例:
1 你想把 f:\movie\ 映射到匿名登录后看到的 \MyMovie 目录:
Physical path: f:\movie\
Mapped to: %HOME%
mapped path name: MyMovie
在 anonymous 帐号对 f:\movie\ 设 file - read, dir - list 权限
2 你想把 g:\mp3\ 映射到 alex 登录后看到的 \Audio\MySongs 目录:
Physical path: g:\mp3\
Mapped to: %HOME%\Audio
mapped path name: MySongs
在 alex 帐号对 g:\mp3\ 设 file - read, dir - list 权限
哈哈 还有封人的方法没说吧 欲知后事如何, 请看下回分解!
关于多级目录映射的补充。。 来自fiend-smth
有点混乱。。嘿嘿
原文再续书接上一回, 封人对于很多人来说都是很过瘾的事,
所以就有这篇东东了
Step #1 按 IP 封
在 Serv-U 中, IP Access 很多地方都有出现, 这就是限制 IP 访问的地方了
Domain- Settings 里有; 各用户- Settings 里有; 各群组- Settings 里也有
IP access:
如果要限制 IP, 就在这里设置 限制是由上到下执行检查的
这里给出一些例子: (!注意次序!)
1 只对某几个 IP 开放帐号:
----------------
A: 202382418
A: 202382492
A: 202382483
D:
----------------
意思是, 对 202382418 , 202382492 , 202382483
开放, 其馀都不准进入
2 只对一个网段开放:
----------------
A: 20238241
D:
-----------------
意思是, 只对 20238241 开放, 其馀拒绝
3 只拒绝部分IP
--------------
D: 123166
D: 2023823456
A:
--------------
拒绝 123166 的B类网段, 及 2023823456 访问,
其馀都欢迎
看了三个例子, 大家都志该知道 IP 限制如何设置吧,
要注意的一点是, 最后一个限制项目, 最好要设成
A: (其馀都允许进入) 或
D: (其馀都不准进入)
否则, 可能会得不到预期中的限制的效果
Step #2 看不爽封
如果有个人连了上来, 你看他不爽想封掉他
在 <<Local Server>> - Activity 或
你的Domain - Activity 会看到他,
右击, KILL USER
他在你FTP的命运就在你手中了
FTP基础知识
您是否正准备搭建自己的FTP网站?您知道FTP协议的工作机制吗?您知道什么是PORT方式?什么是PASV方式吗?如果您不知道,或没有完全掌握,请您坐下来,花一点点时间,细心读完这篇文章。所谓磨刀不误砍柴功,掌握这些基础知识,会令您事半功倍。否则,很可能折腾几天,最后一事无成。
FTP基础知识
FTP是File Transfer Protocol(文件传输协议)的缩写,用来在两台计算机之间互相传送文件。相比于HTTP,FTP协议要复杂得多。复杂的原因,是因为FTP协议要用到两个TCP连接,一个是命令链路,用来在FTP客户端与服务器之间传递命令;另一个是数据链路,用来上传或下载数据。
FTP协议有两种工作方式:PORT方式和PASV方式,中文意思为主动式和被动式。
PORT(主动)方式的连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路。
当需要传送数据时,客户端在命令链路上用 PORT命令告诉服务器:“我打开了端口,你过来连接我”。于是服务器从20端口向客户端的端口发送连接请求,建立一条数据链路来传送数据。
PASV(被动)方式的连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路。
当需要传送数据时,服务器在命令链路上用 PASV命令告诉客户端:“我打开了端口,你过来连接我”。于是客户端向服务器的端口发送连接请求,建立一条数据链路来传送数据。
从上面可以看出,两种方式的命令链路连接方法是一样的,而数据链路的建立方法就完全不同。而FTP的复杂性就在于此。
FTP服务器端的注意事项
一、FTP服务器是公网IP,用公网动态域名;或是内网IP,用内网专业版TrueHost
1、服务器如果安装了防火墙,请记住要在防火墙上打开FTP端口(默认是21)。
2、所有FTP服务器软件都支持PORT方式。至于PASV方式,大部分FTP服务器软件都支持。支持PASV方式的FTP服务器软件,也可以设置为只工作在PORT方式上。
3、为了PASV方式能正常工作,需要在FTP服务器软件上为PASV方式指定可用的端口范围(设置方法)。此外,还要在服务器的防火墙上打开这些端口。当客户端以PASV方式连接服务器的时候,服务器就会在这个端口范围里挑选一个端口出来,给客户端连接。
二、FTP服务器是内网IP,用内网动态域名标准版cmnatproy
这种情况下,FTP服务器不需要做特殊设置,只要支持PASV方式就可以了。大部分FTP服务器软件都支持PASV方式。
FTP客户端的注意事项
请注意:选择用PASV方式还是PORT方式登录FTP服务器,选择权在FTP客户端,而不是在FTP服务器。
一、客户端只有内网IP,没有公网IP
从上面的FTP基础知识可知,如果用PORT方式,因为客户端没有公网IP,FTP将无法连接客户端建立数据链路。因此,在这种情况下,客户端必须要用PASV方式,才能连接FTP服务器。大部分FTP站长发现自己的服务器有人能登录上,有人登录不上,典型的错误原因就是因为客户端没有公网IP,但用了IE作为FTP客户端来登录(IE默认使用PORT方式)。
作为FTP站长,有必要掌握FTP的基础知识,然后指导您的朋友如何正确登录您的FTP。
二、客户端有公网IP,但安装了防火墙
如果用PASV方式登录FTP服务器,因为建立数据链路的时候,是由客户端向服务器发送连接请求,没有问题。反过来,如果用PORT方式登录FTP服务器,因为建立数据链路的时候,是由服务器向客户端发送连接请求,此时连接请求会被防火墙拦截。如果要用PORT方式登录FTP服务器,请在防火墙上打开 1024以上的高端端口。
三、连接用内网标准版cmnatproy搭建的FTP服务,必须要用PASV方式。连接任何公网FTP服务器、或用内网专业版TrueHost搭建的FTP服务器,PORT方式和PASV方式都可以使用。
当然,使用PORT方式的时候,还要满足上面的两个条件。
四、常见的FTP客户端软件PORT方式与PASV方式的切换方法。
大部分FTP客户端默认使用PASV方式。IE默认使用PORT方式。
在大部分FTP客户端的设置里,常见到的字眼都是“PASV”或“被动模式”,极少见到“PORT”或“主动模式”等字眼。因为FTP的登录方式只有两种:PORT和PASV,取消PASV方式,就意味着使用PORT方式。
IE:
工具 -> Internet选项 -> 高级 -> “使用被动FTP”(需要IE60以上才支持)。
CuteFTP:
Edit -> Setting -> Connection -> Firewall -> “PASV Mode”
或
File -> Site Manager,在左边选中站点 -> Edit -> “Use PASV mode”
FlashGet:
工具 -> 选项 -> 代理服务器 -> 直接连接 -> 编辑 -> “PASV模式”
FlashFTP:
选项 -> 参数选择 -> 代理/防火墙/标识 -> “使用被动模式”
或
站点管理 -> 对应站点 -> 选项 -> “使用被动模式”
或
快速连接 -> 切换 -> “使用被动模式”
LeechFTP:
Option -> Firewall -> Do not Use
五、请尽量不要用IE作为FTP客户端
IE只是个很粗糙的FTP客户端工具。首先,IE60以下的版本不支持PASV方式;其次,IE在登录FTP的时候,看不到登录信息。在登录出错的时候,无法找到错误的原因。在测试自己的FTP网站的时候,强烈建议不要使用IE。
FTP建站的详细配置过程
请参考这个网页的说明来配置:
使用Serv-U建立FTP网站
高级话题
一、为什么没有公网IP,也能使用PORT方式登录FTP?
NAT 网关的工作方式是在TCP/IP数据包的包头里找局域网的源地址和源端口,替换成网关的地址和端口。对数据包里的内容,是不会改变的。而使用PORT方式登录FTP的时候,IP地址与端口信息是在数据包里面的,而不是在包头。因此,没有公网IP,使用PORT方式是无法从internet上的ftp服务器下载数据的。
但是,极少数的NAT网关也支持PORT方式。这些NAT网关连数据包里面的内容都扫描,扫描到 PORT指令后会替换PORT方式的IP和端口。在这种NAT网关下面,用PORT方式就没问题了。不过,这些网关也只扫描21端口的数据包,如果FTP 服务器不是用默认的21端口,也无法使用PORT方式。
二、内网可以用PORT访问其他FTP,为什么不能用PORT访问自己的TrueHost FTP?
下面要讨论的问题,只是为了说明一些原理,是不影响实际使用的。如果您没有兴趣深究这些原理,不必花时间看。
内网用户通过支持PORT方式的NAT网关,访问自己本机利用TrueHost建立的FTP服务器,FTP命令链路的建立过程如下:
FTP客户端
101001
端口 <==> ISP NAT网关
6114412
端口 <==> TH服务器
端口21 <==> TH客户端 <==> 用户FTP服务器
101001
端口21
FTP客户端通过ISP的NAT网关、科迈TrueHost服务器、TrueHost客户端,连接用户本机的FTP服务器的21端口。
当需要下载数据的时候,FTP客户端通过这条命令链路,向FTP服务器发送PORT命令。假设命令为:
PORT 10,10,0,1,30,4 (即IP=101001 端口=30256+4=7684)
当命令通过ISP的NAT网关的时候,NAT网关判断目的端口是21,并且是PORT命令,于是,修改命令里的IP和端口,替换为自己的IP和端口,比如:
PORT 61,144,1,2,50,6 (即IP=6114412 端口=50256+6=12806)
用户的FTP服务器最终收到的是上面这个PORT命令。于是,FTP服务器向这个IP和端口发送连接请求,建立数据链路。
用户FTP服务器
101001
端口20 <==> ISP NAT网关
6114412
端口12806 <==> FTP客户端
101001
端口7684
但是,因为NAT网关的公网IP只能接收外来的连接请求。就是说,6114412:12806只能接收其他公网IP的连接请求,对于从NAT内部(101001:20)发起的连接请求,是无法建立连接的。为什么?原因很简单,因为内网IP要访问外网,必须要通过NAT建立映射。于是FTP数据链路无法建立。于是,用户无法在自己的机器上通过21端口访问自己的TrueHost FTP。
我们再来看看,如果FTP端口不是21,比如是22,会发生什么情况呢?在FTP客户端发送PORT命令的时候,NAT网关检测到目标端口是22,因为支持PORT的 NAT网关只监视目的端口是21的数据包,发现目的端口是22的数据包,不做任何处理,完全放行。于是FTP服务器收到的PORT命令依然是PORT 10,10,0,1,30,4。于是FTP服务器向这个IP和端口发送连接请求。
用户FTP服务器
101001
端口20 <==> FTP客户端
101001
端口7684
这种情况下命令链路就可以建立起来了。而且是等于本机连接本机,速度飞快。
综上所述,内网用户无法用PORT方式通过21端口访问自己的TrueHost FTP服务器。如果FTP端口不是21,则可以访问,而且实际上是本机连接本机。
上面的文字,仅仅是为了说明一些原理,不影响实际使用。如果本机访问本机,还要通过FTP的话,就有画蛇添足之嫌了。
0条评论