一直以来FIFA年货系列都傍有“连不上”、“掉线”、“高延时”、“搜不到人”等属性,被抱怨为EA小霸王服务器、巨硬垃圾服务器或者是大局域网没办法了。大家都很羡慕肉身***的玩家,也羡慕有的地方有的运营商的网络可以裸连无压力的玩家,但很不幸我并不属于这两类。还有就是已挂神器的同胞们,为你们的动手能力点赞!
本教程只以我自己的现状为例,如果环境不同,需要各位Diyer有触类旁通能力: 路由器:树莓派,运行raspbian 游戏机:Xbox One 网络ISP:主线浙江电信,辅线移动,通过路由表让两线共存 神器:威屁恩或SS都可以,甚至是socks5 不要问我光宽带是几M的,联机只要光(Kuai),不要宽,1M都嫌多。
进入正题之前,麻烦各位先移步非凡网看一下管理员对一些专有名词的科谱,本文就不做重复工作了,后面会直接使用这些名词。
"""
To continue, please ensure that you are signed in to Origin.
The EA servers are not available at this time. Please try again later.
You have lost connection to the EA servers. Online features will be unavailable.
Unable to connect to the EA servers at this time. Please check your network connection or try again later.
You have lost your connection to the EA Servers. You will be unable to access any online features until you sign in to the EA Servers.
目前无法连线至EA伺服器。请检查你的网络连接或稍后再试。
你必须以Xbox Live帐户登入且必须登入EA伺服器才能使用此产品的网上功能。
无法连接EA伺服器。您必须先以在线模式登入Origin才能使用游戏的线上功能。
你与EA伺服器的连线中断。请确认你的乙太网络连接线插妥。除非你再次登入,否则无法使用任何网上功能。
"""以上这些触目惊心的提示,就是我们要干掉目标,我会说一句句列出来是为了提高搜索量?
FIFA线上游戏需要连接多个服务器,依次是:
- 验证XBOX LIVE登录状态
- 登录该XBOX LIVE帐号关联的EA帐号(新号会要求关联)
- EA帐号登录成功后,与gosprapp server建立一条持久连接
- 登录EASFC Server,取得帐号的等级、经验、积分、虚拟道具等信息
- 「可选」登录UT Server取得令牌、「可选」登录到PRO CLUB MATCH SERVER
以上五步,前三步执行不成功,都别想玩在线内容。第三步的server名有点怪,不要问我为什么叫这个名字,我也不知道为什么,但是第三步的这个server就是我要讲的重点,你掉不掉线就看这条持久连接持久不持久XD。第四步最重要的就是俱乐部属性加成的虚拟道具了吧,其它的么就是买买衣服和UT金币奖励了,这个掉了游戏不掉,而且不是持久连接,要定期出来刷新一下。第五步只有玩UT的人才有了,取得令牌后也没有持久链接,之后每次操作都使用该令牌进行对话,如果对话出错就只掉UT,如果第三步的gosprapp server掉线,UT也就跟着掉,这两种掉法区别很明显,前者是要有操作才掉出UT,后者是莫明奇秒被强退且弹出好几句提示;然后这个PRO CLUB MATCH SERVER的意思字面理解,就是玩俱乐部的人才有,比赛是通过SERVER中转的而不是像1v1时使用的P2P技术,比赛时有持续链接,跟这个SERVER连接质量好不好就关系到玩俱乐部卡不卡,掉不掉线的事情了。
这张图中,左边的窗口是我的路由器流量监控界面(懂行的叫iftop),其中第一例是数据包的对端,第二例全是192.168.1.11是被我过滤了只显示这个IP相关的流量,这个IP就是我的XBOX ONE局域网IP。 这其中只有三行重要数据,其它都是临时的过一会儿会消失或变成其它IP包,我标红了这三行,分别是:
- 我正在联机的玩家的IP和端口,这个连接是UDP的,3074是Live给我们分配IPv6地址的默认通讯端口,1v1卡不卡或掉线,就是跟这个IP之间两个人的事情了,跟别人没啥关系,可以用ping和tracert测试你们之间的网速和路由节点(如下图)。
- 162.13.234.102:10073就是上面提到的那个第三步的持久连接:gosprapp server,这条连接是TCP长连接,只要你在玩就一直存在,不管有没有在联机。突然掉线就是这条TCP长连接断开了。有的时候重连能解决,有的时候就是不改路由节点就上不去了。而且很重要的是该服务器还决定着你的匹配地址池(如果开了只匹配附近的人),根据你连接它的IP地址,裸连的话就是你的ISP分配给你的公网地址,用了神器的话就是神器的公网地址。再说一遍:gosprapp server根据你的连它的公网地址决定你的匹配地址池,所以掉线和搜不到人,都是这个gosprapp server搞的鬼。
①.所以看到这里就已经可以得出结论,你与gosprapp server之间的连接的稳定性,就决定了你掉不掉线,裸连不稳定,那就用神器。 ②.推荐神器只开TCP转发,不要开UDP转发,这样的效果是上面两个IP,对方玩家不通过神器,依旧裸连,EA服务器用神器改善以达到不掉线的效果。 ③.挂了神器后大多分为两种人,一种从此搞定,Problem solved! ④.另一种是EA不掉线了,但成为搜人困难户。这种我只能建议你换个服务器,多找几家讨测试的试试。 ⑤.目前我碰到最好的两个地址池是能匹配的大陆的和匹配到美国人且不卡的,只要时间段正确一般能达到秒搜的效果。我最近晚上22点踢到1点,一般能踢完一个赛季多几盘。
65.55.158.118:3544是微软给我们分配IPv6地址的服务器,长期存在,是UDP的。只要NAT正常一般不用管它。这个IPv6转IPv4让我们能够愉快地对战的技术名字叫Teredo,后面我会用到一些Teredo的专业述语,有兴趣了解的可以去百度百科http://baike.baidu.com/view/2224124.htm(如果你能啃完这篇百科,就可以不用看我下面这些了)。测试Xbox开放等级的就是Teredo Server,我放在这里讲一下它的连接步骤:
①.Xbox开机登录后,你找65.55.158.118:3544注册IPv6地址以供待会多人联机使用。 ②.你会通过这个Teredo技术分配到类似2001:0:4137:9e76:20b5:f3fd:0101:0101这样的IPv6地址,这个地址被冒号隔开共8段数字,1和2段是Teredo固定前缀,3和4段连一起换算出来就是Teredo服务器65.55.158.118,第5段就是你的NAT状态,第6段是你的Teredo通讯端口(0xffff-0xf3fd=0xc02=3074),7和8段连起来就是你的IPv4公网地址。 ③.以后联机的时候,每个Live玩家各拿着一个IPv6地址,互相试探敲门,连上了就开搞。NAT开放等级、网速、路由节点等因素都影响连接成功率。 ④.举例:联机时服务器告之我另一个IPv6地址,我就能通过5、6、7、8这四段提供的信息与对手的IPv4进行连接。如Live告诉我对手的IPv6是2001:0:4137:9e76:3034:f3fd:71e1:f290,那么有人能算出对手的IP地址、端口吗?(答案是:在CMD中输入ping 1910633104) ⑤.附加参考文献:http://blog.163.com/jiams_wang/blog/static/303391492012618112835283/,我受这篇文章教育最深。曾经NAT等级时尔开放时尔中等时尔严格,严格占95%。联机搜人效果非常差,看了这篇文章之后我才知道有个叫无状态NAT(stateless NAT)的技术,而我用的iptables使用的是有状态NAT(statefull NAT)技术,经过几天的研究,使用TC NAT代替了iptables的NAT,成功使自己的路由器始终保持NAT开放,后面DIY过程中我会说方法。
|