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 の部分はインターフェイス名に対応している。適宜変更も可。
[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
に追記する。
[Interface]
Address = 192.168.96.254/24
PrivateKey = ### 略 ###
ListenPort = 51820
+ [Peer]
+ PublicKey = ### 自宅側マシンのパブリックキー ###
+ AllowedIPs = 192.168.96.1/32
自宅側のマシンでは以下の内容を追記する。
[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
# ...
*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 はそうではないが、転送量で料金が変わるなら注意が必要かもしれない。
Discussion