読者です 読者をやめる 読者になる 読者になる

EPISODE 02

非ITエンジニアが取り組むリモートワーク基盤構築の記録

iPhone 7レザーケース - (PRODUCT)REDのエイジングと裸使いとキャップレス万年筆マットブラック

昨年の11月にiPhoneと同時購入したアップル製のiPhone 7レザーケース - (PRODUCT)RED。4ヶ月近くiPhoneから取り外すことなく日々使ってきた。

アップルのウェブサイトでの商品説明によると

Apple製のこのケースは、iPhoneのなめらかなボディにぴったりフィットします。余計な部分は一切ありません。特殊ななめし加工と仕上げが施されたヨーロピアンレザーを使っているため、外側は柔らかな手触りがあり、時とともに自然な風格が加わります。

とのこと。

で、本日の状態がこれ。

f:id:bcorp:20170311122620j:plain

f:id:bcorp:20170311122634j:plain

参考までに約3ヶ月前の状態がこれ。

f:id:bcorp:20170311122647j:plain

「時とともに自然な風格が加わった」というより、単純に黒ずんでいるだけといった印象。革クリームでケアしてみたが綺麗になるような感触もなく。こういう感じのエイジングは好みでないことから、思い切ってケースを使うのはやめてiPhoneは裸で使うことにした。

久しぶりに素のiPhoneを触ってみたけど、金属の感触が心地よい。ブラックの色合いと持った感触が何かに似ているなと思ったら、キャップレス万年筆のマットブラッックと色合いも感触もそっくりということに気がついた。

f:id:bcorp:20170311122702j:plain

なかなかいい感じの組み合わせだったので、久しぶりにキャップレス万年筆を使い始めた。これはこれで機動性、実用性が高いということを改めて認識。モンブランの146と比べて、ペンのデザインは無骨な感じだけど、ボールペンに近い使い勝手と万年筆の書き味を得られるというメリットは大きい。デメリットはその利便性の高さから他のペンを使わなくなってしまうことか。

コンバータを使ったインクの補充でもいいけど、せっかくカートリッジも使えるので、パイロット純正のブルーブラックも購入。しばらくモンブランの万年筆は休ませて、キャップレス万年筆とiPhoneの裸使いの組み合わせで使っていきたい。

iPhone、iPadからAWS EC2にSSH接続する

先日契約したAWSだけど、せっかくなので活用の幅を広げるためiPhone、iPadからもSSHで接続できるように設定した。とはいっても簡単で、以前にエントリーしたMac miniへのSSH接続と同等の手順で接続することができる。

前提条件は以下の通り。

EC2側の条件

AWS :インスタンスが立ち上がっていて、固定IPが設定され、SSHでログイン可能なこと
OS:EC2 t2.micro Amazon Linux
セキュリティ:インスタンスのセキュリティグループの設定でSSHのポートが解放されていること
秘密鍵が発行されていること

クライアントの条件

iPhone 7、iPad Pro:iOS 10.2.1
SSHクライアント:Prompt 2がApp Storeからインストールされていること

設定手順概要

1.MacBookでAWSから発行された秘密鍵をテキストファイルにしてDropboxに保存する
(秘密鍵をiOS側でコピーできればDropboxは特に必須ではない)

2.iOS端末で秘密鍵をコピー
3.コピーした秘密鍵をPrompt 2に読み込む
4.Prompt 2にEC2の接続情報を設定する
5.Prompt 2からEC2に接続する

秘密鍵のコピー

MacBookに保存されたEC2の秘密鍵の名前をpen.txtなどと適当なファイル名にリネームしてDropboxに保存する。

f:id:bcorp:20170301182603p:plain

iOS端末でDropboxアプリから上記で保存した秘密鍵を開き全てをコピー後、Prompt 2アプリを立ち上げて、設定アイコン>鍵認証リストをタップ。

f:id:bcorp:20170301183117j:plain

+アイコンをタップしてクリップボードからペーストをタップ後、秘密鍵をコピーをタップしコピー済みと表示されることを確認する。

f:id:bcorp:20170301183353j:plain

EC2接続情報の設定

サーバリストから+アイコンをタップし、新規サーバ接続をタップする。

f:id:bcorp:20170301183607j:plain

入力する情報は以下の通り

名前:適当にわかりやすい名前
SSH:EC2インスタンスの固定IPアドレス
ポート:22
ユーザ名:ec2-user(デフォルトから変更していない想定)
パスワード:未入力のまま鍵アイコンをタップして読み込まれた認証鍵をタップ。

EC2へSSH接続する

接続をタップすると、ダイアログが表示されるので「信頼」をタップするとSSH接続されるはず。 vimが使えることが確認できるが、外付けキーボードを利用しないと文字入力は厳しそうな感触。

f:id:bcorp:20170301184019j:plain

フォントに関してはデフォルトだと表示される文字が小さいので、Prompt 2の設定からフォントサイズを好みに変更すると見やすくなる。

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以外にも試していきたいところ。