hirosanote’s blog

検証環境の構築手順やネットワーク機器のテスト結果、関連する事について記載します。このブログは個人で行っており、所属する会社とは関係ありません。

アリババクラウドの中国北京リージョンとのファイル転送スピード

日本から中国へFTP等で500MB等の大容量ファイルを送信する場合、約半日ぐらいかかり、非常にスピードが遅いです。中国のクラウド事業者のAlibabaを使用しているSBクラウドの場合、もしかして転送スピード速くなるのでは?と考えました。何も根拠はありません。。。

実際にテストしてみましたので、その結果です。

インスタンスのスペック 中国北部2 = 中国北京

f:id:hirosanote:20171009101309p:plain

WinSCPを使用し、SSHで78MBのファイルをアップロード

f:id:hirosanote:20171009101519p:plain

残り時間を見ると、78MBのファイルを送るのに、約1時間30分必要とします。日本時間の朝10時にテストを行いました。

残念ながら劇的にスピードが速くなることはありませんでした。

同じファイルを東京リージョンに構築したインスタンスへアップロードした場合、約5秒でファイル転送が完了します。

f:id:hirosanote:20171009115958p:plain

 

中国リージョンにインスタンスを作る場合、注意点があります。

インスタンス作成時、以下のメッセージが表示されます。

「中国本土でホストされているインターネットでインスタンスを使用する場合は、ウェブサイトの作成前にICP 登録番号の取得が必要です。」

 

ICP登録番号についてgoogleで検索して調べてみると、Webサイトを公開し情報配信する場合は、中国法令で定められているICP登録番号が必要とのこと。登録費用は、ある代行業者の場合は4万5千円でした。

いろいろと調査した結果、Webサイト公開の場合はICPライセンスが必要で、Webサイトを公開しない場合は必要ないと、判断しました。

 

せっかくSBクラウドに契約したので、インスタンスを作成する手順を記載します。

f:id:hirosanote:20171009110309p:plain

f:id:hirosanote:20171009111131p:plain

f:id:hirosanote:20171009111935p:plain

画面をスクロールします。

f:id:hirosanote:20171009112406p:plain

画面をスクロールします。

f:id:hirosanote:20171009112528p:plain

画面をスクロールします。

f:id:hirosanote:20171009112835p:plain

画面をスクロールします。

f:id:hirosanote:20171009113039p:plain

f:id:hirosanote:20171009113215p:plain

f:id:hirosanote:20171009113323p:plain

 

セキュリティグループの設定を行います。

f:id:hirosanote:20171009120558p:plain

f:id:hirosanote:20171009114759p:plain

f:id:hirosanote:20171009114732p:plain

f:id:hirosanote:20171009114841p:plain

f:id:hirosanote:20171009115121p:plain

ルールが追加されたことを確認します。

f:id:hirosanote:20171009115305p:plain

 

割り当てられたグローバルIPアドレスSSHクライアントからアクセスし、設定したパスワードを使用してインスタンスへログインします。

 

送信元ポート番号を偶数と奇数の両方を使用する設定

Ubuntu16にApache benchをインストールして負荷をかけると、Ubuntuの送信元IPアドレスに使用される送信元ポートは偶数しか使用しないことに気づきました。

root@ubuntu:~# lsb_release -rd
Description: Ubuntu 16.04.1 LTS
Release: 16.04

f:id:hirosanote:20170821203305p:plain

ソースポートの偶数、奇数を使用して分散するシステムを使用した場合、偶数のみのアクセスとなるため、偏りが発生します。偶数、奇数の両方を使用するためには、ip_local_port_rangeのデフォルト値の設定を変更する必要があります。

変更前:

root@ubuntu:~# /sbin/sysctl net.ipv4.ip_local_port_range
net.ipv4.ip_local_port_range = 32768 60999

 

変更するコマンド:

sudo sysctl -w net.ipv4.ip_local_port_range="32768 61000"

変更後:

root@ubuntu:~# /sbin/sysctl net.ipv4.ip_local_port_range
net.ipv4.ip_local_port_range = 32768 61000

 変更後のパケットは、以下のようになりました。

