2005/10/16 | 4F外网映射内网的最终解密
类别(电脑维修经验_软件技巧) | 评论(1) | 阅读(365) | 发表于 11:32

比较详细的说明了映射的一些理论,会给人一些启发 希望能有高人做出新的上外网的方法
也许有朋友已经看过了,那就在温习一次吧
端口映射的必要性。
大家知道,一个服务器想要被别人访问,就一定要有别人认可的IP地址,
在局域网中(简单局域网,无路由),要有和别人子网相同的IP地址,
在广域网中,要有合法的Internet地址,才能被别人访问到。
小常识:
10.0.0.0/8:10.0.0.0~10.255.255.255
172.16.0.0/12:172.16.0.0~172.31.255.255
192.168.0.0/16:192.168.0.0~192.168.255.255
这些IP地址都是保留地址,只能在局域网中使用。
由于现在的IPv4地址资源很紧张,最多到 223.255.255.255
现在已分配到 219.xxx.xxx.xxx, 所以绝大多数网吧、单位只有一个或少数几个IP地址(数据局除外).所以大多数采用了NAT(network address translating)网络地址转换的方法来访问internet,除了主服务器,别人都不具备internet合法地址
如果你的网吧想建4F(包括任何服务),除非你的4F运行在主服务器上(太不安全了),否则就要用到端口映射
2.端口映射的方法
其实端口映射很简单,很多软件都支持端口映射,比如windows 2000的routing and remote access, Wingate, Winroute, Portmap, 等等等等,简直是不计其数,
注意:所有的端口映射软件都是工作在上网主机(218.218.218.218)上的,不过他们所说的破解封外挂的4F的端口映射不在这个讨论范围内。
但是他们的工作原理又大不相同,routing and remote access 和winroute 是工作在链路层(互联层)的,而其他大部分则是工作在应用层,他们的区别就是,当别人连到你内网的服务器的时候,前者看到的是他们的真实IP,后者看到是你的主服务器的内部IP.
理论上,工作在链路层的效率比应用层要高,所以winroute 和 routing and remote access是首选,因为他们既支持NAT有支持portmap, 由于其他一些原因,我选择的是winroute.
但是用winroute 和routing and remote access 做端口映射的问题就是内网无法连接到服务器所开放的外网的端口上,这个问题将是我们一会将要讨论的重点问题。
3.4F的端口映射问题
很多人做4F端口映射都很不成功,不是不开门,就是进入后黑屏,但是一般都能进入到输入帐号和密码的界面,这是为什么呢?关键问题就是传奇这个游戏的进入时的3次客户端连接过程,(其他游戏大部分也类似)。
传奇的3次连接过程为,1-连接到 logingate上,输入完用户和密码后,出现选择服务器画面,选择完服务器后,2-连接到SelChrGate上,选择完人物后,3-连接到RunGate上开始游戏。
关键问题在这里,由于传奇游戏在设计的时候,几个Gate是在不同的机器上运行的,(在此驳斥一下所谓的盛大服务器控制端,难道盛大穷的只有一台服务器?)每个Gate所在地机器的IP地址很可能是不同的,(当初设计的时候没有打算到用NAT),但是我们说服务器的时候只说了一个IP地址,那其他地址怎么办呢?原来这里有一个有趣的引导过程,在你进入loginGate,选择了服务器名称后,LoginGate就会在他自己的表(就是\mirserver\mud2\logsvr\!addrtable.txt)中选出服务器名称对应的IP地址(remote)和端口(Gates),告诉客户端,这时客户端按照这个地址去连接SelChrGate,选择好人物后,SelChrGate又会告诉你RunGate的地址(就是\mirserver\mud2\dbsrv200\addrtable.txt)和端口(\mirserver\mud2\dbsrv200\serverinfo.txt)。
由于种种原因,我们在那些配置文件中只能写一个IP地址(每个Gate的IP地址可以不同)但同一个Gate不管对内网还是外网都是一样的IP地址(多机负载同样如此),这就要求我们所写的这个IP地址不管内网外网都要能访问,这个IP地址应该写什么呢,对,就是主服务器的外网IP,但是这时候,用winroute做端口映射的问题就来了,比如内网192.168.1.0/8 主服务器192.168.1.1,4F主机192.168.1.2,内网客户机192.168.2.9,主服务器外网218.218.218.218,已知主服务器在218.218.218.218开了一个端口3000指向192.168.1.2的3000端口,从192.168.1.9上运行telnet 218.218.218.218 3000 就会不能连接,这时候的现象就是外网能进,正常,内网不开门,当你把每个Gate的地址都改为内网IP 192.168.1.2的时候(这是不对的),内网能进了,外网进不来,因为他们收到的引导地址是192.168.1.2,一个他们永远也不可能连上的地址,
当这种情况发生后,要从端口映射上动手。
4.手把手教你做端口映射
4.1测试端口映射成功与否
各种软件的端口映射方法大同小异,一般有4个空是必须添得,外部IP,外部端口,内部IP,内部端口,这两个内部指的是 192.168.1.2这台机器,当然,有些软件还有其他选项,比如IP地址限制(黑名单),最大连接数,流量检测等等。推荐软件PortMap.

