ハトクラPC マンションでポート解放できない理由とVPSによる解決方法

ハトクラPC マンションでポート解放できない理由とVPSによる解決方法

ハトクラPC マンションだとポート解放できない

「Heart of Crown~ハートオブクラウン~」のPC版(以降ハトクラPC)において、ネット対戦を行う際には誰かがホストとなり部屋を立てる必要がある。

ここでPC設定・ルータ設定を手順通りに行っても「ポート開放できない」、「UPnP接続できない」等といった問題が発生する場合、恐らくマンションに問題がある。
以降にその原因と解決方法を記す。

1. ハトクラPC マンションでポート解放できない理由

ハトクラPCで部屋を立てたとき、ホストプレイヤーのPCをサーバとして他プレイヤーがそこにポート番号12900を通して通信を行う。

通常はルータ以降のローカルアドレスに外部からアクセスすることはできないため、ルータからPCに転送してもらうように設定する必要がある。(UPnPはこの設定をしてくれるやつ)

うまくいくとこんな感じになる↓



マンションだとそれがうまくいかない。(できるところもある)
マンションの場合は部屋ルータの上位に複数の部屋を統べる上位存在がいて、ここで通信が止まる。
ほとんどの場合はこのルータの設定をマンションに住む個人が変更することはできないため、この状況に陥ると普通の方法ではポート解放ができない。

こんな感じ↓



2. ハトクラPC マンションでポート解放する方法

図に示すとこう↓



VPSにVPNとポート転送の設定を行い、VPN接続をしたうえで部屋を立てる。
この方法であれば、マンションにいようがマクドナルドにいようがいかなる環境下でもポート開放が行える。

また、費用も月あたり200円以内に抑えられる。
計算は後述。

3. やり方

  • VPSを契約する
  • VPSの設定をする
  • PCの設定をする

この3つを行う必要がある。

3.1 VPSを契約する

今回はGMOインターネットのConoHa VPSを契約する。
ConoHaを利用する理由は以下の2つ。

  • 安い
  • 紹介すると互いにクーポンがもらえる

3.1.1 安い

今回のようなマシンスペックの必要ない用途の場合は最安の512MBプランでの契約になるが、その場合の料金は(620円/月・1.0円/時)のうち安いほうが適応される。

稼働中のみ料金がカウントされるため、週末だけ使って削除を繰り返せば、
8日×24時間×1円 = 192(円/月)
の支払いで済む。

面倒で付けっぱなしにしても月あたり620円。

3.1.2 紹介すると互いにクーポンがもらえる

以下のリンク越しに契約すると互いにクーポンがもらえるらしい。
あわよくば。

ConoHa VPS

3.1.3 契約手順

ConoHa VPSから「お申し込み」する。
クレジットカードかプリペイドカードの準備が必要。



会員ページからサーバー追加。



「リージョン」は「東京」、
「メモリ」は「512MB」。



ここで「CentOS 7.8」を選択。
「CentOS 8」だとなぜかVPN設定がうまくいかなかった。



「rootパスワード」と「ネームタグ」を適当に作成。



オプションの「SSH Key」で「キーを新規作成」。
適当な名前で「自動作成」、「追加」すると鍵が作られる。



「ダウンロード」を押すと。「〇〇.pem」という名前のプライベートキー(秘密鍵)が手に入る。
名前が長いので「key.pem」とする。



さっき作ったパブリックキー(公開鍵)が自動で選択される。



「追加」するとサーバーを作ってくれる。



サーバーリストから今作ったサーバ-を選択すると「コントロールパネル」が開く。



括弧の中が今作ったサーバーのIPアドレス、これだと160.251.12.36
また、下のパネルからサーバーが操作できる。停止するだけだと稼働とみなされる。
使わないときは右端の「サーバー削除」で消して、使うときにまた作るとお金がかからない。



3.2. VPSの設定をする

sshを使ってさっき作ったサーバに入る。
Windows 10ならデフォルトでコマンドプロンプトからsshが使える。
sshが使えなければさっきのConoHaサーバーリストのパネルから「コンソール」を押して入る。

3.2.1. サーバに入る