f:id:hirosanote:20170821202156p:plain

設定の上限に到達すると、偶数から奇数を使うようになりました。奇数が上限に到達すると、偶数を使います。変更前は、偶数が上限に到達すると、奇数ではなく偶数を使用します。

 設定変更により、送信元ポートが偶数、奇数の両方を使用してテストすることが可能となります。

 

チェーン証明書の作成

チェーン化されたサーバー証明書、中間証明書、ルート証明書を使用した動作確認が必要であったため、階層構造を持った認証局を作成しました。

認証局を作成しておくと、サーバー証明書、クライアント証明書を発行しその動作テストも行えるので、便利です。

Windowsサーバーに含まれる証明書機関を使用してルート証明機関、中間証明機関を作成し、中間証明機関からサーバー証明書、クライアント証明書を発行します。

 

環境

VMware ESXiにWindows 2008 R2 Server体験版を2つ作成

 

Windows2008 R2サーバーの構築

VMware ESXiに、Windows2008 R2サーバーを2つ構築します。

インストールイメージは、マイクロソフトのサイトよりダウンロードします。

https://www.microsoft.com/ja-JP/download/details.aspx?id=11093

インストールするオペレーティングシステムの選択は"Windows Server 2008R2 Standard(フルインストール)を選択し、デフォルトのままでウィザードに従ってインストールします。

 

インストール後、Windows FireWallを無効にし、ホスト名を変更します。

1台目のWindows Serverホスト名 : rootca
2台目のWindows Serverホスト名 : interca

 

 

ルートCAの構築 

ルートCAを構築するサーバーより、スタート > すべてのプログラム > 管理ツール > サーバーマネージャー をクリックします。

 

役割 > 役割の追加 をクリックします。

 

ウィザードに従って、インストールします。

f:id:hirosanote:20170503175331p:plain

f:id:hirosanote:20170503175533p:plain

f:id:hirosanote:20170503175629p:plain

f:id:hirosanote:20170503175951p:plain

f:id:hirosanote:20170503180032p:plain

f:id:hirosanote:20170503180149p:plain

f:id:hirosanote:20170503180525p:plain

f:id:hirosanote:20170503180735p:plain

f:id:hirosanote:20170503180951p:plain

f:id:hirosanote:20170503181200p:plain

f:id:hirosanote:20170503181456p:plain

f:id:hirosanote:20170503181550p:plain

 

f:id:hirosanote:20170503181840p:plain

 

CRLの設定を行います。スタート > 管理ツール > 証明機関 をクリックします。

証明書機関名[ROOTCA-CA]を選択し右クリックからプロパティを選択します。

拡張機能タブを選択します。

f:id:hirosanote:20170503184012p:plain

 

"ldap://..","http://..","file://.."を削除します。

f:id:hirosanote:20170503184604p:plain

 

追加をクリックし、中間CAのコンピューター名を含んだ以下のURLを設定します。

http://interca/CertEnroll/<CaName><CRLNameSuffix><DeltaCRLAllowed>.crl

変数は<DeltaCRLAllowed>を選択します。

f:id:hirosanote:20170503185929p:plain

 

「発行された証明書のCDP拡張機能に含める」のチェックボックスを有効にし、「適用」をクリックします。

f:id:hirosanote:20170503190343p:plain

Active Directory証明書サービスの再起動に関するメッセージが表示されるので「はい」をクリックします。

 

「c:\windows…」を選択し、以下の箇所にチェックボックスが設定されていることを確認します。

f:id:hirosanote:20170503193257p:plain

 

「機関情報アクセス(AIA)」を選択し、”ladp://…”,”http://…”,”file://…”を削除します。

f:id:hirosanote:20170503194256p:plain

 

追加をクリックし、中間CAのコンピューター名を含んだ以下のURLを設定します。
http://interca/CertEnroll/<ServerName>_<CaName><CertificateName>.crt
変数は<CertificateName>を選択します。

f:id:hirosanote:20170503195155p:plain

 

