1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

マイクラ鯖を立てれなくなったので、VPSサーバーを使ってfrp通信でゴリ押した話

1
Last updated at Posted at 2025-12-06

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側

frps.toml
bindAddr = "0.0.0.0"
# この7000は自宅サーバーと通信をするためのポート
bindPort = 7000

#自宅サーバーと安全に通信するためのTOKEN設定
auth.method = "token"
auth.token = "{任意のpassword}"
.console
# 自宅サーバーとの通信のため
ufw allow 7000
# マインクラフトサーバー解放のため
ufw allow 25565

自宅サーバー側

frpc.toml
# 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
.console
# 同上
ufw allow 7000
ufw allow 25565

終わりに

以上の方法で、VPSサーバーのアドレスで、自宅サーバーに接続できるようになるだろう。
自宅サーバーがそもそも狭いジャンルであることに加え、自宅にサーバーがある人は大抵そのままかCloudFlareで事済んでしまうので、文献が見当たらず中々に大変だった。

(ここだけの話、ChatAIがここまで強くならなければ、私はfrpを見つけることができなかっただろう)

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?