😽

MAP-Eな自宅のマイクラ鯖にVPSから接続を転送する

に公開

はじめに

nuro光が MAP-E 方式に移行し、自宅の ONU に IPv4 アドレスが振ってこなくなった。
そこで、パブリックな IPv4 アドレスを持つ VPS から接続を自宅へ転送し、対応を図る。

やること

  • 自宅 - VPS 間を WireGuard で繋ぐ
  • VPS から自宅へポートフォワード

WireGuard の設定

今回は ubuntu を採用する。

uname -v
# output
# #83-Ubuntu SMP PREEMPT_DYNAMIC Fri Sep  5 21:46:54 UTC 2025

wireguard のインストール

sudo apt install -y wiregurad

キーの作成

umask 077
sudo wg genkey > private # 適当なファイルに書き込む

wg-quick で使用する構成ファイルの作成

sudoedit /etc/wireguard/wg0.conf # wg0 の部分はインターフェイス名に対応している。適宜変更も可。
wg0.conf
[Interface]
Address = 192.168.96.254/24
# Address = 192.168.96.1/24 # 自宅側と VPS でアドレスのホスト部を変えること
PrivateKey = ### 先程作成したキー ###
ListenPort = 51280 # VPS 上でのみ記述

構成ファイルについて詳しくは man wg-quick を参照のこと。

wireguard の起動

sudo wg-quick up wg0
sudo wg

構成が正しければ自身のアドレス, パブリックキーとリッスンポートが表示される。

ここまでの手順を自宅側のマシンでも行う。
この時点で VPS と自宅側のマシンの両者にプライベートキーとパブリックキーとが存在する状態である。

ファイアウォールの設定

WireGuard の通信のため VPS の 51820/udp を開ける。
VPS のサービスにもファイアウォールがある場合はそちらも忘れずに解放する。

sudo ufw allow "51820/udp"

Peer の設定

VPS 上の wg0.conf に追記する。

wg0.conf
[Interface]
Address = 192.168.96.254/24
PrivateKey = ### 略 ###
ListenPort = 51820

+ [Peer]
+ PublicKey = ### 自宅側マシンのパブリックキー ###
+ AllowedIPs = 192.168.96.1/32

自宅側のマシンでは以下の内容を追記する。

wg0.conf
[Interface]
Address = 192.168.96.1/24
PrivateKey = ### 略 ###

+ [Peer]
+ PublicKey = ### VPS のパブリックキー ###
+ AllowedIPs = 0.0.0.0/0
+ Endpoint = ### VPS のパブリックIPアドレス ###
+ PersistentKeepalive = 25 # https://www.wireguard.com/quickstart/#nat-and-firewall-traversal-persistence

接続確認

以下のコマンドで構成を再適用する。
VPS と自宅側の両方で実行すること。

sudo wg-quick down wg0; sudo wg-quick up wg0

再適用が完了したら疎通を確認する。

ping "192.168.96.254"

設定を永続化する。

sudo systemctl enable wg-quick@wg0

ここで自宅側のマシンで WAN に疎通が取れなくなっていることも確認する。

ping "1.1.1.1"

ufw の設定

VPS 上で ufw を用いてポートフォワードとIPマスカレードの設定をする。
詳しくは man ufw-framework を確認。

IPフォワードの有効化

sudoedit /etc/ufw/sysctl.conf

net/ipv4/ip_forward=1 の行をコメントイン?する。

DNAT と MASQUERADE

sudoedit /etc/ufw/before.rules
before.rules
# ...
*filter
# ...
COMMIT

+ *nat
+ :PREROUTING ACCEPT [0:0]
+ :POSTROUTING ACCEPT [0:0]
+ -F
+ -A PREROUTING -p tcp -i eth0 --dport 25565 -j DNAT --to-destination 192.168.96.1
+ -A POSTROUTING -s 192.168.96.0/24 -o eth0 -j MASQUERADE
+ COMMIT
+

eth0 の部分は WAN 側のインタフェース名に対応する。

ufw による routing の設定

ufw でルーティングを許可するルールを追加する。

sudo ufw route allow in on eth0 to 192.168.96.1 port 25565 proto tcp

eth0 から来た 192.168.96.1:25565 宛のTCPパケットのルーティングを許可。

sudo ufw route allow in on wg0 out on eth0 from 192.168.96.0/24

wg0 から来て eth0 に出ていく送信元が 192.168.96.0/24 のルーティングを許可。

設定を適応する。

sudo ufw reload

疎通確認

自宅側のマシンで WAN に疎通しているか確認する。

ping "1.1.1.1"

マイクラで VPS のアドレスに接続し、家のマイクラ鯖に接続できれば作業終了。

あとがき

VPN 側にマスカレードする構成も試したが、自宅側から送信元アドレスがわからない(マイクラ側で IP BAN できない)点が気に食わなかったので WAN 側にマスカレードする今回の構成とした。
自宅側のマシンで AllowedIPs を 0.0.0.0/0 に設定しているので外向きの通信はすべて VPS を経由することとなる。
筆者が今回使用した conoha VPS はそうではないが、転送量で料金が変わるなら注意が必要かもしれない。

GitHubで編集を提案

Discussion