发信人: acswordsman(AC-Fantasy)
整理人: acswordsman(2001-12-27 20:01:20), 站内信件
|
3 ) 安装服务器
3.1 ) 我在哪儿能下载 bnetd ?
如果你希望从网上安装,主网站上有文件下载,这里通常是最新的程式。或是从迈克的文件档案中得到。作为后备手段,罗斯也他的CS 帐号上提供最新的下载。
当前更新也在匿名的 FTP 空间上提供下载。
如果你想要得到 RPM ,你可以在主站点或是迈克那里发现与之相关的网页。Debian 和 *BSD 包裹在安装系统时是变化的。
3.2 ) 我应该使用什么版本?
0.4 稳定的版本在最近的 glibc 版本编译上存在问题因此我推荐不使用它。0.3 则是 0.4.x 版本开发的低级版本。经典的版本应该很适合使用。当 0.6.x 被发布时,它应该是“缺省”为终端用户选择安装。
3.3 ) 我怎么设定服务器?
bnetd 配置文件在conf/bnetd.conf。这里包含记录文件和用户资料,还有一些其他的信息,如果你对此感兴趣,可以自己定义来满足你的需要。看bnetd.conf ( 5 )来学习在文件和文件夹中使用手动查询相关资料。
3.4 ) 编译器为什么会在 eventlog.c 第 29 行报告一个错误?
这是由于在 bnetd-0.4.0 和一些更早的版本中的一个错误导致。源代码假定 stderr 是一个常数,但是这在更新的 glibc 系统中是不现实的。
修正它有过个方法。最简单的改变是在 eventlog.c 的顶部设置 stderr 为 NULL 并且重新编译。升级到 bnetd 的新版本也可以解决这个问题。0.4 系列不能用版本控制计划工作的方法来修正。新版本则没有这个问题。
4 ) 运行服务器
4.1 ) 我怎么启动 bnetd ?
在你建立了源以后,程序的二进制代码被放进 sbin/bnetd 。运行服务器只需要从 bnetd 的主目录敲入: sbin/bnetd 。
4.2 ) 我为什么不看见任何东西我是否启动 bnetd ?
在缺省状态下, bnetd 进程在背景作为一个后台运行。如果你想要在前台运行它,在运行服务器时选择使用参数 - f 。
注:当服务器在后台模式运行时,它首先改换目录,因此你需要保证在你的 bnetd.conf 的所有的路径是绝对的路径。
4.3 ) 我怎么设定服务器?
bnetd 配置文件在 conf/bnetd.conf 中。这里包含记录文件和用户资料,还有一些其他的信息,如果你对此感兴趣,可以自己定义来满足你的需要。看bnetd.conf ( 4 )来学习在文件和文件夹中使用手动查询相关资料。
4.4 ) 我为什么不能启动 Diablo 游戏?
0.4 最初的版本主要是支撑星际争霸和血战这两个游戏。因此当使用 bnetd 0.4 时,在运行 Diablo 的一些版本时,很难联接或进入游戏 。在 0.4.22 以后的 bnetd 的版本中,只要你的 Diablo I 用户端被升级到版本 1.05 或更新后,他会运行的很流畅。
在 1.05 前, Battle.net 看起来像使用了数据库存取并且在一个低端端口上运行了的一个完全不同的协议。由于我们没有任何跟踪包,为此现在要支持是很困难的。如果某人愿意为此希望得到帮助,我们愿意与他们一起工作。
4.5 ) 我为什么不能与 Diablo II 联接?
Diablo II 使用了在 bnetd 0.4.23 版本之前没有出现过的一种新连接类型。以后的版本支持这个特征。如果你已经正在运行 0.4.23 或更新的版本,但是仍然有问题, 看见下一段。
在Diablo II 的升级补丁 1.08 中,暴雪( 又 )改变了它的 CD 键 authentification 。版本 0.4.25pre3 和早期的版本不支持新数据包类型。以后的版本会适当处理该问题( 如果你希望测试,可以在下一个版本修正前,试用 nightly CVS ) 。
4.6 ) 如何启用自动更新?
当它与 Battle.net 联接时,自动更新是暴雪的用户得到最新版本的方法。这保证所有的用户有兼容的游戏版本并且减少出现游戏中的问题。
在版本 0.4.2 出现之前,bnetd 的自动更新支持并不容易。启用更新选择会要求编辑 2 个配置文件并且准备至少 2 个 MPQ 文件 ( 为版本授权的和为升级的 ) 。
首先打开你的 bnetd.conf 并且发现可下载的文件。改变 allow_autoupdate 为 ture 。这是用户版本认证。现在改变 mpqauthfile 为得到授权的 MPQ 的文件名。这应该是文件名,而不是绝对路径。
第二, 打开你的自动更新配置文件和选择你想要升级的文件。中间应该是文件名而不是绝对路径。版本能从升级的用户版本数字被替换,例如 1.05 成为 105 和 1.08 成为 108 。
利用bnftp ( 1 )或在万维网,你可以从 Battle.net 找到 MPQ 文件。
4.7 ) 我怎么把网管权利加到一个帐号?
用 uid 来找到你要改变的用户( 你可以在壳中使用文本查找工具或使用服务器上的命令 /whois ) 。然后如果它正在运行,关掉服务器。使用你喜欢的任何文本编辑器象这一样增加行:
“BNET\\auth\\admin "="ture”
你有可以在用户上启用别的授权。他们多数在配置文件 bnetd_default_user 中被记录。例如, 你能终止一个操作用户:
“BNET\\auth\\operator "="false”
5 ) 用户问题
5.1 ) 我怎么通过我的防火墙与一个服务器联接?
这是经常被问并且也是最难回答的问题之一。当然答案取决于你的网络安装和你的防火墙上使用哪个系统。如果你使用 NAT ( 或 masquerading ) 它会变得更复杂。
可能你想要知道的第一件事情就是端口信息。协议使用在 bnetd 服务器上的 TCP 端口 6112 。它也使用 bnetd 服务器和用户端之间的 UDP 端口 6112 。如果你在运行 Diablo II,那么 TCP 端口 4000 也需要对服务器开放。UDP 端口 6112 会在游戏中进行对话。如果用户端并不存在端口 6112 ,它将在一个随意的端口上接收。
即使在设置单机游戏或是同时在两个机器上设置两个不同的游戏, 都无法保证在一个游戏中,有某一台机器可以运行的更流畅。一个设置问题的最常见的问题是在游戏进行期间非常的慢。当前的解释是游戏中多个用户都在同时通过某一个用户时造成的网路不畅通。
Dizzy彻底的记录了问题的整个过程。它被称为 bnet-masq-howto 并且在 Linux 2.2 时,它也出现了大量的信息流。
对使用 iptables( 也称为网过滤 ) 的 Linux 2.4 来说,这是个好消息:在防火墙内、外使用完整的 NAT( SNAT+DNAT ) 来排除网络传输的不同步是可能的。有来自Rick Kramer的信息描述怎么设置它的 Netfilter 邮寄表。在他的事例中,他假定 Battle.net 服务器在本地网络的外面。
Linux 内核 2.0.36 的指令记录在下面:
与一个类似 Battle.net 的服务器联接的比较简单的方法是使用 ipautofw 为数据包增加限定, x.x.x.x 是用户端机器。
/sbin/ipautofw - 一 - r tcp 6112 6112 - h x.x.x.x - v - u
/sbin/ipautofw - 一 - r udp 6112 6112 - h x.x.x.x - v - u
他可以工作于以下状态:“单机游戏或内部网络游戏以及与外部连接的网络游戏或是作为外部网络游戏的主机或是……。”糊涂了吗?
当 bnetd 服务器也处于防火墙后,并且在一个游戏中一台内部的计算机作为主机, 仅仅内部的其他计算机能加入。 gametrans 会将正在运行的机器或是并没有运行的机器的地址都发送到bnetd 。这样, bnetd 将不会把本地地址 ( 10.x.x.x , 192.168.x.x , 或无论什么 )发送给在防火墙外面的计算机。
甚至当你做那时,如果当时游戏中有两三个终端在进行,那么又会发生网络传输不同步的现象。根据我们的经验,没有一个内核模块或代理可以在非 Linux-2.4 sytems 上避免情况的发生。
同样, 如果两台或更多的计算机从在本地网络之外在同一个内部主机游戏,,将会产生严重的速度问题。为此的一个解决方案被发现了 ( 它为我工作了 ) 。所有细节在官方的 Linux Masquerading 上可得到的 http://home.indyramp.com/lists/masq/msg03024.html 。根本上说,是内核在追踪连接时得到一条假信息( 实际上它认为计算机正在试图断开与防火墙连接) 。作为开放的 UDP 管理端口接受这个解决方案。
任何版本的 Linux 内核缺省为 Enable ,这是一个潜在的缺陷。如果你的一个 UDP 服务器运行在端口 9999 ,并且你的计算机通过端口 9999 发送一个 UDP 包到Internet 主机 A ,如果 Internet 主机 B 猜测到正确的代理端口,他可以通过端口 9999 联接回到你的服务器。如果仅有 UDP 传输在bnetd 发生,这并不是问题。记住 DNS 请求就是 UDP 。如果你决定不这么做,你仍可以通过手动安装来保证正常的工作 ( FIXME :我想……或者那里也需要开放的 UDP ?) 。
2.0.36 或更低版本,你必须为开放的 UDP 增加 2 个内核补丁。第一个补丁被称为“ LooseUDP ”和更新 Masquerading 代码以包括位置的选择项“ CONFIG_IP_MASQ_LOOSE_UDP ”。FIXME :我不知道第二补丁是什么 ... 也许那是在这个文件的一个先前的版本上面的一个错别字。
2.2.15 和以后的内核,不需要补丁。这些内核包括一个可以存取 /proc/sys/net/ipv4/ip_masq_udp_dloose 的 sysctl 。有三种状态可以在这个文件中编辑。一、"0"( 缺省 ) 不允许开放的 UDP 的工具移植管理。二、"1" 允许它使用安全的端口。三、"2" 允许它使用所有的端口( bnetd中"1"是工作正常状态) 。
2.4.x ,看起来没有 sysctl 用来将 UDP handling放开。这意味着你必须对每台机器使用手动设置,如在邮件列表中的说明一样。。
5.2 ) 我怎么选择联接哪个服务器?
现在你已经有了正在运行的 bnetd ,你怎么把你的星际争霸用户端指向到服务器?
一旦星际争霸, Diablo ,或另外的用户端被安装,你能使用一个程序BNSv1103.exe在不同的 bnetd 服务器和暴雪之间切换的 Battle.net 。
这个程序有让你在暴雪 Battle.net 服务器之间切换的一个简单的接口的按纽。要进入其他的服务器可以使用按纽找到接口,并在下面填写你要连接的主机名或 IP 地址。
你也可以使用 BNS 自动地选择来运行你的游戏。
当用户端正在运行时,你能也改变服务器。例如,星际争霸你应该回到主菜单。使用按纽切换到任何一个 BNS ( 如果它仍然在运行) 或到 Windows 浏览器,并且选择一个新的服务器并按下 APPLY 。然后切换回到星际争霸与新的服务器联接。
5.3 ) 我正在使用 BNS 但是它不选择我的服务器?
如果你正在使用 BNS 1.1.0.3 以上和 Starcraft/ 血战1.08 或更新, Diablo 1.08 或更新, 或 Diablo II ,那么你不是单独存在的。
暴雪把注册表格式改成了到 Battle.net 网关的用户端多选择 ( 美国西方, 美国东方, 等等 ) 。这个变化出来时, BNS 还没有更新成为可以处理新格式的版本。有一个 gatesel.exe 程序,应当可以处理它。若是失败,会有指令告诉你如何手工进入服务器。这些指令存在于当前版本 bnetd 中,比如 docs/README.diablo108 。注意 Windows 的某些版本在那些文本栏中使用 16 位字符。
5.4 ) 我怎么与原来的 Battle.net 服务器联接?
启动程序BNSv1103.exe,离开并检查 Battle.net ,并且按OK。
----
〖←点击进入Ep)s(主力站点〗
星际无限美——*StarCraft*
|
|