概要
自宅の回線が共有になっており、サーバーが公開できない状態になっていました
(共有回線のため大本のルーター設定をこちらでできない)
さくらVPSを利用し、自宅サーバーとVPNしポートフォワードすることで任意のポートを公開できるようにしてみました
今回は、とりあえずポート80を公開しapacheのデフォルトページをさくらVPSのグローバルIPにアクセスしたら表示できるようしてみます
利用環境
■さくらVPS
・OS ubuntu
・512Mプラン
■自宅
・OS proxmox
・CPU 5700g
・メモリ 32GB
・VM ubuntu
・VM設定(割り当て)
└メモリ16GB
CPU6コア
手順
さくらVPSをレンタルする
基本ポートフォワードするぐらいなので、512MBのプランで契約しました
パケットフィルターを設定する
デフォルトですと、ポート22がすべてになっているので
自宅のグローバルIPだけに変更しておきます
そのほどHTTPでアクセスし、動作確認もするのでこの段階でポート80もあけておきます
(こちらも念のため、自宅のグローバルIPだけ許可しました。)
さくらVPSの初期設定をする
SSHでVPSにログインし、下記コマンドを実行する
sudo apt update
sudo apt upgrade
sudo reboot
これで最新バージョンにアップデートが完了します
最後のrebootを実行すると、VPSが再起動するのでSSHで再接続してください
いきなり接続がきれるので、初めての人はびっくりするかもしれませんが安心してください
WireGuardをインストールする(さくらVPS)
下記コマンドを実行する
sudo apt install wireguard
VPN接続に利用する秘密鍵を作成する
wg genkyey | sudo tee /etc/wireguard/vps.key
公開鍵を作成する
sudo cat /etc/wireguard/vps.key | wg pubkey | sudo tee /etc/wireguard/vpsPublic.key
作成したキーはchmodを使い600にしておくといいかと思います
しなくても動きますが、セキュリティを考えると上記にしたほうが無難です
自宅サーバーの設定をしていく
基本的には、さくらVPSと同じコマンドを入力していきます
下記内容を順番に入力してください
sudo apt update
sudo apt upgrade
sudo reboot
sudo apt install wireguard
wg genkyey | sudo tee /etc/wireguard/jitaku.key
sudo cat /etc/wireguard/jitaku.key | wg pubkey | sudo tee /etc/wireguard/jitakuPublic.key
これでさくらVPSと自宅サーバーにwireguardのキー作成まで終わりました
wg0.confの設定をしていく
さくらVPS、自宅サーバーそれぞれに設定していきます
両方ともファイルの場所は下記になり、vimあたりのコマンドで新規作成してください
/etc/wireguard/wg0.conf
さくらVPS側の設定
[Interface]
PrivateKey = 作成したさくらVPSの秘密鍵
Address = 172.16.0.1 (サーバーのインターフェイスに割り当てるIPアドレス)
ListenPort = 51820
[Peer]
PublicKey = 作成した自宅サーバーの公開鍵
AllowedIPs = 172.16.0.2/32 (クライアントに割り当てたIPアドレス)
自宅PC側の設定
[Interface]
PrivateKey = 自宅サーバーの秘密鍵
Address = 172.16.0.2 (クライアントのIPアドレス)
[Peer]
PublicKey = さくらVPSの公開鍵
EndPoint = さくらVPSのグローバルIPアドレス:51820
AllowedIPs = 172.16.0.0/24 (WireGuardを経由して通信する先のIPアドレス)
ポートフォワードの設定をする
さくらVPS側で下記コマンドを実行する
sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 172.16.0.2:80
sudo iptables -t nat -A POSTROUTING -p tcp -d 172.16.0.2 --dport 80 -j SNAT --to-source 172.16.0.1
# 外部インターフェース(例:ens3)にマスカレードを適用
sudo iptables -t nat -A POSTROUTING -o ens3 -j MASQUERADE
外部インターフェースについては、ip aのコマンドで外部に向かっているものを指定してください
wireGuardの起動
さくらVPSで下記コマンドを実行してください
sudo systemctl enable wg-quick@wg0
sudo systemctl start wg-quick@wg0
その後自宅サーバーで下記をコマンドを実行してください
sudo wg-quick up wg0
疎通確認をする
念のためさくらVPSと自宅サーバーからそれぞれpingをうってみてください
成功すると応答が返ってきます
自宅サーバーにapacheをインストールする
下記コマンドを実行してください
sudo apt install apache2
sudo systemctl start apache2
これで自宅サーバーにapacheのインストールと、起動が完了します
最終確認
成功すると、さくらVPSのグローバルIPにアクセスすると自宅サーバーにインストールされているapacheのページが開きます。
まとめ
ずっとAWS側ばかり触ってきましたが、linuxの設定を本格的にやってみました。
この方法ならRTX1200などのVPNルーターも不要ですし、環境の用意はしやすいのかなと思います。
今回はapacheでしたが、ゲームサーバーでも公開してみようと思います。