EPISODE 02

リモートワーク基盤構築の記録

AWS EC2にL2TP VPNを設定する

AWSが制限付きではあるが、無償で利用できるのと、SoftEther VPNの評判がすこぶる良さそうなので、EC2にVPNサーバを設定してみた。以下手順をメモしておく。

前提条件

VPNサーバの前提条件
AWS :インスタンスが立ち上がっていて、固定IPが設定され、SSHでログイン可能なこと
OS:EC2 t2.micro Amazon Linux
VPN:SoftEther VPN v4.22

インスタンスに設定したセキュリティグループの内容は以下の通り

タイプ プロトコル ポート 送信元
HTTP TCP 80 0.0.0.0/0
SSH TCP 22 999.999.999.999/32
カスタム UDP ルール UDP 4500 0.0.0.0/0
カスタム UDP ルール UDP 500 0.0.0.0/0
HTTPS TCP 443 0.0.0.0/0

VPNクライアント条件
MacBook macOS Sierra 10.12.3
iOS 10.2.1

手順の概要は以下の通り
1)SoftEther VPNのダウンロードとインストール
2)仮想HUBとユーザの設定
3)L2TP/IP Secの設定
4)仮想NAT、DHCPサーバの設定
5)クライアントの設定

VPNサーバ設定

EC2インスタンスにrootでログインする(以下すべての作業はrootで実施した)

$ sudo su -

gccソフトウェアのインストール

# yum install -y gcc

SoftEther VPNのダウンロード

# wget http://jp.softether-download.com/files/softether/v4.22-9634-beta-2016.11.27-tree/Linux/SoftEther_VPN_Server/64bit_-_Intel_x64_or_AMD64/softether-vpnserver-v4.22-9634-beta-2016.11.27-linux-x64-64bit.tar.gz

ファイルの解凍

# tar -zxvf softether-vpnserver-v4.22-9634-beta-2016.11.27-linux-x64-64bit.tar.gz

make

# cd vpnserver
# make #ライセンスへの同意が促されたら1で同意する(3回)

フォルダを/usr/localに移動し、権限の変更

# cd 
# mv vpnserver /usr/local #フォルダを移動する
# cd /usr/local/vpnserver/ #移動したフォルダへ移動
# chmod 600 * #権限の変更
# chmod 700 vpncmd
# chmod 700 vpnserver

インストールと動作をチェックする

# ./vpncmd
VPN Tools>check

All checks passed. It is most likely that SoftEther VPN Server / Bridge can operate normally on this system.
The command completed successfully.

VPN Tools>exit

常時バックグラウンドで動作し続けるデーモンプロセスとして登録する。

# cat > /etc/init.d/vpnserver

以下の文字列をそのままコピペし最後の行の改行の後に Ctrl+D キーを押す

#!/bin/sh
# chkconfig: 2345 99 01
# description: SoftEther VPN Server
DAEMON=/usr/local/vpnserver/vpnserver
LOCK=/var/lock/subsys/vpnserver
test -x $DAEMON || exit 0
case "$1" in
start)
$DAEMON start
touch $LOCK
;;
stop)
$DAEMON stop
rm $LOCK
;;
restart)
$DAEMON stop
sleep 3
$DAEMON start
;;
*)
echo "Usage: $0 {start|stop|restart}"
exit 1
esac
exit 0

スクリプトのパーミッションを変更

# chmod 755 /etc/init.d/vpnserver

chkconfigコマンドを使用して、上記のスタートアップスクリプトが Linux カーネル起動時に、自動的にバックグラウンドで起動するようにする。

# /sbin/chkconfig --add vpnserver 

サービススタート

# /etc/init.d/vpnserver start 
The SoftEther VPN Server service has been started.

言語の変更

# vi lang.config

# PacketiX VPN / SoftEther VPN Language Setting File
(省略)
# Specify a Language ID here.
ja #ここをenからjaに書き換えて保存する

ポートと仮想 HUBの設定

# ./vpncmd

vpncmd プログラムを使って以下のことができます。
1. VPN Server または VPN Bridge の管理
2. VPN Client の管理
3. VPN Tools コマンドの使用 (証明書作成や通信速度測定)

1 - 3 を選択: 1 #1を入力

