ConoHaに建てたVPSのグローバルipを叩くと自分ちのサーバにアクセス出来るようにしたかった(前編)

これは 高知工科大 Advent Calendar 2018 16日目の記事です.

はじめに

こんにちは、始めまして。高知工科大学あいうえ です。
今年のアドカレは昨年の記事の焼きましです。

やりたいこと

タイトルの通りConoHaに借りたVPSIPアドレスを叩くと自宅などのサーバに接続出来るようにしたいです。
具体的にはConoHaにVyOSをインストールしてローカルとに建てたVyOSといい感じにVPNを張ってルーティングしたいです。
グローバルIPを持っていない人が自宅に建てたMinecraftServerを月額630円で公開出来るような内容になると思います。
自宅のwebサーバ公開にも使えると思います。(リバースプロキシさん…)
正直なところconohaの上で建てるのが早いと思います。

MinecraftServerをUbuntu18.04LTSに建てる

とりあえず公開したいサーバの構築を行います。
前提としてssh接続出来るローカル環境のUbuntu18.04LTSを用意します。
各ツールの使用方法はググって下さい。

下準備

まず、Minecraft公式ページからminecraft_server.jarをダウンロードしておきます。
このページにリンクされているwikiを読めば分かると思います!
が、一応書きます。

次に、対象サーバにTera Termなどのsshクライアントなどで接続を行いパッケージを最新の状態にアップグレードします。

$ sudo apt update
$ sudo apt -y upgrade

Minecraftを起動するにはjavaが必要です。

$ sudo apt -y install default-jre

次にUbuntuipアドレスを確認。もしくは固定を行います。
ローカル環境であればこのipアドレスに接続することでマルチ環境が楽しめます。
ipアドレスの確認は

$ ip a

で行えます。
Ubuntu18.04でのipアドレス固定方法は@zen3様のUbuntu 18.04 LTSで固定IPアドレスの設定が分かりやすいと思います。

下準備は完了です。

構築

次にダウンロードしたminecraft_server.jarをscpなどを用いてubuntuに転送します。
windows環境であるとwinscpなどを利用すると分かりやすいでしょう。
今回私は ./minecraft_server/1.13.2/ に配置しました。筆者はMinecraftを離れて時間が経っている為これが正しいかは分かりません。

いよいよMinecraftServer起動です。
Minecraft公式ページにある java -Xmx1024M -Xms1024M -jar minecraft_server.1.13.2.jar nogui を実行しましょう。
意味はwikiにあります。

$ java -Xmx1024M -Xms1024M -jar minecraft_server.1.13.2.jar nogui

しばらく待ちます。するとディレクトリ内に様々なファイルが展開?されます。
その中の eula.txt をviなどのエディタで開き、 eula=false となっている箇所を eula=true と書き換えます。
これは規約に同意しますか的な意味である。ちゃんと読もう!!

$ vi eula.txt

変更前

