LoginSignup
21
29

More than 5 years have passed since last update.

Conohaと自宅鯖をVPNでつないで大容量ストレージサーバーを構築した話

Last updated at Posted at 2018-04-08

クラウドサーバーで大容量のストレージサーバーを構築すると料金がバカにならない。
かなり安くそれもそこそこ早い回線でストレージサーバーを構築できないかと考えて思い付きでやってみたらできた話。

WEBサーバーはApache、PHP、MariaDB、Owncloud
VPNサーバーはsoftether
両サーバーともCentOS7で構築。

環境

Conoha(512MBプラン) ×2
自宅鯖(非固定IP・NTT東日本管内)
私はもともと構築していたアクティブディレクトリ鯖とストレージサーバーが別なので2台(AD鯖は仮想)使っているが、一つでも構わない。
自宅インターネットはIPoEに対応したギガライン環境(IPv6)
今回の内容はIPv6(NGN)がないと現実的ではないので注意。(クラウドと自宅間を高速通信させる必要があるため)
IPv6オプションを申し込んでるだけでもできるのかもしれないけど、環境がないのでわからない・・・

WEBサーバーとVPNサーバーはconohaのプライベートネットワークを構築して、1Gbpsで安定したサーバー間通信を行う。
WEBサーバー:10.0.0.1/24
VPNサーバー:10.0.0.2/24
で設定しているがネットワークアドレスが重複しなければ何でも構わない。

各サーバーの役割

サーバー別に簡単に役割を書いておく

Conoha(Webサーバー)

ただのWEBサーバー。
https://qiita.com/salt_field/items/31acb1cbb707102e0702
当方のWEBサーバーはここで書いたようにバーチャルドメイン対応している。

Conoha(VPNサーバー)

Softetherを導入したVPNサーバー
WEBサーバーと自宅サーバーを繋ぐ為に導入。
WEBサーバーと別な理由はポートが被るから。VPNで443ポート使わなければ一緒にできるけど、softetherを使うならSSL-VPN(VPN over https)を使わないとメリットが激減する。(と思う)

自宅鯖(ストレージサーバー)

ただのwindowsサーバー。
別にwindowsサーバーである必要もない。
NASでもLinuxでもwindows10でもwindows7でもなんでも構わない。
ただフォルダを共有しているだけのサーバー。
windowsサーバーな理由は稼働しているサーバーが転がっていたから。ただそれだけ。
windowsサーバーを買うと高いので、windows系でやりたいんだ!って人はhyper-v Serverで共有フォルダ作ればいいと思う。サーバーOSだから安定して使えると思う。
ちなみにこの辺からダウンロードできる。
https://www.microsoft.com/ja-jp/evalcenter/evaluate-hyper-v-server-2016

自宅鯖(ADサーバー)

だいぶ前に構築してそのまま放置していたADサーバー。
今回はWEBサーバーの認証をLDAPで行いたいので使用する。
LDAPを使用しないなら不要。

構築

ここではOwncloudをドメイン「cloud.test.com」でアクセスする。

WEBサーバー

WEBサーバーはこちらをもとに構築する。
Wordpressは導入しなくても良い。
https://qiita.com/salt_field/items/31acb1cbb707102e0702

VPNサーバー

Softetherを導入する。
まずはダウンロード
最新版はこちらで確認
http://jp.softether-download.com/files/softether/

ちなみに2018/04/07現在での最新はこちら。
http://jp.softether-download.com/files/softether/v4.25-9656-rtm-2018.01.15-tree/Linux/SoftEther_VPN_Server/64bit_-_Intel_x64_or_AMD64/softether-vpnserver-v4.25-9656-rtm-2018.01.15-linux-x64-64bit.tar.gz

#wget http://jp.softether-download.com/files/softether/v4.25-9656-rtm-2018.01.15-tree/Linux/SoftEther_VPN_Server/64bit_-_Intel_x64_or_AMD64/softether-vpnserver-v4.25-9656-rtm-2018.01.15-linux-x64-64bit.tar.gz

wgetコマンドがない場合は

#yum install wget

でコマンドをインストールする。

コンパイルにGCCが必要なので先にインストールする。

#yum install gcc

ダウンロードしたファイルを解凍する。

#tar xvfz softether-vpnserver-v4.25-9656-rtm-2018.01.15-linux-x64-64bit.tar.gz
#cd vpnserver/
#make

コンパイルが完了したらディレクトリを移動する。

#cd ..
#mv vpnserver /usr/local/
#cd /usr/local/vpnserver

サービスを登録する。

#vi /usr/lib/systemd/system/vpnserver.service

[Unit]
Description=SoftEther VPN Server
After=network.target

