Minecraftサーバーが建てられなくなってしまった
時は2025年10月
私は今まで自宅のubuntu serverでMinecraftのpaperやapache2を使ってサーバーを立てており、今までは問題なく外部から接続のできるサーバーだった。
ただし、問題はこの後である。
自宅のNURO光が10Gbps通信に対応したと言う知らせを受け取ったので、早速自宅のNURO光2GbpsをNURO光10Gbpsへ。
元々NURO光はPPPoE方式で接続が確立されており、ネットワークを再起動することなんてほぼなかったので実質グローバルIPv4アドレスを固定利用することができたのである。
しかし近年、IPv4アドレスの枯渇が問題視される中、NURO光もMAP-E方式に切り替えて来た。
IPv6での通信を基本としたIPv4通信をIPv6通信にトンネルさせ、NUROのセンターサーバーが管理しているランダムなIPv4アドレスを利用してグローバル通信を行う、という方式だ
当然こんな事をされてしまっては、従来のようにMinecraftサーバーをIPv4で公開することはおろか、IPの固定やIPv4のポート転送さえもすることができないのである。
これは非常に困った。
と、言うことで、自宅でサーバーを立てたいという人間の参考に、そして自分の備忘録のために綴ることにする。
失敗例 - CloudFlare Tunnel
【CloudFlareを使う案】
幸いにも私はドメインを保有していたので、CloudFlareにネームサーバーを変更してDDNSを設定してやろうという魂胆だ。
(おそらく、大抵の人はこの方法で上手く行くはずである。)
この方法はインターネットに沢山転がっているので、これについては是非他の優良記事を参考にしてほしい。
ところが私の場合、何も設定を間違っていないはずなのに、何故か通信が確率できない。
ipアドレスも認識されているし、ポート番号も指定されているはずなのに...
なので、私のMinecraftサーバー公開日記の第1章はここで幕を下ろした。
frpって、何?
「知らん。」
と、御託は置いておいて。
実際、私も10月に初めて触ったので、詳しくは知らない。
それに、参考文献が非常に少ないのである。
パッと触ってみた感覚で言うと、外部からの接続を別の内部サーバーに転送してくれるオープンソースソフトウェアの事らしい。
ポート転送の拡張版、的な...?
つまり、このソフトをVPSサーバーで常時稼働させておいて、そのVPSサーバーのIPに接続したクライアントを私のサーバーに転送すれば良い、ということになる。
私のサーバー環境とfrp
このリンクのものを使った。
frp通信にはfrpsとfrpcがあり、frpsが外部からの通信を受け取り転送するもので、frpcがfrpsから転送された通信を受け取るものである。
なので、VPSサーバーではfrpsを、自宅サーバーではfrpcを常時起動しておけば良い、ということになる。
Windows,Mac,Linux,OSに対応している上、amd,arm,x64に対応しているので、大抵のマシンでは動かせるだろう。
私の構成は、
VPS (さくらインターネット石狩拠点):
- Ubuntu 22.04
- 4core, 4GB
- ?
自宅鯖 (福岡県拠点)
- Ubuntu 24.0.2
- 4core, 16GB
- NURO 10Gbps
である。
実際に構築
構築自体はとっても簡単
上のgithubからそれぞれにインストールし、VPS側ではfrpsを、自宅サーバー側ではfrpcを利用する。
以下に、それぞれ必要なファイルを記述しておく。
VPS側
bindAddr = "0.0.0.0"
# この7000は自宅サーバーと通信をするためのポート
bindPort = 7000
#自宅サーバーと安全に通信するためのTOKEN設定
auth.method = "token"
auth.token = "{任意のpassword}"
# 自宅サーバーとの通信のため
ufw allow 7000
# マインクラフトサーバー解放のため
ufw allow 25565
自宅サーバー側
# VPSのWAN-IP(これがそのまま外部からの接続アドレスになります)
serverAddr = "***.***.***.***"
# VPSと通信をするためのポート
serverPort = 7000
# 上で入力したパスワード
auth.token = "password"
[[proxies]]
# 好きな名前
name = "MinecraftServer"
# Javaであればtcp通信を使うため、これ
type = "tcp"
# 自宅サーバーのLAN-IP
localIP = "localhost"
# 自宅サーバーから解放したいポート番号(今回はマインクラフトサーバーのため、25565)
localPort = 25565
# VPSで解放したいポート番号(同上)
remotePort = 25565
# 同上
ufw allow 7000
ufw allow 25565
終わりに
以上の方法で、VPSサーバーのアドレスで、自宅サーバーに接続できるようになるだろう。
自宅サーバーがそもそも狭いジャンルであることに加え、自宅にサーバーがある人は大抵そのままかCloudFlareで事済んでしまうので、文献が見当たらず中々に大変だった。
(ここだけの話、ChatAIがここまで強くならなければ、私はfrpを見つけることができなかっただろう)