接続先の VPN Server または VPN Bridge が動作しているコンピュータの IP アドレスまたはホスト名を指定してください。
'ホスト名:ポート番号' の形式で指定すると、ポート番号も指定できます。
(ポート番号を指定しない場合は 443 が使用されます。)
何も入力せずに Enter を押すと、localhost (このコンピュータ) のポート 443 に接続します。
接続先のホスト名または IP アドレス: #そのままエンター

サーバーに仮想 HUB 管理モードで接続する場合は、仮想 HUB 名を入力してください。
サーバー管理モードで接続する場合は、何も入力せずに Enter を押してください。
接続先の仮想 HUB 名を入力: #そのままエンター
VPN Server "localhost" (ポート 443) に接続しました。

VPN Server 全体の管理権限があります。

仮想HUBの設定  自動作成された仮想HUBの存在を確認するため、一覧を取得する。

VPN Server>hublist

HubList コマンド - 仮想 HUB の一覧の取得
項目            |値
----------------+-------------------
仮想 HUB 名     |DEFAULT
状態            |オンライン
種類            |スタンドアロン
ユーザー        |0
グループ        |0
セッション      |0
MAC テーブル    |0
IP テーブル     |0
ログイン回数    |0
最終ログイン日時|2017-02-23 08:36:36
最終通信日時    |2017-02-23 08:36:36
転送バイト数    |0
転送パケット数  |0

コマンドは正常に終了しました。

新しい仮想HUBの作成 

VPN Server>HubCreate

HubCreate コマンド - 新しい仮想 HUB の作成
作成する仮想 HUB の名前: EC2   #EC2という名前の仮想HUBを作成
パスワード: ********       #パスワードを2度入力
確認入力  : ********

コマンドは正常に終了しました。

DEFAULT仮想HUBの削除

VPN Server>HubDelete

HubDelete コマンド - 仮想HUBの削除
削除する仮想HUBの名前:DEFAULT

コマンドは正常に終了しました。

仮想HUBの選択

VPN Server>HUB EC2 

Hub コマンド - 管理する仮想 HUB の選択
仮想 HUB "EC2" を選択しました。

コマンドは正常に終了しました。

ユーザ一覧の取得

VPN Server/EC2>Userlist

UserList コマンド - ユーザー一覧の取得
項目|値
----+--

コマンドは正常に終了しました。

ユーザの作成

VPN Server/EC2>UserCreate

UserCreate コマンド - ユーザーの作成
ユーザー名: sakuma
参加するグループ名: #未入力
ユーザーの本名:   #未入力
ユーザーの説明:   #未入力

コマンドは正常に終了しました。

ユーザパスワードの設定

VPN Server/EC2>UserPasswordSet

UserPasswordSet コマンド - ユーザーの認証方法をパスワード認証に設定しパスワードを設定
ユーザー名: sakuma
パスワードを入力してください。キャンセルするには Ctrl+D キーを押してください。
パスワード: ***********
確認入力  : ***********

コマンドは正常に終了しました。

LT2P/IPSecの設定

VPN Server/EC2>IPsecEnable

IPsecEnable コマンド - IPsec VPN サーバー機能の有効化 / 無効化
L2TP over IPsec サーバー機能を有効 (yes / no): yes
Raw L2TP サーバー機能を有効 (yes / no): no
EtherIP / L2TPv3 over IPsec サーバー機能を有効 (yes / no): no
IPsec 事前共有鍵の文字列 (9 文字以下を推奨): ********* #事前共有鍵の文字列を入力する
VPN 接続時に仮想 HUB 名が省略された場合のデフォルト仮想 HUB 名: EC2

コマンドは正常に終了しました。

仮想 NAT および DHCP サーバー機能の設定

VPN Server/EC2>SecureNatEnable

SecureNatEnable コマンド - 仮想 NAT および DHCP サーバー機能 (SecureNAT 機能) の有効化

コマンドは正常に終了しました。

以上でサーバ側の設定は完了。特にエラーでハマるようなところはないはず。公式サイトのドキュメントが日本語で充実しているため、設定前にざっと読んでおくとより作業は楽になる。

クライアントの設定

今回はmacOSとiOSでの利用を想定しているため、構成プロファイルを作成して設定する方針とした。VPN設定の構成プロファイルはiOS、macOSともに共通なので、1つ作成してしまえば、iPhone、iPad、Macそれぞれの端末で手入力で設定する必要はない。