さっきオプションでSSH Keyを選択したので秘密鍵がなければ入れないようになっている。

cdコマンドでさっきダウンロードした秘密鍵(key.pem)のとこにいくか秘密鍵の方を持ってくるかして、

1
ssh root@160.251.12.36 -i key.pem

と秘密鍵を指定すると入れる。
160.251.12.36はさっき確認した、サーバーのIPアドレス。
-iはidentity fileを指定しますという意味。

3.2.2. VPNの設定をする

一部変更しているがほとんどこのサイトの通り。

【CentOS7】ConohaVPSでVPNサーバーを構築する方法

以降のコマンドは全部サーバ内。

3.2.2.1 設定ファイル編集

とても面倒。
ソフトのインストール後、6つのファイルを編集する必要がある。

はじめに、次のコマンドでxl2tpd(l2tp用のソフト)とlibreswan(ipsec用のソフト)をインストールする。

1
yum --enablerepo=epel install xl2tpd libreswan -y
  1. xl2tpdの設定ファイルを編集する。

viというエディタで編集する。

1
vi /etc/xl2tpd/xl2tpd.conf

と打つとviが起動してファイルの中身が表示される。
viで使うコマンドは今後の人生で4つだけ。
i(文字が編集できるモードになる),Esc(右2つのコマンドが打てるモードになる),:wq(保存して終了),:q!(保存せず終了) 。

下の方にある

1
2
3
[lns default]
ip range = 192.168.1.128-192.168.1.254
local ip = 192.168.1.99

1
2
3
[lns default]
ip range = 192.168.1.2-192.168.1.2
local ip = 192.168.1.1

とする。

ip rangeはVPN接続時のIPアドレス、固定したいので絶対に192.168.1.2になるようにした。
local ipはVPSのIPアドレス。
ip rangelocal ipは別に例の通りでなくてもいいが家のネットワークで使ってるのとかぶると駄目。

  1. 2つめのxl2tpd設定ファイルを編集する。
1
vi /etc/ppp/options.xl2tpd

上の方の

1
crtscts

1
lock

をコメントアウト。

1
2
#crtscts
#lock

とする。

1
2
mtu 1410
mru 1410

1
2
mtu 1200
mru 1200

とする。
この値が小さいと回線速度が遅くなるが通信が安定するらしい。
1410のときは度々VPNが切断されたが1200まで下げたら切断されなくなった。

さらに、ファイルの最後に以下の内容を追記する。

1
2
3
4
5
6
refuse-pap
refuse-chap
refuse-mschap
require-mschap-v2
name xl2tpd
logfile /var/log/xl2tpd.log
  1. 接続可能な「ユーザ名」と「パスワード」の設定ファイルを編集する
1
vi /etc/ppp/chap-secrets

と打って、最後の行に以下の内容を追記する。

1
"user"   "xl2tpd"   "password"   *

ここのuserpasswordがそれぞれ「ユーザ名」と「パスワード」、好きなものを入力。
後で使う。

  1. 次にipsecの設定ファイルを編集する。
1
vi /etc/ipsec.d/l2tp-ipsec.conf

以下の内容をコピーする。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
conn L2TP-PSK-NAT
dpddelay=40
dpdtimeout=130
dpdaction=clear
rightsubnet=0.0.0.0/0
forceencaps=yes
also=L2TP-PSK-noNAT

conn L2TP-PSK-noNAT
authby=secret
pfs=no
auto=add
keyingtries=3
rekey=no
ikelifetime=8h
keylife=1h
type=transport
left=%defaultroute
leftprotoport=17/1701
right=%any
rightprotoport=17/%any

dpddelaydpdtimeoutの値を大きくした。
これが小さいと通信状態が悪い時に切断されたりするらしい。
そのかわり大きくすると切断後にすぐつながらないようになるが運用上問題ない。

  1. 事前共有鍵ファイルの設定をする。
1
vi /etc/ipsec.d/default.secrets
1
: PSK "psk"

ここのpskが「事前共有鍵」。後で使う。

  1. 謎のファイルを設定する。
1
vi /etc/sysctl.conf

最後の行に以下の内容を追記する。

