搜索
查看: 7885|回复: 20

[AMXX 带源码] ROS 2.96 端口映射、IP显示及回流设置(网吧架设)!

[复制链接]
发表于 2009-1-9 16:30:18 | 显示全部楼层 |阅读模式 来自 中国–新疆–乌鲁木齐
1、什么是端口映射
  这里说的端口映射是路由器上的端口映射。一般情况下,网络中路由器都有防火墙功能,互联网用户只能访问到你的路由器WAN口(接ADSL线口或是固定的外网IP地址),而访问不了局域内部服务器或工作站。要想让外面用户访问到局域网的电脑,那么就要在路由器上做一个转发设置,也就是端口映射设置,让用户的请求到了路由器后,能够转发到局域内部的机器上,例如游戏服务器或WEB服务器。这就是端口映射。
      在局域网中建建立一个CS服务器,IP地址为:192.168.0.235,端口为27015,此时在局域内部,如果要在外网上访问服务器,就要把192.168.0.235这台机器的27015端口通过路由器映射到外网。除了CS服务外,其它的服务例如FTP、远程桌面等服务都可以将不同的端口映射出去,以便能在外网通过路由器来访问内网机器。一般的路由器都带有端口映射功能,以下对目前使较多的ROS软路由的端口映射作一说明,并提出解决外网IP显示及回流设置。
2、ROS 2.96 的端口映射的设置

进入winbox,点击IP→ Firewall→Nat打开防火墙设置界面。点击左上角红色的“+”号,添加一条dstnat规则,其中dst.address 填写你要映射的外网IP,本例为218.87.96.xxx(此处请填入您的外网IP),然后选择protocol协议为6,即TCP协议,设置Dst. port(目标端口)为80。设置完成后如图1所示。


  单击“Action”选项卡,在Action框中,选择“dst-nat” ,在“To.Address”框中填写内网提供服务的IP地址,本例为192.168.1.3,在“To.Port”填写内网提供服务的IP端口,这样基本映射就完成了,如图2所示,此时可以在外网中输入你的外网IP,即可看到内网192.168.1.3WEB服务器上的网站了。以同样的方法可以设置FTP和远程桌面。注意这些服务的端口都是不一样的,例如你有两台内网WEB服务器,80端口已经用掉了,第二台便来能映射到80上了,但可以映射到其它没有使用过的端口上,例如81端口。例如可以将内网192.168.1.4:80映射到外网218.87.96.xxx:81端口上。这样就能在同一个外网IP访问两台内网WEB服务器了。