構成プロファイルの作成はAppleConfigurator2を利用する。AppleConfigurator2はMacAppStoreより無償でダウンロードできる。

ファイル>新規作成>一般で適当な値を入力する

f:id:bcorp:20170224141603p:plain

左タブのVPNから接続に必要なパラメータを入力する

f:id:bcorp:20170224141711p:plain

接続名:任意
接続のタイプ:L2TP
サーバ:EC2に設定した固定IPアドレス
アカウント:作成したアカウント名@作成した仮想HUB名
パスワード:ユーザ作成時に作成したパスワード
全てのトラフィックをVPN経由で送信にチェック
コンピュータ認証:共有シークレット
グループ名:空白
共有シークレット:IPsec 事前共有鍵の文字列で設定した文字列

作成した構成プロファイルは任意の場所に保存し、保存したプロファイルはメールやDropbox経由で端末送信しインストールする。

Macは作成した構成プロファイルをダブルクリックすることでインストール

f:id:bcorp:20170224141730p:plain

iPhone、iPadはメールで送るかDropboxに直接Safariからアクセスすることでインストールする。

f:id:bcorp:20170224141747p:plain

Macでの接続は、システム環境設定>構成プロファイルで作成したVPNを選択>接続をクリックして接続。

f:id:bcorp:20170224141803p:plain

iOSで接続するには、設定>VPNをONにすることで接続される。

f:id:bcorp:20170224142145p:plain

今回初めてEC2からSoftEther VPNの起動、設定までやってみたけど、AWSの契約からVPNの接続確認まで半日もかからずにとりあえず使える状態になっている。今のところ安定して使えているし、通信速度が極端に落ちるようなこともない。

AWSの無償期間が終了するまでは費用が発生することもなさそうなので、しばらくこのVPNを使ってみる予定。また、せっかくの無料期間なのでVPN以外にも試していきたいところ。

Python3.5をMacBookにインストールする

MacにはPythonが標準でインストールされているけど、バージョンは2.7になっている。MacBookではPython3を利用したい。手順をいつも忘れて結構時間を掛けてしまうので、今回購入したMacBookにPython3.5.3をインストールした方法をメモしておく。

前提条件
・macOS 10.12.3
・Mac App StoreからXcode 8.1がインストールされていること

以下Terminal.appで。

Homebrewのインストール

$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

デフォルトでインストールされているPythonのバージョン確認

$ python
Python 2.7.10

pyenvをインストール

$ brew install pyenv

インストール可能なPythonのバージョンを確認

$ pyenv install --list

Python3.5.3インストール

$ pyenv install 3.5.3

Pythonバージョン確認

$ pyenv versions
* system (set by /Users/user/.pyenv/version)
  3.5.3

pyenv有効化

eval "$(pyenv init -)"

.bash_profileの作成(ファイルがなければ)

$ touch .bash_profile

vimを起動してPATHの追加

$ vim.bash_profile
export PATH="$HOME/.pyenv/shims:$PATH"

環境変数の書き換え反映

$ source .bash_profile

Pythonの場所を確認

$ which Python
/Users/user/.pyenv/shims/Python

Pythonのバージョン確認

$ python 
Python 3.5.3

以上でPython 3.5.3が利用可能になった。

MacBook 2016のレビュー

先日Apple Storeオンラインで購入したMacBook 12が到着した。

f:id:bcorp:20170215100651j:plain

今回注文したMacBookの構成

  • 1.3GHz Dual-Core Intel Core M7
  • Intel HD Graphics 515
  • 8GB 1866MHz LPDDR3
  • 256GB PCIe-based Flash Storage

CPUだけCore M3からM7に変更している。ストレージ容量で少し迷ったが、現在利用しているMacBook Proの残ストレージ容量が256GB中、120GB程度しか消費していなかったこと、使わないファイルはOneDriveにアーカイブしてしまうため、今後もこれで十分だろうという判断。キーボードはiPadの外付けキーボードと入力方法方を合わせたかったので、英語キーボードを選択。カラーはiPadと同じスペースグレイを選んでみた。落ち着いた色なので、飽きがくることはなさそう。

注文から到着までの期間