1
2
3
4
5
6
7
8
9
10
11
12
13
net.ipv4.ip_forward = 1
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.all.rp_filter = 0
net.ipv4.conf.default.accept_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.default.rp_filter = 0
net.ipv4.conf.eth0.accept_redirects = 0
net.ipv4.conf.eth0.send_redirects = 0
net.ipv4.conf.eth0.rp_filter = 0
net.ipv4.conf.lo.accept_redirects = 0
net.ipv4.conf.lo.send_redirects = 0
net.ipv4.conf.lo.rp_filter = 0

以下のコマンドで設定変更を反映。

1
sysctl -p

3.2.2.2 ファイアウォール

ファイアウォールの設定をする。

1
2
3
4
5
6
7
8
9
firewall-cmd --permanent --direct --add-rule ipv4 filter FORWARD 1 -i ppp+ -o ppp+ -j DROP
firewall-cmd --permanent --add-service=ipsec
firewall-cmd --permanent --add-port=1701/udp
firewall-cmd --permanent --add-port=4500/udp
firewall-cmd --permanent --add-masquerade
firewall-cmd --permanent --remove-service=ssh
firewall-cmd --permanent --add-port=12900/tcp
firewall-cmd --permanent --add-forward-port=port=12900:proto=tcp:toaddr=192.168.1.2
sudo firewall-cmd --reload

firewall-cmd --permanent --remove-service=sshで今後のssh接続を禁止してセキュリティを保っている。
当然自分自身も入れなくなるが一度設定したら二度と入るつもりはない。

その次の2行でハトクラPCのポート転送の設定もする。
192.168.1.2はさっき設定したVPN接続時のIPアドレス。
12900は転送したいポート番号。

3.2.2.3 VPN起動

xl2tpdとipsecを起動する。

1
2
3
4
systemctl enable xl2tpd
systemctl enable ipsec
systemctl start xl2tpd
systemctl start ipsec

次のコマンドで確認。

1
ipsec verify

うまくいってたら「OK」がずらーっと出てくる。
パスワードが弱いと「OBSOLETE」も混じる。
「FAILED」が含まれていたら何かが間違っている。
少し考えて分からなかったらサーバーを削除してやり直した方が早い。

3.3 PCの設定をする

PCからVPN接続するための設定をする。
GUIの世界に戻った。

ここではwindows 10を想定している。

3.3.1 VPN接続する

「設定」の「VPN」から「VPN接続を追加する」をクリック。



設定内容はこんな感じ。



サーバー名の160.251.12.36はさっき設定してたConoHaサーバーのIPアドレス。
事前共有キーはさっき設定してた「事前共有鍵」、ここではpsk
ユーザー名もパスワードもさっき設定してたやつ、ここではuserpassword

保存すると接続できるようになる。



「接続」を押して、しばらく待って「接続済み」になれば成功。

ここで失敗する場合、私の場合は下記リンク先の通りにregeditでレジストリの設定変更をしたら繋がった。

ホープムーン|Windows10でL2TP/IPSecのVPN接続をする方法

3.3.2 ハトクラする

ハトクラPCを起動し、部屋を立てる。

設定はこんな感じ。



使用ポートは「12900」。
「UPnP」はOFF。

Portチェックテストのサイトでポート開放できているか確認。



ここで、「現在のIPアドレス」を押してConoHaサーバーのIPアドレスが表示されていればちゃんとVPN接続ができている。

「チェックポート番号」を「12900」として「ポートチェック実行」を押す。



ここで失敗するのは正常。
まだ部屋を立てていないのでポート12900を受け付けていない。



「Free Battle」→「Create Room」として、
あらためて「ポートチェック実行」。



成功。
ここで失敗するのであればPCのファイアウォールがポート12900をはじいてるとかだと思う。

4. 結果

無事にポート開放して対戦できるようになった。
突然接続が切れることもあったがパラメータを調整したらだいぶ安定するようになった。
普通に動画見たりできるので負荷をかけたら切れるというわけでもない。

手順をスクリプトファイルにまとめて簡単に設定できるようにしたい。

5. ハトクラリンク

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×