3、IP显示和回流问题解决

  经过第二步的基本端口映射设置后,外部可以访问内网了,但存在一些不完善的地方,例如所有的外网访客的地址都是路由器的内网网关,本例为192.168.1.1,如图3所示。这样就无法统计访客的来源,还有许多的不便,例如WEB中的论坛就无法屏蔽一些会员的IP了,因为大家都是192.168.1.1。



  原因是这样造成的:为了使整个内网的所有机子共享上网,在设置ROS时,我们都要设置一条srcnat规则,Action设置为“Amasquerade”,Amasquerade是snat的一个特例,主要用在无固定ip网关的情况下,比如adsl拨号等,masquerade比nat效率低的原因是nat直接指出需要伪装的源地址,而masquerade需要伪装的源地址必须到默网关中寻找,masquerade永远以默认网关地址为ip伪装的源地址,所以首先效率慢了点,其次只能用在外网ip只有一个的情况,如果有多个wan接口就不能用masquerade,而只能用nat,因为nat可以手工指定多个需要伪装的源ip地址,而masquerade却只能找到一个地址,就是默认网关的地址。由于NAT方设置较Amasquerade复杂,加上现在大量的ROS教程都是以Amasquerade方式共享上网,所以目前在用的ROS大多数采用Amasquerade设置共享。通过上面分析,我们可以看出为什么在端口映射后,外网访问的IP都成了内网网关,解决的方法有两种,一是改用nat方式,这种方式有局限性,只能用于固定IP的外网,若是ADSL则不能用;另一个方法是通过调整masquerade的设置来完成显示外网IP,具体操作如下,进入winbox,点击IP→ Firewall→Nat打开防火墙设置界面,双击原来建立的srcnat规则Amasquerade(用于共享上网),在“General”选项卡的“Out. Interface”选中“LAN”即内网网卡,单击将前面的小框,在框中出现“!”,单击“OK”完成此设置。



 这样设置完成后,我们可以发现外网访客可以正常访问,而且IP显示也是正确的,但同时导致别一个问题,就是内网用户不能用外部ip访问映射的内部服务器,要按下面方法解决:再增加一条对内网的规则,Action设置为“Amasquerade”,在“General”选项卡中,设置Chain为“srcnat”,Src. Address为“192.168.0.0/21”由于本例中的内网有192.168.0、192.168.1、192.168.7等几个C类网段,所以在此将子网设置为21,也就是255.255.248.0,设置好后如图5所示。一般的情况,只有一个网段时,例如192.168.1,可以设置子网掩码为24,即255.255.255.0,此处可以填写:192.168.1.0/24,可以根据自己内网情况作相对应的修改。



  到此,内外网都能正常访问了且外网访客IP是正确的,此时内网用外网IP访问WEB时,显示的IP是内网网关地址,用这种方法可以实现内外网用户都用网关外部ip访问映射的内部服务,并解决了外部用户显示的ip不正确问题,当然这种方法内网用户显示的ip还是不正确的,要解决内网显示ip问题,可以在routeros中设dns服务器,用域名来访问,内网访问内网ip,外网访问外网ip就能完美解决。我想我们主要是要知道外网的IP,内网的IP并不重要。所以至此设置就可以算是完毕了。

  下面说一回流的问题,其实所回流,就是将内网源地址为网段的所有机器对所有目标地址的需求全都进行源地址转换为外网IP,然后转发出去。所有从外网回来的数据通过外网IP再回传到内网的机器,这样就保证了内网上网正常,但这样的效率下降到原来的50%,显然是不合算的。对于Amasquerade来共享上网时,外网访问的IP显示还是内网网关,所以回流是不可取的。虽不可取,我们也把方法写出来,供大家参考,添加一条srcnat规则,src.address写上内网的网络地址,请注意,不是主机地址,指提是网段,若内网IP是192.168.0.X网段并且子网掩码是255.255.255.0,那么就填写192.168.0.0/24,dst.address填写的是内网提供服务的主机IP protocol协议和port 端口请参看本文前面的内容,Action选项卡还是选择src-nat to.address则填写映射的外网IP,port 端口。
发表于 2009-1-9 16:31:16 | 显示全部楼层 来自 中国–河南–郑州
这个。。 学习下
回复

使用道具 举报

 楼主| 发表于 2009-1-9 16:31:43 | 显示全部楼层 来自 中国–新疆–乌鲁木齐
多种映射方法是互通的,注意的是协议选择和端口设置,例如CS服务器就要用UDP协议,映射端口27015
回复

使用道具 举报

发表于 2009-1-9 18:32:45 | 显示全部楼层 来自 马来西亚
原来是这样,这个我想知道很久了。哈哈,学来玩下。
回复

使用道具 举报

发表于 2009-1-9 18:36:23 | 显示全部楼层 来自 马来西亚
3# orange3


楼主的 UID 竟然是 44444 !!! 大发现!!!
回复

使用道具 举报

发表于 2009-1-11 12:10:04 | 显示全部楼层 来自 中国–广东–珠海
顶一个啦
回复

使用道具 举报

发表于 2009-1-11 12:11:36 | 显示全部楼层 来自 中国–广东–韶关
3# orange3


楼主的 UID 竟然是 44444 !!! 大发现!!!
Hoyc 发表于 2009-1-9 18:36

额``  不吉利
回复

使用道具 举报

发表于 2009-1-11 12:15:04 | 显示全部楼层 来自 马来西亚
7# 8874323


5 个 4 = 不死 = 吉利

另外,这个好像需要特定的路由器才做到,或者在网吧里才做到,我到现在还是弄不到。
回复

使用道具 举报

发表于 2009-1-11 20:50:00 | 显示全部楼层 来自 中国–湖南–怀化–鹤城区
顶下,不错,支持
回复

使用道具 举报

发表于 2009-1-12 05:05:57 | 显示全部楼层 来自 中国–云南–大理白族自治州–大理市
不错,支持一下
回复

使用道具 举报

游客
回复
您需要登录后才可以回帖 登录 | 注个册吧

快速回复 返回顶部 返回列表