「発行された証明書のAIAを拡張機能に含める」のチェックボックスを有効にし適用をクリックします。
Active Directory証明書サービスの再起動に関するメッセージが表示されるので「はい」をクリックします。

f:id:hirosanote:20170503195757p:plain

 

「OK」をクリックし、画面を閉じます。

f:id:hirosanote:20170503200247p:plain

 

「失効した証明書」を右クリックし、「プロパティ」を選択します。
CRL公開期間を設定し、「適用」をクリックします。「OK」をクリックし画面を閉じます。

f:id:hirosanote:20170503200936p:plain

 

「失効した証明書」を選択および右クリックし、「全てのタスク」 > 「公開」をクリックします。

f:id:hirosanote:20170503202015p:plain

 

「新しいCRL」が選択されていることを確認し「OK」をクリックします。

f:id:hirosanote:20170503202149p:plain

 

C:\Windows\System32\CertSrv\CertEnrollフォルダにセキュリティ証明書と証明書失効リストファイルが作成されていることを確認します。

f:id:hirosanote:20170503202513p:plain

これでルートCAの構築が完了です。

 

 

中間CAの構築

中間CAを構築するサーバーより、スタート > すべてのプログラム > 管理ツール > サーバーマネージャー をクリックします。

f:id:hirosanote:20170503203450p:plain

f:id:hirosanote:20170503203634p:plain

f:id:hirosanote:20170503203743p:plain

f:id:hirosanote:20170503204033p:plain

f:id:hirosanote:20170503204138p:plain

f:id:hirosanote:20170503204239p:plain

f:id:hirosanote:20170503204349p:plain

f:id:hirosanote:20170503204519p:plain

f:id:hirosanote:20170503204647p:plain

 f:id:hirosanote:20170503204745p:plain

 

f:id:hirosanote:20170503204926p:plain

 ルートCAのコンピューター名を入力し、「名前の確認」をクリックします。
「OK」をクリックします。

f:id:hirosanote:20170503205221p:plain

f:id:hirosanote:20170503205741p:plain

 

f:id:hirosanote:20170503205826p:plain

f:id:hirosanote:20170503205926p:plain

 f:id:hirosanote:20170503210020p:plain

 f:id:hirosanote:20170503210114p:plain

 f:id:hirosanote:20170503210336p:plain

 

ルートCAより、中間CA用の証明書を発行します。ルートCAへ移動し、スタート > 管理ツール > 証明機関 をクリックします。

中間CAからの証明書要求に対して、証明書を発行します。

「保留中の要求」にある要求を選択し、右クリック > すべてのタスク > 発行 を実行します。

f:id:hirosanote:20170503212634p:plain

 

「発行した証明書」にある証明書を選択し、ダブルクリックします。
「詳細」タブ > 「ファイルにコピー」をクリックします。

f:id:hirosanote:20170503213307p:plain

 

ウィザードに従って、証明書をエクスポートします。

f:id:hirosanote:20170503213512p:plain

f:id:hirosanote:20170503213633p:plain

f:id:hirosanote:20170503213917p:plain

f:id:hirosanote:20170503214042p:plain

「OK」をクリックし、証明書を閉じます。

 

中間CAに戻り、「c:\Windows\System32\CertSrv\CertEnroll」を開きます。
別ウィンドウを開き「\\rootca\c$\Windows\System32\CertSrv\CertEnroll」を開きます。
ルートCAサーバーのフォルダ内にあるファイルを、中間CAサーバーへコピーします。

f:id:hirosanote:20170503215412p:plain

f:id:hirosanote:20170503215546p:plain

 

中間CAサーバーより、スタート > すべてのプログラム > 管理ツール > 証明機関 をクリックします。
CA名を選択し、右クリック > すべてのタスク > CA証明書のインストール をクリックします。

f:id:hirosanote:20170503221003p:plain

 

ファイルの選択画面で「\\rootca\c$」を入力し、ルートCAサーバーのルートフォルダに保存されている証明書ファイルを選択します。
「開く」をクリックします。