[Service]
Type=forking
ExecStart=/usr/local/vpnserver/vpnserver start
ExecStop=/usr/local/vpnserver/vpnserver stop

[Install]
WantedBy=multi-user.target
#systemctl daemon-reload
#systemctl enable vpnserver
#systemctl start vpnserver

ポートを開放する

#firewall-cmd --add-service=https --zone=public --permanent
#firewall-cmd --add-port=992/tcp --zone=public --permanent
#firewall-cmd --add-port=1194/tcp --zone=public --permanent
#firewall-cmd --add-port=5555/tcp --zone=public --permanent
#firewall-cmd --add-port=500/udp --zone=public --permanent
#firewall-cmd --add-port=4500/udp --zone=public --permanent
#firewall-cmd --reload

softetherの設定
SoftEther VPN サーバー管理をパソコンにインストールして、そこから設定を行う。
1.png
新しい接続設定を押してセットアップする。

2.png
設定名:任意の設定名
ホスト名:VPNサーバーのアドレス又はドメイン
管理パスワード:空白
入力したらOKを押す。

設定した項目が出てくるのでそれをクリック。
初回はパスワードが設定されていないので、パスワードなしでアクセスする。
その後パスワードを新規設定する画面がでるので任意のパスワードを設定する。

3.png
アクセスするとこんな感じ。
仮想HUBの作成を押して仮想HUBを作成する。

4.png
仮想HUB名:任意HUB名
パスワード:任意パスワード
WEBサーバーからのアクセス用と自宅鯖からのアクセス用のHUBを作成する。(計2つ)

5.png
作成した仮想HUBにアクセスしてそれぞれユーザーを作成する。

6.png
新規作成

7.png
ユーザー名:任意のユーザー名
パスワード:任意のパスワード
後で必要になるので忘れないこと
2つのHUBに対してユーザーを作成し終わったら続いて仮想L3スイッチの作成を行う。

8.png
新規作成

9.png
任意の名称を設定

10.png
仮想インターフェイスを追加する。

11.png
仮想HUBは先ほど作成したものを指定する。
WEBサーバーとの接続用HUBのIPは自宅鯖のネットワークIPとは違うものを指定する。
自宅鯖との接続用HUBのIPは自宅鯖のネットワークIPとは同じものを指定し、自宅で使用していないIPにする。

(WEBサーバー用HUB)
IPアドレス:192.168.255.254
サブネットマスク:255.255.255.0
(自宅鯖用HUB)
IPアドレス:192.168.1.254
サブネットマスク:255.255.255.0

設定したら最後に「動作開始」を押して仮想L3スイッチを稼働させる。
これでVPNServerの構築は終わり。

WEBサーバー(VPN接続設定)

VPNサーバーを構築したら、自宅に接続する用のVPN接続設定をWEBサーバーに構築する。

softether VPN Clientを導入
最新版はこちらを確認する。
http://jp.softether-download.com/files/softether/

2018/04/08現在の最新版はこちら
http://jp.softether-download.com/files/softether/v4.25-9656-rtm-2018.01.15-tree/Linux/SoftEther_VPN_Client/64bit_-_Intel_x64_or_AMD64/softether-vpnclient-v4.25-9656-rtm-2018.01.15-linux-x64-64bit.tar.gz

VPN Clientをダウンロードする。
wgetコマンドがなければインストールしておくこと

#yum install wget
#wget http://jp.softether-download.com/files/softether/v4.25-9656-rtm-2018.01.15-tree/Linux/SoftEther_VPN_Client/64bit_-_Intel_x64_or_AMD64/softether-vpnclient-v4.25-9656-rtm-2018.01.15-linux-x64-64bit.tar.gz

ダウンロードしたファイルを解凍する。

#tar zxvf softether-vpnclient-v4.25-9656-rtm-2018.01.15-linux-x64-64bit.tar.gz

VPN Clientをコンパイルする。
gccがなければインストールしておく。この辺はVPNServerと同じ

#yum install gcc
#cd vpnclient/
#make

コンパイルしたソフトを移動する。

#cd ..
#mv vpnclient /usr/local/
#cd /usr/local/vpnclient/

権限を変更する。

#chmod 600 *
#chmod 700 vpncmd vpnclient

softether client 起動時に仮想インターフェイスにIPを追加するshellスクリプトを追加する。
ここで指定するIPアドレスは、VPNサーバーのL3スイッチで作成したWEBサーバーとの通信用IPと同じネットワークアドレスにする。