先做一个测试端口映射,在主服务器IP218.218.218.218(根据你自己的IP写)上开3000端口,(是端口号3000,不是3000个)指向192.168.1.2:3000, 192.168.1.2这台机器上只运行一个loginsvr.exe, 这时候在 192.168.1.9这台机器上(在4F主机192.168.1.2也可)运行telnet 192.168.1.2 3000,应该显示在线人数0人,服务器名称等信息,然后再试,运行telnet 218.218.218.218 3000,(根据你自己主机的地址改变) 如果这时候仍能看到和刚才一样的现象,恭喜你,映射十分成功,接下来的工作只要把每个Gate的IP都改成外网IP,就启动整个4F了,然后再做好7000 7100 7200 三个端口映射,就可以进行测试了,
(如果你确定你的Gate的IP地址写的正确,那么如果不成功也不用重新启动4F,只是改动端口映射软件就行了),每次只要测试 telnet 218.218.218.218 7xxx, 看看能不能连上就可以了,如果不能连上,换一换你的端口映射软件。
5,提高篇
刚才说了winroute,现在该说他了,如果你用的软件是PortMap累的软件,你会看见所有外网的人登陆IP都是192.168.1.1,这可怎么封IP地址呢,也没法管理呀,这时候就要用到Winroute了,Winroute强大的功能和超强的稳定性无疑伦比的速度至今令我十分佩服,他就是我梦寐以求,寻找了多年的NAT软件,提供了所有我想要功能,包括Multi-NAT,但是美中不足,不能做4F的端口映射软件,就是因为他不能提供内网机器通过外网地址访问内网机器,但是我又不想舍弃,怎么办呢?办法有了,用Winroute和PortMap组合使用,因为他们工作在不同的协议层,所以并不互相冲突,两个都配置好端口映射后,Winroute的优先级比别人高,他先判断,如果是外网访问,他就负责转发,如果是内网,他就会把请求转发给PortMap,简直是太棒了,兼顾了速度和通用性,而且屏蔽IP地址简直易如反掌,还把内网和外网的访问给分开了,Winroute中包含了一个详尽的使用说明,可惜是英文,晚些时候我会翻译给大家的。
这就是我现在用的端口映射方法。
6,另类方法
这种方法完全不用端口映射
把3个Gate拷到主服务器上,连配置文件也不用改,依次运行,
4F主机配置好后,运行除3个Gate外的所有程序,即可
盛大采用的就是这种方法。
推荐所有人使用这种方法,
7,其他情况
有些网吧没有主服务器,NAT在路由器上实现,那就要在路由器上做端口映射,部分路由器支持内部机器通过外部IP地址访问内部机器,对于不支持的,暂时没有办法解决。这些问题不在此文章讨论范围之内。
8,总结
本文只讲述了端口映射方法和4F端口映射不能成功的原因以及注意事项,并未讨论有关
4F的配置问题。
0

评论Comments