クラウドサーバーで大容量のストレージサーバーを構築すると料金がバカにならない。
かなり安くそれもそこそこ早い回線でストレージサーバーを構築できないかと考えて思い付きでやってみたらできた話。
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 サーバー管理をパソコンにインストールして、そこから設定を行う。
新しい接続設定を押してセットアップする。
設定名:任意の設定名
ホスト名:VPNサーバーのアドレス又はドメイン
管理パスワード:空白
入力したらOKを押す。
設定した項目が出てくるのでそれをクリック。
初回はパスワードが設定されていないので、パスワードなしでアクセスする。
その後パスワードを新規設定する画面がでるので任意のパスワードを設定する。
アクセスするとこんな感じ。
仮想HUBの作成を押して仮想HUBを作成する。
仮想HUB名:任意HUB名
パスワード:任意パスワード
WEBサーバーからのアクセス用と自宅鯖からのアクセス用のHUBを作成する。(計2つ)
作成した仮想HUBにアクセスしてそれぞれユーザーを作成する。
ユーザー名:任意のユーザー名
パスワード:任意のパスワード
後で必要になるので忘れないこと
2つのHUBに対してユーザーを作成し終わったら続いて仮想L3スイッチの作成を行う。
仮想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/
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