自宅サーバを外部公開したい。
ただ、グローバルIPが割り当てられていないため、なるべく金銭的負担が増えない方法を知りたい。
こんなお悩みを解決します。
以下の記事で紹介しているように、私は、自宅に自前のサーバを立てています。
【解説】Linuxサーバの構築方法を分かりやすく解説!
続きを見る
私のように、自宅サーバを立てたら外部に公開したくなる人もいると思います。
一方、環境上の制約があり、簡単にサーバを公開できない場合が存在します。
例えば、インターネット無料の集合住宅に住んでおり、グローバルIPアドレスが割り当ていない場合が考えられます。
今回は、このような場合において、自宅サーバを外部に公開する方法を紹介したいと思います。
必要な設定を順番に解説していきますので、興味がある方はぜひ最後までご覧ください。
今回のケースでは、VPSサーバの契約が必要となります。どの会社のVPSサーバを選択しようか悩んでいる場合、以下の記事を参考に検討していただければと思います。
【比較】おすすめのVPS 4選
続きを見る
記事の全体構成
分量を考慮し、今回は記事を以下の3つに分けて解説していきます。
- VPSの契約・設定
- VPN環境の構築・設定
- ルーティングの設定
今回は、1つ目の「VPSの契約・設定」について解説します。
また、ネットワーク構成は2つ目の「VPN環境の構築・設定」で解説します。
2つ目の「VPN環境の構築・設定」について記事を作成しました。
【解説】VPS+VPN(WireGuard)による自宅サーバの公開方法(VPN設定編)
続きを見る
3つ目の「ルーティングの設定」について記事を作成しました。
【解説】VPS+VPN(WireGuard)による自宅サーバの公開方法(ルーティング設定編)
続きを見る
VPSサーバの契約
今回のケースでは、VPSサーバの契約が必要となります。
どの会社のVPSサーバを選択しようか悩んでいる場合、以下の記事を参考に検討していただければと思います。
【比較】おすすめのVPS 4選
続きを見る
今回は、ConoHa VPSを選択し、VPS割引きっぷを利用して契約を進めていきたいと思います。
以降では、実際の画面を表示しながら説明していきます。
Step1:利用プランの設定
今回は、VPNサーバ用にVPSを契約するため、最も安いプランを選択します。VPSサーバのスペックは以下のようになります。
項目 | 内容 |
---|---|
CPU | 1 Core |
メモリ | 512MB |
SSD | 30GB |
有効期間 | 36か月 |
VPNサーバ以外の用途やVoIPサーバを立てる場合、スペック不足になると思うので、上記以外のプランを選択すると良いと思います。
上記以外のプランのうち、おススメは、以下のメモリ2GBのプランとなります。
項目 | 内容 |
---|---|
CPU | 3 Core |
メモリ | 2GB |
SSD | 100GB |
有効期間 | (任意) |
Step2:利用するOSの選択
後ほど必要なソフトウェアをインストールしたいため、VPS構築時はOSのみをインストールします。
私は、Debian系を扱うことが多いため、Ubuntu 22.04(64bit)を選択しました。
この段階で、全く同じ選択をしていれば、以下のような形になっていると思います。
Step3:rootパスワードの設定
次に、rootパスワードを設定します。
このパスワードはVPSサーバへのログイン時に利用するため、忘れないようにしてください。
また、お好みで「ネームタグ」を変更します。ここでは説明のため「vps」としています。
Step4:オプションの設定
次に、オプションの設定をしていきます。ここでの設定はSSH Keyのみとなります。
SSH Keyを「使用しない」から「キーを新規作成」に変更します。
ネームタグは何でも良いのですが、分かりやすさのため「conoha-vps-ssh-key」としました。
追加を押下すると、プライベートキーのダウンロード画面が表示されます。
このプライベートキーもsshログイン時に利用するため、大切に保管してください。
プライベートキーをダウンロードすると、保存先のディレクトリに「yyyymmddHHMMSS.pem」というファイルが存在すると思います。
ここで、ファイル名はダウンロード時の日時を表します。
このままでも良いのですが、分かりやすさのため「conoha-vps-ssh-private-key.pem」とリネームして管理しておきます。
プライベートキーのダウンロードが完了すると「SSH Key」の部分が「キーを選択」に変化しており、先ほど指定したネームタグ(conoha-vps-ssh-key)が指定されていると思います。
一通り設定が完了したら、右側の「次へ」を押下します。
Step5:支払方法の設定
金額を確認したのち、クレジットカードを登録し、「決済」を押下します。
Step6:VPSサーバ構築完了
正常に決済が完了すると、VPSサーバの構築が始まります。
しばらくすると画面中央の「構築中」が「起動中」に変化します。(適宜、F5キー等でページを読み込み直してください)
以上で、VPSサーバの契約は完了となります。
続いて、VPSサーバの設定に取り掛かります。
VPSサーバの設定
OSインストール直後となるため、OSのセットアップを行っていきます。
VPSサーバへのログイン
ConoHa VPSの管理画面にアクセスし、構築したVPSサーバあることを確認します。
上記の画面の状態で、「コンソール」を押下し、コンソールを起動します。起動後、以下のような画面が表示されます。
上記の画面の状態で、以下を入力し、サーバにログインします。
項目 | 内容 |
---|---|
login | root |
password | 契約時に設定したrootパスワード |
無事にログインに成功すると以下のような画面が表示されます。
各種設定
以降では、コマンドベースで以下の設定を行っていきます。
- システムのアップデート
- 一般ユーザの作成
- 一般ユーザにroot権限を付与
- ログイン可否確認
- SSH Configの設定
- ファイアウォールの設定
- TeraTermによるログイン
コマンド操作時のTips
ConoHa VPSのコンソールは、そのままではコピー&ペーストができません。
上記の「テキストを送信」を押下すると、下図の左側のようにテキスト入力画面が表示されます。
ここにテキストを入力後、「送信」を押下すると、下図の右側のようにテキストを挿入できます。
この機能を利用してコピー&ペーストを行っていくと以降の作業が少し楽になります。
システムのアップデート
下記のコマンドを入力し、システムのアップデートを行います。
# システムのアップデート
apt update
apt upgrade -y
apt dist-upgrade -y
apt autoremove -y
この時、「could not get lock ~」と表示されることがあります。私は表示されました...
「could not get lock ~」が表示された場合は、ConoHa VPSの管理画面から「再起動」を行ってください。
一般ユーザの作成
rootユーザにはすべての権限が付与されています。この状況下では誤ったコマンド操作を行ってしまった場合でも実行されてしまいます。
このため、通常、一般ユーザを作成し、必要な時のみroot権限を取得して作業する、という方法がとられます。
今回も上記の方針に倣い、一般ユーザを作成します。
下記のコマンドを実行し、一般ユーザを作成作成していきます。
ここでは、「yuruto」というアカウントを追加する場合の例となります。ご自身の環境に合わせて適宜変更してください。
# ユーザ追加
# adduser ユーザ名 という形式でコマンドを入力する
adduser yuruto
コマンド実行後、以下のような画面が表示され、パスワードの入力を求められます。
一般ユーザでログインする際のパスワードを入力してください。
この時、セキュリティの都合上、画面には何も表示されませんが入力は行えているので、そのまま入力を続けてください。
Adding user `yuruto' ...
Adding new group `yuruto' (1000) ...
Adding new user `yuruto' (1000) with group `yuruto' ...
Create home directory `/home/yuruto' ...
Copying files from `/etc/skel' ...
New pasword:
2回目に入力したパスワードの検証が完了すると、以下のような画面になると思います。
Retype new password:
passwd: password updated successfully
Changing the user information for yuruto
Enter the new value, or press ENTER for the default
Full Name []:
色々と確認されますが、何も入力せずにEnterキーを押下していってください。
最後の問いには「Y」を入力後、Enterキーを押下してください。
Changing the user information for yuruto
Enter the new value, or press ENTER for the default
Full Name []:
Room Number []:
Work Phone []:
Home Phone []:
Other []:
Is the information correct? [Y/n]
一般ユーザにroot権限を付与
最後に、追加した一般ユーザにroot権限を付与します。
下記を参考にコマンドを実行してください。
# ルート権限付与
# gpasswd -a ユーザ名 sudo という形式でコマンドを入力する
gpasswd -a yuruto sudo
Adding user yuruto to group sudo
ログイン可否確認
追加したユーザでログインできることを確認します。ターミナルに以下を入力し、ログアウトします。
logout
そして、追加した一般ユーザでログインできることを確認してください。
私の場合は、下記のようにログインできていることを確認しています。
SSH Configの設定
ConoHa VPSのターミナルを毎回利用するのは少し不便であるため、使い慣れたターミナルからログインするために、SSH時のConfigを設定します。
root権限を持つユーザでログインし、以下のコマンドを実行します。エディタは好きなものを利用してください。
sudo vim /etc/ssh/sshd_config
表示された設定ファイルを以下のように変更します。ここで、「-」が削除、「+」が追加を表します。
# 接続時のポート変更
- #Port 22
+ Port 22 # 1025-65535の範囲で1つ設定してください(左記は22に設定する場合の例)
# rootでのログインを無効化
- PermitRootLogin yes
+ PermitRootLogin no
# 公開鍵によるログインを有効化
- #PubkeyAuthentication yes
+ PubkeyAuthentication yes
# PAM認証を無効化
- UsePAM yes
+ UsePAM no
変更を保存後、下記のコマンドを実行します。
sudo systemctl restart sshd.service
また、最初に作成したSSHのプライベートキーを用いてログインしたいため、一般ユーザでログインした状態で、以下の設定を行います。
# 現在位置の確認
pwd
/home/yuruto
# .sshディレクトリを作成&パーミッションを変更
midir .ssh
chmod 700 .ssh
# パブリックキーをauthorized_keysファイルに書き込む&パーミッションを変更
echo "ssh-rsa xxxxxxxxxx....." > .ssh/authorized_keys
chmod 600 .ssh/authorized_keys
ここで、パブリックキーは、ConoHa VPSの管理画面から確認できます。「セキュリティ」→「SSH Key」→「ネームタグ(ここでは、conoha-vps-ssh-key)」の順にたどると下図のようにパブリックキーが表示されます。
ファイアウォールの設定
外部からのアクセスに対する対策のため、ファイアウォールを設定します。
下記のコマンドを実行し、現時点で有効になっている設定を確認します。
sudo ufw status
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
OpenSSHの設定が残っているので、以下のコマンドで削除します。
sudo ufw delete allow OpenSSH
その後、下記の順にコマンドを実行し、必要なポートのみ解放します。
# ============================
# 一旦、すべてのポートを閉じる
# ============================
sudo ufw default deny
Default incoming policy changed to 'deny'
(be sure to update your rules accordingly)
# ==================
# ロギング処理の設定
# ==================
sudo ufw logging on
Logging enabled
# ====================
# ロギングレベルの設定
# ====================
sudo ufw logging medium
Logging enabled
# ===============================================================
# sshd_configで設定したポート番号を指定(今回の例では、22となる)
# ===============================================================
sudo ufw allow 22
Rule added
Rule added (v6)
以下のコマンドを実行し、期待通り設定されていることを確認します。
sudo ufw status verbose
Status: active
Logging: on (medium)
Default: deny (incoming), allow (outgoing), deny (routed)
New profiles: skip
To Action From
-- ------ ----
22 ALLOW Anywhere
22 (v6) ALLOW Anywhere (v6)
最後に、ファイアウォールを有効化し、システムを再起動します。
# ファイアウォールの有効化
sudo ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup
# 再起動
sudo reboot
TeraTermによるログイン
TeraTermを利用して、VPSサーバにログインしたいと思います。必要になるものは、以下の3点です。
- VPSサーバのIPアドレス(ConoHa VPSの管理画面から確認できます)
- ユーザ名
- プライベートキー(今回の例では、conoha-vps-ssh-private-key.pem)
TeraTermを起動し、「Host」にVPSサーバのIPアドレス、「TCP port #」に接続時のポート番号を入力します。そして、OKを押下します。
次に、「User name」にユーザ名を入力し、下段のラジオボタンのうち、「Use RSA/DSA/ECDSA/ED25519 key to log in」を選択します。
そして、「Private key file」を選択し、VPSサーバ構築時にダウンロードしたプライベートキーファイルを選択します。
今回の例の場合、「conoha-vps-ssh-private-key.pem」となります。
一通り入力後、OKを押下します。正常にログインできれば成功です。
まとめ
今回は、ConoHa VPSを用いてVPSサーバを構築する方法を解説しました。
VPSサーバの契約
本記事では、VPSサーバを利用します。
どの会社のVPSサーバを選択しようか悩んでいる場合、以下の記事を参考に検討していただければと思います。
【比較】おすすめのVPS 4選
続きを見る
VPSサーバ構築までのステップ
ConoHa VPSの場合、以下の6StepでVPSサーバを構築できます。
- Step1:利用プランの設定
- Step2:利用するOSの選択
- Step3:rootパスワードの設定
ここで設定したパスワードは、なくさないようにしてください - Step4:オプションの設定
ここで生成したプライベートキーは、なくさないようにしてください - Step5:支払方法の設定
- Step6:VPSサーバ構築完了
VPSサーバの設定
VPSサーバの設定として、以下を実施します。
- システムのアップデート
- 一般ユーザの作成&root権限付与
- SSH Configの設定&ファイアウォールの設定
- ログインチェック