By changing the setting below to TRUE you are indicating your agreement to our EULA (https://account.mojang.com/documents/minecraft_eula).
#ここ日付
eula=false

変更後

By changing the setting below to TRUE you are indicating your agreement to our EULA (https://account.mojang.com/documents/minecraft_eula).
#日付
eula=true

そしてもう一度 java -Xmx1024M -Xms1024M -jar minecraft_server.1.13.2.jar noguiを実行します。

$ java -Xmx1024M -Xms1024M -jar minecraft_server.1.13.2.jar nogui

はい。これでMinecraftServerは建ちました。
ゲームをするPCでMinecraftを起動してMultiplayerを選択、Direct Connectでipアドレスを入力するとゲームが開始されます。
MinecraftServerコマンドなどはwikiを参照すると良いと思います。

私はtmuxというターミナルマルチプレクサを用いてターミナルを分割しサーバを運用、topコマンド監視を行っています。
こうすると裏でも動き続けてくれるしはっぴーです。

ここまで書くのに疲れたので以下の章は雑くなるかもしれません。
くぅ~疲れましたw

ConoHa VPSにVyOSを

VyOSとは

VyOSは、Vyattaから派生したオープンソースのネットワーク・オペレーティング・システムで、ソフトウェアベースのルーティング、ファイアウォールVPNなどの機能を提供します。wikiより。

つまりパソコンをルータに出来ます。
今回の構想はVyOSを利用することにより達成できると考えました。
他の方法として筑波大学SoftEther VPNを用いて行う方法も考えましたが、ポートフォワーディングをどうするかで詰まりそうなので今回はVyOSを利用します。だれかおしえてください

ConoHaでISOマウント

ConoHaのVPSでは様々なイメージファイルが選べます。ですがVyOSは選べません。
ですがISOマウントのapiやツールがConoHa活用マニュアルで公開されています。
活用マニュアルは役立つ情報満載

さくらのVPSでは標準でVyOSが利用可能!
だけどこのはちゃん可愛いから僕はConoHa

下準備

今回はWindows環境でconoha-isoを用いてVyOSのISOをマウントします。

まずConoHaで最小構成のVPSを普通に契約します。この時のイメージタイプはなんだって良いのだと思います。
契約したら作成されたVPSをシャットダウンします。
conoha-isoを利用するために必要な「APIユーザ名」「APIパスワード」「テナント名 or テナントID」の3要素を確認します。
conoha-isoのREADME.mdを読むと

conoha-isoを実行するには、APIへの認証情報とリージョンの指定が必須となります。 API認証情報は「APIユーザ名」「APIパスワード」「テナント名 or テナントID」です。これらの情報はConoHaのコントロールパネルにあります。

とあるのでコントロールパネルに飛びます。
パスワードを打ちAPIユーザの作成行います。
この画面で「APIユーザ名」「APIパスワード」「テナント名 or テナントID」の情報が手に入ります。
次にリージョンを確認します
サーバのステータス確認画面を開きVPS設定を選択すると収容ホストの欄があります。この文字列にある tyo1 tyo2 のどちらかであるかを確認します。
URLの https://manage.conoha.jp/VPS/Detail/ 以下でも確認できますね。
tyo2ってあるんでしょうか?

conoha-isoを使う

さぁ、必要な情報が揃いました。 README.mdを読むとだいたい分かります。
活用マニュアルWindowsの下にある ZIP fileをクリックzipファイルをダウンロード、解凍します。
コマンドプロンプト(PowerShell)を開き解凍したフォルダのディレクトリに移動します。
コマンドライン引数で必要な情報を渡します。
テナント名、テナントIDどちらでも構わないらしいです。

ISOイメージを一時領域とやらにダウンロードさせます。

> .\conoha-iso download-u [APIユーザ名] -p [APIパスワード] -n [テナント名] -r [リージョン] -i [ダウンロードリンク]

今回私はVyOS1.2.0-rc10のダウンロードURLを指定させました。各要素がそれぞれ

APIユーザ名 USER
APIパスワード PASSWORD
テナント名 TENANT
リージョン tyo1

入れたいVyOSバージョンが1.1.8 だとすると以下のようになります。

> .\conoha-iso download -u USER -p PASSWORD -n TENANT -r tyo1 -i http://ftp.tsukuba.wide.ad.jp/software/vyos/iso/release/1.1.8/vyos-1.1.8-amd64.iso

リンク切れてたらごめんなさい。

Download request was accepted. と表示されれば成功です。

次にダウンロードが完了しているか確認します。

> .\conoha-iso list -u [APIユーザ名] -p [APIパスワード] -n [テナント名] -r [リージョン]

を実行します。 No ISO images. と出力されているとダウンロードは完了していません。
しばらく待ってから上記コマンドを再度入力すると [Image1] Name~ と表示されます。
表示されればダウンロードは完了しています。

次にVPSにISOをマウントします。 以下のコマンドを入力します。

>  .\conoha-iso.exe insert -u [APIユーザ名] -p [APIパスワード] -n [テナント名] -r [リージョン]
tyo1

するとConoHaで借りたVPSのネームタグ一覧が

[1] [ネームラベル] (IPアドレス)
Please select VPS [1]:

と出力されます。 Please select VPS [1]: と入力を求められるのでマウントしたいVPS番号を入力します。

Please select VPS [1]: 1

すると先程一時領域にダウンロードさせたISO一覧が表示されます。

[1] [ISO名]
Please select ISO [1]:

ここに出てくるマウントしたいISOの番号を選択します。
ここまでで1つしかISOをダウンロードさせてないはずなので1を選択すれば良いと思います。

Please select ISO [1]: 1
ISO file was inserted and changed boot device.

と出力されればISOマウント成功です。

ConoHaのVPSコントロールパネルを開きサーバを起動させてみましょう。

コンソールを開くとVyOSが開いているはずです。

vyos login: 

開いていれば成功です。
コマンドプロンプト(PowerShell)はこの後も使うのでそのまま置いておきます。

VyOS初期設定(1.1.8とかのやつ)

VyOSは起動するとすぐにプロンプトが表示されliveDVDのような感じになっています。
まずはVPSのブートディスクにVyOSをインストールします。
VyOSの初期ユーザ名、パスワードは共に vyos となっています。
詳しくはユーザーガイド日本語版にも載ってます。

vyos login: vyos
password: vyos
vyos@vyos:~$ 

VyOSをブートディスクにインストールするには install image というコマンドを実行します。

というところまでが今回、中編(VyOSインストール、初期設定)、後編(VyOSでVPNフォワーディング)はろんぶんの進捗次第で書きます。
息抜きでやると思います。息抜きでみんなとマイクラしたい!!!
以上です。