f:id:hirosanote:20170503221342p:plain

 

「OK」をクリックします。

f:id:hirosanote:20170503221456p:plain

 

中間CA名を選択し、右クリック > プロパティ > 拡張機能タブを開きます。
CRL配布ポイント(CDP)より「http://…」を選択し、以下のオプションを有効にします。

f:id:hirosanote:20170503222603p:plain

 

機関情報アクセス(AIA)「http://…」を選択し、以下のオプションを有効にします。

f:id:hirosanote:20170503222900p:plain

適用をクリックします。

f:id:hirosanote:20170503223049p:plain

「OK」をクリックし、画面を閉じます。

 

中間CA名を選択し、右クリック > 全てのタスク > サービス開始 をクリックします。

開始が失敗する場合、再度開始を実行し、中間CA名に緑色のチェックマークが付くことを確認します。

f:id:hirosanote:20170503223539p:plain

f:id:hirosanote:20170503223620p:plain

以上で中間CAサーバーの構築が完了です。

クライアントから証明書を申請する場合、証明書を発行するサイトはSSL化されている必要があります。中間CAサーバーのIISにてSSLを有効にします。

 

 

中間CAサーバーのSSL

 クライアントからクライアント証明書を申請する場合、申請画面に使用されるIISSSL化されている必要があります。

 

中間CAサーバーより スタート > すべてのプログラム > 管理ツール > インターネットインフォメーションサービス(IIS)マネージャー をクリックします。

 

コンピューター名を選択し、「サーバー証明書」をダブルクリックします。

f:id:hirosanote:20170504212026p:plain

 

「自己署名入り証明書の作成」をクリックします。

f:id:hirosanote:20170504212902p:plain

 

フレンドリ名を指定します。

f:id:hirosanote:20170523132940p:plain

 

サイト内に作成されているサイトを選択し、「バインド」をクリックします。

f:id:hirosanote:20170504215102p:plain

 

「追加」をクリックします。

f:id:hirosanote:20170504215302p:plain

 

「種類」は「https」を選択し「SSL証明書」は作成した自己署名証明書を選択します。

f:id:hirosanote:20170523133029p:plain

 

f:id:hirosanote:20170504220518p:plain

以上でSSL化が完了です。

 

 

サーバー証明書の発行

クライアントより、中間CAへIEブラウザよりアクセスし、証明書を取得します。あらかじめ、Webサーバーやネットワーク機器でCSRを作成しておきます。

 

クライアントよりIEブラウザで、中間CAへアクセスします。

https://中間CAホスト名/certsrv

 このラボの例では、"https://interca/certsrv"となります。

 

イントラネットの設定が表示された場合は、有効にします。

f:id:hirosanote:20170523125025p:plain

f:id:hirosanote:20170523125044p:plain

 

 ウィザードに従って、証明書を要求します。

f:id:hirosanote:20170506162427p:plain

f:id:hirosanote:20170506162439p:plain

f:id:hirosanote:20170506162453p:plain

CSRを貼り付けます。-----BEGIN CERTIFICATE REQUEST-----、-----END CERTIFCATE REQUEST-----も含めます。

f:id:hirosanote:20170506162506p:plain

f:id:hirosanote:20170506162519p:plain

 

中間CAサーバーより、証明書を発行します。

スタート > すべてのプログラム > 管理ツール > 証明機関
保留中の要求 > リクエストを選択し右クリック > すべてのタスク > 発行

f:id:hirosanote:20170506162652p:plain

 

発行した証明書に、証明書が存在することを確認します。

f:id:hirosanote:20170506162850p:plain

 

クライアントより証明書を受け取ります。

f:id:hirosanote:20170506170949p:plain

f:id:hirosanote:20170506171002p:plain

f:id:hirosanote:20170523135106p:plain

 

f:id:hirosanote:20170506171029p:plain

f:id:hirosanote:20170506171042p:plain

 ダウンロードしたサーバー証明書は、CSRを発行したWebサーバーやネットワーク機器にインポートします。

 

