グローバルIPのないアパート回線からマイクラサーバーを外部公開する
背景
- サーバーマシンが床から生えてきたので、マイクラサーバーを建てることにした。
- しかし、アパート回線なのでグローバルIPがもらえず、外部公開ができない。
本題
- 外部接続用に、ConoHa VPSの一番安いプランを契約する
- VPSと自宅サーバーの間でVPNを構築して、VPN経由で自宅サーバーを外部に公開する
環境
-
ConoHa VPS
- 512MB/CPU 1Coreの一番安いプラン、500円/月くらい
- CentOS
-
自宅サーバー
- 8GB/intel Xeon E3-1225 v5
- Ubuntu 20.04 LTS
ConoHa VPSの設定
VPS構築
下記のオプションでVPSを作成
- サービス:VPS
- イメージタイプ:OS (CentOS)
- 料金タイプ:1ヶ月
- プラン:512MB
- rootパスワード:任意の値を入力する
- ネームタグ:任意の名前を付ける
初期設定する
rootユーザーでログインする
login: root
Password: <rootパスワード>
一般ユーザーを作成する
ユーザー名を設定する
# adduser admin
パスワードを設定する
# passwd admin
ユーザーにsudo権限をつける
一般ユーザーの場合はログアウト
$ logout
rootユーザーで再ログインする
login: root
Password: <rootパスワード>
adminユーザーをwheelグループに追加する
# usermod -aG wheel admin
sudoが使用できるか確認する
$ sudo vi -v
rootユーザーでSSHできないようにする
sshd_configファイルを開いて、PermitRootLoginを変更する
$ sudo vi /etc/ssh/sshd_config
#PermitRootLogin prohibit-password
PermitRootLogin no
sshdを再起動する
$ sudo systemctl restart sshd
SHHで使うポート番号を変更する
sshd_configファイルを開いて、ポート番号をデフォルト値の22番から別のポートに変更する
$ sudo vi /etc/ssh/sshd_config
#Port 22
Port 1122
sshdを再起動する
sudo systemctl restart sshd
ファイアウォールの設定
SSH用にファイアウォールの設定をデフォルトの22番から変更する
ファイアウォールが起動していることの確認
$ sudo firewall-cmd --state
running
起動していなければ起動する
$ systemctl start firewalld
設定を確認する
$ sudo firewall-cmd --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: eth0
sources:
services: ssh
ports:
protocols:
forward: yes
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
servicesにsshと出ているので、22番ポートが解放されている
sshをサービスから削除する
$ sudo firewall-cmd --reload
success
設定を再度確認する
$ sudo firewall-cmd --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: eth0
sources:
services:
ports:
protocols:
forward: yes
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
1122番ポートを開く
$ sudo firewall-cmd --add-port=1122/tcp --zone=public --permanent
$ sudo firewall-cmd --reload
ファイアウォールの設定を反映する
$ sudo firewall-cmd --reload
success
設定を再度確認する
$ sudo firewall-cmd --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: eth0
sources:
services:
ports: 1122/tcp
protocols:
forward: yes
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
WireGuardの設定
下記の記事を参考にして、WireGuardをVPSと自宅サーバーに導入する
WireGuardを使って爆速でVPNトンネルを構築する
VPSにWireGuardをインストールする
$ yum install elrepo-release epel-release
$ yum install kmod-wireguard wireguard-tools
自宅サーバーにもインストールする
$ sudo apt update
$ sudo apt install wireguard
設定ファイル/etc/wireguard/wg0.conf
の作り方は記事と同じ
サーバー側のポートを開放する
$ sudo firewall-cmd --add-port=51820/udp --zone=public --permanent
$ sudo firewall-cmd --reload
サーバー側・クライアント側ともにデーモン化の設定をする
$ sudo systemctl start wg-quick@wg0
$ sudo systemctl enable wg-quick@wg0
疎通確認
ping -c 3 10.0.0.2 # VPSから自宅サーバー
ping -c 3 10.0.0.1 # 自宅サーバーからVPS
ポートフォワード設定
VPS側で受け付けた通信を自宅サーバーへ送るために、ポートフォワードを設定する
下記の記事を参考にIPマスカレードを設定する
Firewalld : IP マスカレードの設定
コネクションの状態を確認する
# nmcli connection
NAME UUID TYPE DEVICE
System eth0 5fb06bd0-0bb0-7ffb-45f1-d6edd65f3e03 ethernet eth0
wg0 7bfe030a-8367-45cd-870f-b8c7d2ca34ac wireguard wg0
ens3 bd6baf9c-f992-33b6-ab65-9c210aea64fa ethernet --
wg0 fcd3d997-2847-49e9-9a28-e9c2d46bce9e wireguard --
wireguardのインターフェイスwg0
をinternalに、メインのインターフェイスeth0
をexternalにゾーン設定を変更する
# nmcli connection modify wg0 connection.zone internal
# nmcli connection modify "System eth0" connection.zone external
IPマスカレードを設定する
# firewall-cmd --zone=external --add-masquerade --permanent
外部からきた22565
番ポートへのアクセスを10.0.0.2
(自宅サーバー)の22565
番ポートにフォワードする
22565番ポートも解放する
# firewall-cmd --zone=external --add-forward-port=port=22565:proto=tcp:toport=22565:toaddr=10.0.0.2 --permanent
# firewall-cmd --add-port=22565/tcp --zone=external --permanent
sshとWireGuard用のポート開放設定も、--zone=external
にしておく
# firewall-cmd --add-port=1122/tcp --zone=external --permanent
# firewall-cmd --add-port=51820/udp --zone=external --permanent
# firewall-cmd --reload
デフォルトゾーンを確認する
# firewall-cmd --get-default-zone
public
デフォルトゾーンがexternalとなっていなければ疎通できなかった
(ここでハマった)
# firewall-cmd --set-default-zone=external
# firewall-cmd --get-default-zone
external
セキュリティグループの設定
ConoHaのコントロールパネルで以下のようにセキュリティグループの設定を行う
ssh(1122/TCP)、WireGuard(51820/UDP)、マイクラ(25565/TCP)のポートを開ける
通信方向 | イーサタイプ | プロトコル | ポート範囲 | IP/CIDR |
---|---|---|---|---|
Out | IPv6 | ALL | TD | TD |
Out | IPv4 | ALL | TD | TD |
In | IPv6 | TCP | 1122 | ::/0 |
In | IPv4 | TCP | 1122 | 0.0.0.0/0 |
Out | IPv4 | UDP | 51820 | |
In | IPv4 | UDP | 51820 | |
Out | IPv4 | TCP | 25565 | |
In | IPv4 | TCP | 25565 |
サーバー立ち上げ
自宅サーバーでマイクラサーバーを起動する
プレイヤーは、マルチプレイのアドレスにVPSの25565番ポートを入れて接続する
Discussion