# vi /usr/local/vpnclient/setting_ip.sh
      #!/bin/bash

      # case Static IP
      TAP_IF="vpn_tap1"

      # 30sec Loop
      for i in {1..30}
      do
          sleep 1
          ip tap | grep --quiet ${TAP_IF}
          STATUS=$?
          if [ "${STATUS}" == "0" ]
          then
              ifcfg  ${TAP_IF}  add  192.168.255.1/24(任意のIPアドレス)
              route add -net [自宅LANネットワークアドレス] netmask 255.255.255.0 gw 192.168.255.254
              break;
          fi
      done
      exit 0

実行権限を付与

#chmod 700 /usr/local/vpnclient/setting_ip.sh

VPN Clientをサービスとして登録する。
また起動時に先ほどのshellスクリプトを実行して、仮想インターフェースにIPを自動で付与するようにする。

[Unit]
Description=SoftEther VPN Client
After=network.target

[Service]
Type=forking
ExecStart=/usr/local/vpnclient/vpnclient start
ExecStartPost=/usr/local/vpnclient/setting_ip.sh
ExecStop=/usr/local/vpnclient/vpnclient stop

[Install]
WantedBy=multi-user.target

デーモンを再読み込みして、サーバー起動時に実行されるようにする。
ここではまだ起動させない。

#systemctl daemon-reload
#systemctl enable vpnclient

サーバーを単体で手動起動していろいろ設定をする。

#cd /usr/local/vpnclient
#./vpnclient start
#./vpncmd localhost /CLIENT

管理者用のパスワードを設定する。

>PasswordSet

リモート管理の禁止

>RemoteDisable

インターネット接続維持機能の無効化

>KeepDisable
>KeepGet

仮想NICの追加

>NicCreate  vpn_tap1
>NicList

アカウント作成

>AccountCreate  CloudVPN  /SERVER:10.0.0.2:443  /HUB:[VPNServerのWEBサーバーとのアクセス用HUB名]  /USERNAME:[サーバーのHUBに設定したユーザー名]   /NICNAME:vpn_tap1
>AccountList

パスワード設定と自動起動設定

>AccountPasswordSet CloudVPN  /TYPE:standard
>AccountStartupSet  CloudVPN
>AccountGet  CloudVPN

接続

>AccountConnect CloudVPN
>AccountList

状態が接続完了になっていればOK
一度停止して、サービスから起動しなおす。

#./cpnclient stop
#systemctl start vpnclient
#ip a

インターフェース「vpn_tap1」が追加されて、シェルスクリプトに記述したIPが割り振られていることを確認する。

仮想L3スイッチに通信できることを確認する。

#ping -c 4 192.168.255.254
#ping -c 4 [自宅鯖用HUBの仮想IFのIP]

WEBサーバーHUBの仮想IFに通信できて、自宅鯖HUBの仮想IFに通信できない場合は、ルーティング設定がうまくできていない可能性が高い。
WEBサーバーのルーティング情報を確認すること。

owncloudのインストール

今回はyumでインストールする。

#wget http://download.owncloud.org/download/repositories/stable/CentOS_7/ce:stable.repo -P /etc/yum.repos.d
#yum install owncloud

Owncloud用のDBを作成する。

#mysql -u root -p
> create database [DB名]; 
> grant all privileges on [DB名].* to [ユーザー名]@'localhost' identified by '[パスワード]';
> flush privileges; 

自宅鯖にsoftetherのBridgeかServerをインストールする。
自宅鯖ネットワークにブリッジを作成して、VPNサーバー上の自宅鯖用HUBにカスケード接続する。
このあたりは公式ページにもやり方が乗っているので確認しながら設定するとよい。
需要があればVPN網構築部分だけ記事にするけど、需要あるのかな・・・
カスケード接続する際はIPv6を使用して設定すること。

自宅鯖の共有フォルダをマウントする。
自宅鯖はあらかじめ192.168.255ネットワークにアクセスできるようにルーティング設定を入れておく。
windowsの場合は次のコマンドで設定できる。

route -p add 192.168.255.0 mask 255.255.255.0 [自宅鯖用仮想HUBのIFのIP]
mount -t cifs -o user=[共有フォルダにアクセスできるユーザー],password=[パスワード],sec=ntlm,uid=48,dir_mode=0770 [共有フォルダのパス] [共有フォルダのマウント先]

Owncloudのサーバーにアクセスして初期設定を行う。
http://[ドメイン]/owncloud
データフォルダはマウントしたフォルダを指定する。
DB名・DBユーザー名・DBパスワードを入力する。

これでクラウドサーバー上に大容量のストレージサーバーが構築できた。

引用

https://qiita.com/nobu-maple/items/4f61c19676133624d28f
https://qiita.com/ayihis@github/items/cff4d9f0306342f489b0
https://thinkit.co.jp/article/9772
http://www.unix-power.net/networking/post-734

21
29
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
21
29