証明書チェーン(ルート証明書、中間証明書)をダウンロードしておきます。

f:id:hirosanote:20170506171139p:plain

f:id:hirosanote:20170506171151p:plain

 

 

クライアント証明書の発行

 クライアント証明書を中間CAサーバーからインストールする場合、その中間証明書、ルート証明書をがクライアントにインストールされている必要があります。インストールされていない場合、クライアント証明書を中間CAサーバーからダウンロードするときに警告メッセージが表示され、ダウンロード及びインポートできません。

クライアントに中間証明書をインストールします。

 

ダウンロードしたチェーンファイルをダブルクリックし、開きます。

中間証明書、ルート証明書をエクスポートしファイルに保存します。

f:id:hirosanote:20170506171323p:plain

f:id:hirosanote:20170506171336p:plain

f:id:hirosanote:20170506171352p:plain

f:id:hirosanote:20170506171405p:plain

f:id:hirosanote:20170506171418p:plain

 

同様の手順で、ルート証明書をエクスポートします。

 

クライアントに中間証明書をインストールします。エクスポートしたファイルの拡張子に自動的に追加された「.cer」を削除し、拡張子が「.crt」になるようにします。

中間証明書をダブルクリックし、証明書をクライアントへインストールします。

f:id:hirosanote:20170523140011p:plain

f:id:hirosanote:20170523140324p:plain

f:id:hirosanote:20170523140515p:plain

f:id:hirosanote:20170523140547p:plain

f:id:hirosanote:20170523140635p:plain

 

ルート証明書をダブルクリックし、クライアントへインストールします。

f:id:hirosanote:20170506171532p:plain

f:id:hirosanote:20170506171550p:plain

f:id:hirosanote:20170506171609p:plain

f:id:hirosanote:20170506171625p:plain

f:id:hirosanote:20170506171639p:plain

f:id:hirosanote:20170506171655p:plain

 

クライアント証明書の要求を行います。

クライアントよりIEブラウザで、中間CAへアクセスします。
https://中間CAホスト名/certsrv
このラボの場合、”https://interca/certsrv”となります。

f:id:hirosanote:20170523212133p:plain

f:id:hirosanote:20170523212318p:plain

 

f:id:hirosanote:20170523212419p:plain

 

f:id:hirosanote:20170523212849p:plain

 

中間CAサーバーより、クライアント証明書を発行します。証明機関を起動し、「保留中の要求」にあるリクエストを選択 > 右クリック > すべてのタスク > 発行 をクリックします。

f:id:hirosanote:20170523213825p:plain

 

クライアントより、クライアント証明書をインポートします。

f:id:hirosanote:20170523214347p:plain

f:id:hirosanote:20170523214442p:plain

f:id:hirosanote:20170523214530p:plain

f:id:hirosanote:20170523214614p:plain

f:id:hirosanote:20170523214701p:plain

 IEのツール > インターネットオプション > コンテンツ > 証明書 > 個人タブにクライアント証明書がインストールされていることを確認します。

 

CentOSでDockerを使用したリモートデスクトップの構築

GNOMEデスクトップがインストールされているDockerコンテナを作成し、Windows PCからRDP接続する環境を構築する手順です。

 

Dockerは、ハイパーバイザーとは異なりホストOSのカーネルを共有するため、ディスクやメモリの使用が少なくすみ、起動も速くなります。

イメージから作成したコンテナは削除でき、必要なときに新しいコンテナを再度作成することが出来ます。

よって、Windowsパソコンからインターネット接続する場合は、リモートデスクトップGNOMEデスクトップのコンテナにアクセスし、ログアウト後にコンテナを削除すれば跡形もなくなりますので、常にセキュアな環境でインターネットへアクセス出来ます。

 

環境

Fujitsu TX100s3 / 2TB HDD / 14GB Memory

CentOS7

 

1. サーバにCentOS7をインストール

CentOS7をサーバにインストールします。

 

2. ファイアウォールの停止

ファイアウォールを停止し、自動起動を無効化にします。

systemctl stop firewalld

systemctl disable firewalld

 

