北米鯖なう&黒い砂漠のユーザ認証挙動の検証

こんにちは。北米鯖エンジョイしてます。

主だった情報は終了後まとめて記事を書こうと思います。

さて北米鯖のゲームサーバやVPNの検証を進めていくうちに黒い砂漠の認証システムについて
若干分かったような気がするので書いてみます。

どうやっても”Valid authentication time has expired” (日本鯖:認証時に定められたTimeを超えました)
でログイン出来なかって、(自分以外にもこのエラーで少なくない外国人がログインできなかった)
最終的に公式フォーラムの一ユーザの推測である
”VPN使えば接続できる”とあったので結局VPN使って一発でつながったんですけどね。

でも、SoftetherのVPNはデフォルトですべての接続をVPN経由するようになってて、
そのまま使うのはサーバー情報入力してダブルクリックすれば完了で簡単ですが、
特定のアプリケーションのみVPN経由にする方法はSoftether側ではなく、
手動でコマンドプロンプトを叩いてルーティングを変更しなければならず、
PCに詳しくない人にはちょっとハードルが高いんですよね・・、ミスるとネット自体繋がらなくなりますし。

というわけでググッて黒い砂漠北米鯖のみVPN経由する手法を模索してみました。
まずルーティングの変更に必要なのは、
・自宅ルーターのデフォルトゲートウェイ
・VPNサーバーの(仮想)デフォルトゲートウェイ
・サブネットマスク
・黒い砂漠のゲーム・認証サーバーのIPアドレス

ざっとこんな感じです。

まずは黒い砂漠のゲームサーバのIPアドレスから。
まず黒い砂漠はゲームサーバとは別に認証サーバにアクセスして認証するみたいです。
この認証サーバのアドレス取得は楽ちんです。
なぜなら黒い砂漠の認証サーバの情報はクライアントインストール先のservice.iniに記載してありますから。

[SERVICE]
TYPE=NA
RES=_EN_

[NA]
AUTHENTIC_DOMAIN=209.58.133.23
AUTHENTIC_PORT=8888
PATCH_URL=http://downtest1.black.game.daumserver.com/patch/

これが北米鯖の認証情報、認証サーバのアドレスは209.58.133.23ですね。
ちなみに僕の自宅ルータのデフォルトゲートウェイは192.168.0.1、VPNの仮想ゲートウェイのアドレスは192.168.30.1です。

いろいろやってみた結果、以下のようにすることでうまく行ったので紹介します。
1、普通にSoftEther VPNでVPNに接続する(接続するVPNサーバはSecureNAT機能有効必須です。)
2、コマンドプロンプトを”管理者権限で”実行する
3、routeコマンドを叩いていく。まずはすべての接続をVPN経由とする設定を削除。
(route delete 0.0.0.0 mask 0.0.0.0 192.168.30.1)
4、これでネットが不通になるのですべての接続のルーティングを元の自宅ルータに戻す。
この時普通に戻した場合一定時間経過後勝手にVPN経由のルーティングに戻るので、
metricオプションを付けて自宅ルータ経由を優先させる。
(route add 0.0.0.0 mask 0.0.0.0 192.168.30.1 metric 50)
(route add 0.0.0.0 mask 0.0.0.0 192.168.0.1 metric 1)
5、まずは北米鯖公式サイトのみVPN経由とする。
(route add 37.48.82.170 mask 255.255.255.255 192.168.30.1)
6、次に認証サーバへのアクセスをVPN経由とする。
(route add 209.58.133.23 mask 255.255.255.255 192.168.30.1)

どうやら黒い砂漠のログインシステムはまずゲーム開始後スタートをおした時に認証サーバにアクセスして、
アクセス元のIPアドレスなどを取得する。そしてチャンネル選択時にそのチャンネルのゲームサーバにアクセス元IPアドレスなどを
渡す感じになっているようだ。ここで認証サーバから渡されたIPアドレスと実際にアクセスしてきたIPアドレスが異なると、
ゲームサーバは「アカウントIPが不正です。(The account IP is Invalid.)」というメッセージで切断させる。
なので、ゲームサーバにも同じVPN経由でアクセスする必要があります。
ゲームサーバのIPアドレスの取得は完全にゲームにログインした後、(キャラ操作可能後)に
コマンドプロンプトから「netstat -ano」コマンドで取得できます。

プロセスIDと一致し、ポート番号8889で通信しているIPがゲームサーバーです。
(BlackDesert64.exeが2つありますが、北米鯖はPID17560,PID25448は日本鯖です。)
このゲームサーバのアドレスはどうやらチャンネルごとに異なるようで、(チャンネル移動しようとするとThe account IP is Invalid.)
自分はch1しか取得してません。

というわけで、
7、ゲームサーバ(1ch)へのアクセスをVPN経由とする。
(route add 209.58.133.25 mask 255.255.255.255 192.168.30.1)

これで黒い砂漠のみにVPNを適用することが出来ました。
最後に一連の流れを動画にしたのでどうぞ~

これらの実施は自己責任でお願いします。