根据局域网连接因特网方式的不同在此分别解说:
1、接口
1.1、通过因特网共享器(因特网拨号器、因特网路由器)或者服务器使用sygate,winroute等方式,包括路由器加adsl或isdn模块拨号上网的,通称浮动ip路由上网。
1.2、通过因特网共享器或者服务器使用wingate,ms-proxy等方式代理上网。
1.3、ddn或者其他线路专线(isdn回拨,adsl热线等)固定ip路由上网。
2、防火墙
2.1、需要通过或者只通过网关式防火墙。
2.2、需要通过桥式防火墙。
2.3、无防火墙。
首先确定,1.2不可能做公开服务器!
了简化情况,忽略防火墙,说接口。
第一种的浮动IP路由上网,需要确认路由设备(或者软件)有一个反向代理(也有叫反向NAT的),如果有的话,恭喜你;没有的话就没有办法了,至少通过这个路由没办法了。
设定方法是:设定对本地21端口的访问--(目标到)--你机器内部IP的21端口。当然,不一定是21,可以自己设定。如果设备和软件功能不是很好的话,设21会造成其他人不能上FTP,那就改掉,比如8021--221等等。
第三种的固定IP上网,比较好弄。如果是WIN2000,在一块网卡上绑两个IP地址,一个内部,一个公共;其他系统的要两块网卡。配置路由器,可以不对S口设定公共IP,也可以设一个;对Ethernat口设一个公共IP;开放对端口的控制(如果有的话)就可以了,你的机器就是处于公网了。
然后说说防火墙。
桥式防火墙被认为是透明防火墙。可以把它看成过滤膜,只要在设定上打开进出21端口(或者需要的端口)就像没有防火墙一样的。
只通过网关式防火墙:情况和浮动IP路由上网一样,要有反向代理。
既要通过路由器,又通过网关式防火墙的复杂一点。当然还要有反向代理,只是要路由器反向代理到防火墙,再反向代理到你的机器。
實說穿了,即是位址轉換+接口傳遞
位址轉換,即是Network Address Translation(NAT),可以說是一種「幻術」,是在路由器(Router)上經過的封包做手腳。大家或者已知IP封包是有來源地址及目的地址,而NAT就是改變這些地址。NAT有兩種,一是SNAT,另一是DNAT。通常我們見到的網絡分享(Internet Connection Sharing),是其中一種特殊的NAT。而lancelotz說的反向NAT,則是DNAT。
SNAT,顧名思義,是改變來源地址。為什麼要這樣做?有很多原因,但都是要使收到封包的機器誤認來源(這裡說錯誤,是指真實世界而言)。打個比方,我內部網絡計算機是用一些不能見光的IP地址(像私人網地址Private Network Address),正常而言,我送出一個封包,來源地址一定是那些不見光的,人家不能回應我的封包。為了解決這問題,我每一次傳封包出去時我的路由器便把來源地址改成見得光的地址(公用地址Public Address),人家便可以回應我吧?但為了完成這一個Loop,路由器會記下這次的連線,回應的封包,會以DNAT(以下再說)的方法去傳回送件者。
SNAT,則是改變目的地。之前說過回應的封包要以DNAT的方式再轉換一次,其實是須要的。因為之前說過內部的電腦是用私人而不見得光的地址,而要變成公用的地址。那麼當封包回來內部網絡時,可不是要改回私人地址吧?
以下有兩個小圖是給大家明白:
在此SNAT
┌──┐ ┌───┐ ┌───┐
│內部│ -> │路由器│ -> │外界 │
└──┘ └───┘ └───┘
來源地址是 來源地址是
用私人地址 用公用地址
的封包 的封包
在此DNAT
┌──┐ ┌───┐ ┌───┐
│內部│ <- │路由器│ <- │外界 │
└──┘ └───┘ └───┘
目的地址是 目的地址是
用私人地址 用公用地址
的封包 的封包
注意:路由器是同時布私人地址及公用地址
而接口傳遞,Port Forwarding,則比較簡單。它所做是,只是傳遞的工作。而它會長期監視某一個接口,打個比方,第21個(FTP)。而當有任何的封包到達這接口時,它會把這封包傳給預定的目標,可以是同一台機器的另一個接口,或者另一台機器的接口。當然,也要用到DNAT。但今次不只改地址,連目的接口也改去。