3. SElinuxを無効化

vi /etc/selinux/config

SELINUX=disabled

 

4. OSをアップデート

最新の状態にアップデートします。

yum update -y

 

5. リブート

リブートします。

reboot

 

6. Dockerのインストール

Dockerをインストールします。

 yum install -y docker 

 

7. サービスの起動

Dockerのサービスを起動します。

sudo systemctl start docker

sudo systemctl enable docker

 

8. CentOS7のDockerイメージの取得

以下のサイトより、イメージ名を確認します。

https://hub.docker.com/_/centos/

CentOS7の最新のタグ名は"latest"となっていますので、これを使用します。

f:id:hirosanote:20170405101052p:plain

  docker pull centos:latest

 取得したイメージを確認します。

docker images

 

9. GNOMEデスクトップのインストール

取得したイメージに、GNOMEデスクトップをインストールします。

コンテナを起動します。

docker run --privileged -d --name centos7-01 centos /sbin/init

docker exec -it centos7-01 /bin/bash

 起動すると、コンテナIDを含んだコンテナのプロンプトになります。

[root@c551b58042b4 /]#

コンテナにGNOMEデスクトップをインストールします。

 yum groupinstall -y "GNOME Desktop"

 

10. xrdpのインストール

Windows PCからRDP接続するために、xrdpをインストールします。

yum install -y epel-release

yum install -y xrdp

yum install -y tigervnc-server

自動起動を有効化にします。

systemctl enable xrdp.service

 

11. rootユーザーのパスワード設定

rootユーザーのパスワードを設定します。

passwd

12. コンテナを終了

exitコマンドで、終了します。

exit

 

13. コンテナのイメージ化

コンテナIDを確認します。

docker ps -a

確認したコンテナIDを使用し、イメージ化します。

docker commit a58466ce4e69 centos:desktop

 

14. イメージからコンテナを起動

イメージ化したファイルからコンテナを起動します。Windows RDPクライアントから接続するために、ポートフォワードの指定を行います。

docker run --name rdp01 -d -p 13389:3389 centos:desktop

 

 15. Windows RDPクライアントから接続

ポートフォワードで指定したポート番号とDockerが動作しているサーバのIP指定し、接続します。

ユーザーはrootを使用します。

f:id:hirosanote:20170405205041p:plain

 パスワードを入力します。

f:id:hirosanote:20170405205213p:plain

 

f:id:hirosanote:20170405205341p:plain

 

GNOMEデスクトップよりFireFoxを起動し、インターネットへアクセス出来ました。

日本語入力が出来なかったので、これは今後の課題として調査してみます。

 

 

 

 

 

 

 

Apple ATSとロードバランサー

結局延期になってしまいましたが、2016年末までにApple ATS対応のために、SSL証明書サイファースイートの設定等の作業を行う必要がありました。

SSL/TLSの終端をロードバランサ(負荷分散装置、SSL/TLSアプライアンス)を行っている場合、ATSが推奨するサイファースイートを使用する必要があります。各ロードバランサーにて、そのサイファースイートのサポート状況や考慮すべき事項について調査してみました。

 

1. サイファースイート

Apple ATSが推奨するcipher suiteは、以下です。

TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA

 当たり前ですが、上記のサイファースイートをサポートするロードバランサーを使用する必要があります。どのベンダーがサポートしているのかについては、2016年11月8日にIPAより公開された「SSL/TLSアプライアンス製品の暗号設定方法等の調査」報告書から確認することが出来ます。その報告書から○×表を作成してみました。

f:id:hirosanote:20170109103144p:plain

表を作成して初めて気づいたのですが、日本製のロードバランサは対応していないことが分かりました。ECDHEはHTTP/2でも必須となっているのと、今後のTLS1.3対応のためにも、ECDHEサイファースイートをサポートしている機器を選択すべきです。

 

 

2. ECDHEサイファースイートと証明書

証明書は、以下のものを使用する必要があります。

TLS_ECDHE_ECDSA_xxx = ECC証明書