到着までの期間は以下の通りで、注文から到着までちょうど一週間だった。発送元はいつも通り上海からでADSC支店を通過して国内配送に回っている様子。

  • 2月8日 PM 注文(クレジットカード決済)
  • 2月11日 PM 発送連絡
  • 2月14日 AM 自宅到着

外観

第一印象はカタログ上の記載通り軽くて薄いが、本体は剛性感があるのでペラペラで頼りないといった印象は受けない。MacBookを毎日持ち運ぶ想定はないけど、たまに持ち出すときでも、重量ストレスからは解放されそうだ。それでもApple iPad Pro9.7とMicrosoft Universal Foldable Keyboardの組み合わせで720gなので、重量の観点ではiPadには及ばない。

f:id:bcorp:20170215100722j:plain

MacBook Pro Late 2013とのサイズ比較

MacBook Pro Late 2013 MacBook 12 2016 差分
高さ 1.8cm 1.31 cm ▲0.49 cm
31.4 cm 28.05 cm ▲ 3.35cm
奥行き 21.9 cm 19.65 cm ▲ 2.25cm
重量 1.57 kg 0.92 kg ▲ 0.65kg

感圧タッチトラックパッド「Taptic Engine」

意識しなければ、Taptic Engineを使っていることを忘れるほどで、普段使っている上での違和感はない。MacBookを使う理由の一つにこのトラックパッドから離れられないというのがあるので、普通に使えることにとりあえずは安心した。

外部接続ポート

ポートはイヤフォンジャックとUSB Type-Cがそれぞれひとつずつ。

f:id:bcorp:20170215100818j:plain

f:id:bcorp:20170215100845j:plain

外部ディスプレイなど他の機器との接続は普段は想定していないため、特に問題はない。ただしバッテリーの消費次第ではLightningケーブルやmicroUSBとの共用も含めて検討しなければいけない。何本もケーブルやACアダプタを持ち運びたくはないので、可能な限りケーブル、ACアダプタは少なくするという方針で検討する。

英語キーボード

まだ1日しか使っていないけど、今のところ打鍵感に不満は感じられない。タイピング時の音の心配もあったが、構造上打ち込みする際の力は最小限で済むので、あまり心配する必要はないだろう。

f:id:bcorp:20170215100753j:plain

日本語キーボードから英語キーボードへ切り替えていることによるキーアサインの違い、日本語→英語への切り替え時の戸惑いはある。同時にライブ変換を使い始めていることもあって、慣れるのにはもう少し時間がかかるかなといった印象。

 MacBook Proからのデータ移行

以降前のMacBook Proで同じSierraを使っていたため、当然だけどOS観点で特に違和感はない。初期設定をTime Machineから復元するか、手作業で初期設定を行うか迷ったが、必要なファイルはDropboxとOneDriveに保存されているので、個別に設定していく方針で、特に問題なく作業は完了した。もうTimemachineによるバックアップは要らないかなといった感想。新しいMacは復元ではなく新たに環境構築した方が良い気がする。気分の問題だが。

動作

Spotlight検索のインデックスを作成しているのと、OneDriveの同期中ではあるが、MacBook Proと比較して動作がもたつくとか、引っ掛かるような印象はない。Intel Core M7というCPUの不安はあったけど、4K動画の編集や、何十枚ものRAWファイルを扱う想定はないので、今のところ大きな課題になるようなことはなさそう。

液晶

MacBook Proと変わらずRetinaディスプレイは美しい。少しカラープロファイルをカスタマイズして好みの色に近づけた。若干蛍光灯や電球の写り込みが気になるのは仕方ないところか。

インストール、アンインストールしたアプリ

今のところ以下の通り。

  • Office系:Word、Excel、PowerPoint、OneNote
  • クラウドストレージ:Dropbox、OneDrive
  • 開発系:Xcode 8,1、Android Studio、Python 3.5.3、Sublime Text3

標準でインストールされていたPages,Numbers,Keynote,GarageBand,iMovieを利用する想定はないので、アンインストールした。

まとめ

単純にCPU、メモリ、ストレージなどカタログ上のスペックを考慮して16万円という価格にバリューを感じるかと言われれば微妙なところ。ただし1kg以下でmacOSがそれなりに動くことを考えれば選択肢はこれしかないので、用途に合っていれば即買いして損はないはず。カスタマイズした割に納期も短かく、不具合もなさそうなので、個人的には満足している。