カテゴリー別アーカイブ: SRCDS

RCONの使用

rconを使用するには起動オプションに+ip ローカルIPアドレスを指定すると使えるようになるんですが
それだと鯖ブラのLANから見えなくなるので別の方法(起動オプションに+ip 0.0.0.0を設定する)をとってみました。

そもそも指定せずに送ろうとするとどうなるかというと、”Unable to connect to remote server”と怒られる。
サーバからのTCP応答パケットをみてみると
Flags: 0x14 (RST, ACK)とResetフラグが立てられていて、TCPコネクション自体が確立できていない。

サーバのnetstatでみてみると

tcp        0      0 127.0.1.1:27015         0.0.0.0:*               LISTEN
udp        0      0 0.0.0.0:27015           0.0.0.0:*

な感じで待ち受けています。サーバは宛先が192.168.0.102:27015のパケットを受け取っても、待ってる宛先のパケットではないので無効と判断してしまう。srcds自体に届いてません。

もし、+ip ローカルIPアドレスを指定してやると

tcp        0      0 192.168.0.102:27015     0.0.0.0:*               LISTEN
udp     7376      0 192.168.0.102:27015     0.0.0.0:*

となって、クライアントからはrconが使えるようになりにはなります。
ですが、問題が一つあって、冒頭にも書いた鯖ブラのLAN外から見えなくなります。
鯖ブラのLANで検索をかけると宛先IPが255.255.255.255のUDPパケットを飛ばすのですが
これだと、宛先IPが192.168.0.102ではないので応答しなくなってしまいます。
(なんで??応答してもよさそうなのに。。)

で、思いついた方法は二つ。
・192.168.0.102:27015宛てのパケットを127.0.1.1:27015に転送する。
・TCP27015ポートのローカルアドレスを0.0.0.0に変更する

上はややこしそうなので下で。

起動オプションに+port 0.0.0.0を指定すると鯖ブラのLANでサーバが見えて、
且つ、他PCからでもサーバ内からでもrconが使えるようになります。
netstatの結果は↓

tcp        0      0 0.0.0.0:27015           0.0.0.0:*               LISTEN
udp    11064      0 0.0.0.0:27015           0.0.0.0:*

L4D2でロビーから接続するサーバを指定する

ロビーリーダーがmm_dedicated_force_serversを使用すると接続するサーバを選択できます。

基本的な書式は
mm_dedicated_force_servers IPアドレス:ポート

複数サーバを指定する場合は
“,”で区切る。例えば
mm_dedicated_force_servers IPアドレス:ポート,IPアドレス:ポート,IPアドレス:ポート,IPアドレス:ポート
左から順番に接続を試して行きます。

自宅のサーバを指定する場合
LAN内のクライアントにはローカルIPアドレス、LAN外のクライアントにはグローバルIPアドレスを使用する必要があります。
“|”で区切る。例えば
mm_dedicated_force_servers グローバルIPアドレス:ポート|ローカルIPアドレス:ポート
こうすれば、ロビーにいる人全員が同じサーバに接続できます。
こんな感じで”|”と”,”の併用も可能です。
mm_dedicated_force_servers グローバルIPアドレス:ポート|ローカルIPアドレス:ポート,IPアドレス:ポート,IPアドレス:ポート,IPアドレス:ポート

autoexec.cfgあたりに書けばわざわざコンソールから入力する必要はありません。
起動後にコンソールから再度コマンドを入力した場合は値が上書きされます。