TLS_ECDHE_RSA_xxx = RSA証明書

多くのサイトで使用されているシマンテック社(旧ベリサイン)からECC証明書を購入する場合、RSA, ECCの両方を購入できるメニューしかないため、金額が高くなります。

RSAのみの証明書 / セキュアサーバID / 81,000円 (有効期間 1年)

RSA/ECCの証明書/ グローバルサーバID / 138,000円 (有効期間 1年)

 

 

3. ECDHEサイファースイートとSSLアクセラレーター

SSLアクセラレーター搭載とうたっているほとんどのロードバランサーは、SSLの処理を行う専用のSSLアクセラレーターチップを搭載しています。これにより、SSL処理によって機器本体が持つ汎用CPUに負荷をかけず、専用のCPUが処理することによりパフォーマンスが向上します。

SSLアクセラレーターチップは、特定のベンダーのある型番のみがECDHEサイファースイートを高速に処理できます。それ以外のモデルは高速に処理できないため、ロードバランサーの汎用CPUで処理しなければならず、ロードバランサー本体のCPU負荷率を高めることにより、サーバ負荷分散やその他の機能のパフォーマンスに影響が出る可能性があります。

 

 

 4. ECDHEサイファースイートとパフォーマンス

ECDHEのサイファースイートを使用した場合、どのくらいパフォーマンスの変化があるのかテストしてみました。

サーバ:Windows2008R2 RSA2048bit 自己証明書 / VMware ESXi上に構築

クライアント : Apache Bench on Ubuntu16 / VMware ESXi上に構築

VMware ESXiが動作しているサーバのCPU : Intel Xeon E3-1220v2@3.10GHz

構成:サーバ --- 1G Switch --- クライアント

 

Apache benchはHTTP1.0を使用するため、SSLコネクションはGETリクエスト毎に切断されます。よってSSL新規接続パフォーマンステストに近いテストが出来ます。

サイファースイート毎にWindows2008サーバのタスクマネージャーより確認出来るCPU負荷率が95% ~ 100%になるようにしました。ファイルサイズは、IISのデフォルトページを使用し、689 bytesです。

 

テスト結果:

ab -n 5000 -c 15 https://10.10.1.11/

SSL/TLS Protocol:       TLSv1,AES128-SHA,2048,128

