周末跟朋友想打两局《反恐精英:起源》(CS:S),重温一下经典。我建好房间,按教程在控制台输入map de_dust2,然后status查了自己的IP地址。朋友那边打开控制台,输入connect加我的IP,结果——一直提示“连接失败”。
换人当房主,关防火墙,重启路由器,折腾了快一个小时还是没连上。
《反恐精英:起源》联机到底卡在哪?
CS:S联机本质上是P2P直连——房主的电脑承担服务器角色,其他人通过IP地址直接连进来。默认走的是UDP 27015端口,同时还需要开放TCP 27014-27050、UDP 1200、3478、4379-4380、27000-27030等一系列端口。
问题在于,绝大多数家庭宽带根本没有公网IP,运营商给的是大内网。你建好房间,数据包根本出不去。网上教程翻来覆去就那几招:开端口转发、设DMZ主机、关防火墙。但不同品牌路由器界面五花八门,而且前提是你得有公网IP——大部分人都没有。
正版用户可以通过Steam好友邀请联机,但同样受限于P2P网络环境。盗版用户更麻烦,还得折腾联机补丁和第三方平台。
换个思路:别跟路由器较劲了
后来试了个不一样的办法——内网穿透。不是折腾路由器端口映射,而是直接在房主电脑上开一条通道,生成一个固定的公网地址。朋友不需要装任何额外软件,在游戏控制台输入connect加这个地址就能直接连进来。
用的工具叫80km穿云箭。操作很简单:房主在电脑上装好客户端,创建一条UDP隧道,填上CS:S默认的27015端口(以及27000-27030等端口范围),点一下启动就生成一个公网地址。朋友在游戏控制台输入connect 地址,秒进房间。
全程不用改路由器、不需要公网IP。最关键的是朋友不用装任何东西,直接用游戏控制台直连就行。客户端内存占用只有10到30MB,挂后台基本感觉不到。所以别再跟端口转发死磕了。