Requests per second:    445.65 [#/sec] (mean)

 

ab -n 5000 -c 8 https://10.10.1.10/

SSL/TLS Protocol:       TLSv1,ECDHE-RSA-AES128-SHA,2048,128

Requests per second:    276.14 [#/sec] (mean)

 

Windows2008サーバがCPU100%で処理できる新規SSLリクエスト数は以下となり、ECDHEサイファースイートを使用すると約38%悪化します。

AES128-SHA                        : 445

ECDHE-RSA-AES128-SHA : 276

 

 

5. まとめ

5-1. ECDHEサイファースイートをサポートしていないロードバランサーがある。この場合、今後の対応状況によってはリプレイスが必要。

 

5-2. ECDHEサイファイースイートをサポートしているロードバランサーでも、ECDHEサイファースイートをSSLアクセラレーターチップで処理しないモデルがある。この場合、汎用CPUで処理することになり、処理できる新規SSLリクエスト数が低下し、CPU負荷率が高くなる。

 

5-3. 5-2の回避策として、SSLアクセラレーターで処理するサイファースイートを優先に使用するよう設定し、ECDHEしか使えない通信のみ、汎用CPUで処理するようにする。

 

5-4. 仮想版環境でロードバランサーを使用する場合、CPUもしくはCPUコアを複数割り当て、SSL処理に対するCPU負荷を下げる。

 

Apple ATS (App Transport Security)の対応は、ロードバランサーにかかる負荷も考慮する必要があります。

Apple ATSの目的はHTTP通信をやめることも目的となっており、SSLコネクションが増加することになります。ロードバランサーのカタログ値にある最大同時接続数の他に、SSL最大同時接続数が別に存在するものがあるため、パフォーマンス値の他にSSL通信のための最大同時接続数も確認する必要があります。

 

4kモニター LG UltraFine 4K DisplayとMacbook 12インチ

Apple LG UltraFine 4K DisplayをMacbook 12インチで接続すると、解像度、リフレッシュレートがどうなるのか、いろいろ調べてみましたがはっきりとは分かりませんでした。

実際に購入し、接続してみましたのでそのレビューです。

MacBook (Retina, 12-inch, Early 2015) / OS : Sierra
LG UltraFine 4K Display
同梱のUSB-Cケーブルで接続


認識されたデフォルトは、以下です。
解像度 : 2048 x 1152
リフレッシュレート : 48 Hz
接続のタイプ : DisplayPort

f:id:hirosanote:20161130151127p:plain

 

変更可能な最大解像度は、2560 x 1440です。

ディスプレイポートアダプタを付けると結果が変わるかもしれませんが、電源供給が出来なくなると思います。
MacBook (12-inch, Early 2015) <-- USB-C --> LG UltraFine 4K Display
2048 x 1152 @ 48Hz
MacBook (12-inch, Early 2015) <-- DisplayPortアダプタ --> 4K Display
?????

 

解像度2560 x 1440の場合は、かくかくした表示となり動作も重たくなりますが、2048 x 1152の場合は問題なくなめらかな表示になります。

スピーカーは、重低音がきいて非常によい音です。

モニターの購入を検討されている方の参考になれば、幸いです。

 

Leap Indicatorをセットしたパケットを作成する方法

うるう秒のテストのために、Leap Indicatorをセットしたパケットを作成する方法です。

以下のページを参考にしました。

https://support.ntp.org/bin/view/Dev/LeapSecondTest

 

使用したNTP Server用OSのインストールイメージ
CentOS-6.5-x86_64-minimal.iso

 

手順
1.CentOS 6.5をインストールします。

 

2.FireWallを停止します。
/etc/rc.d/init.d/iptables stop
chkconfig iptables off

 

3.SE linuxを停止します。
vi /etc/selinux/config
SELINUX=disabled

 

4.NTPサービスをインストールします。
yum install ntp

 

5.閏秒のファイルを保存します。
mkdir /var/ntp
cd /var/ntp
yum install wget
wget https://www.ietf.org/timezones/data/leap-seconds.list

 

6.ntp.confを編集します。
vi /etc/ntp.conf
server設定をコメントアウトします。
#server 0.centos.pool.ntp.org iburst
#server 1.centos.pool.ntp.org iburst
#server 2.centos.pool.ntp.org iburst
#server 3.centos.pool.ntp.org iburst
以下の設定を追加します。"127.127.1.0"は、上位から時間を取得せず、ローカルNTPサーバとして動作します。
server 127.127.1.0
fudge 127.127.1.0 stratum 10
leapfile /var/ntp/leap-seconds.list

 

7.CentOSの時刻を変更します。
date -s "2016-12-31 23:30"

 

8.NTPサービスを再起動します。
service ntpd restart

 

9.うるう秒を認識していることを確認します。(leap=01)
ntpq -nc rl
associd=0 status=4519 leap_add_sec, sync_local, 1 event, leap_armed,
version="ntpd 4.2.6p5@1.2349-o Tue May 31 10:09:21 UTC 2016 (1)",
processor="x86_64", system="Linux/2.6.32-431.el6.x86_64", leap=01,
stratum=11, precision=-24, rootdelay=0.000, rootdisp=7948.115,
refid=LOCAL(0), reftime=dc123f77.5fcd7a5d Sat, Dec 31 2016 23:30:15.374,
clock=dc123fa1.392bdd78 Sat, Dec 31 2016 23:30:57.223, peer=5112, tc=6,
mintc=3, offset=0.000, frequency=0.000, sys_jitter=0.000,
clk_jitter=0.000, clk_wander=0.000, tai=36, leapsec=201701010000,
expire=201706280000

 

10.NTPクライアントからパケットキャプチャを行いLeap Indicatorがセットされていることを確認します。

f:id:hirosanote:20161125170706p:plain