speedtest-cliでターミナルから回線速度を計測する

はじめに

インターネット接続の帯域幅を speedtest.net で計測するためのコマンドラインインターフェース。 Python 2.4 - 3.3の環境で使えます。

sivel/speedtest-cli · GitHub

導入

CentOS 5.7 の場合の手順です。環境を汚さないようにvirtualenvで入れています。
ディストリビューションによってはパッケージで提供されていることもあるようです。

(入っていなければ)virtualenvをいれる

$ sudo yum install python26-virtualenv

virtualenvで仮想環境をつくる

$ sudo virtualenv-2.6 ./speedtest-cli
New python executable in ./speedtest-cli/bin/python2.6
Also creating executable in ./speedtest-cli/bin/python
Installing setuptools............done.

pipでspeedtest-cliを導入

$ . ./speedtest-cli/bin/activate
(speedtest-cli)$ pip install speedtest-cli
(speedtest-cli)$ deactivate
$

使い方

このように上り/下りの回線速度が計測できます。

$ ./speedtest-cli/bin/speedtest-cli
Retrieving speedtest.net configuration...
Retrieving speedtest.net server list...
Testing from YOUR-ISP (XXX.XXX.XXX.XXX)...
Selecting best server based on ping...
Hosted by World\'s Fastest Indian (Tokyo) [1.39 km]: 71.685 ms
Testing download speed........................................
Download: 4.42 Mbit/s
Testing upload speed..................................................
Upload: 3.84 Mbit/s

SNIを使ってHTTPSでも名前ベースのバーチャルホストを実現する

この Server Name Indication - Wikipedia からの引用ですべて伝わりそうですが。

Server Name Indication (SNI, サーバー ネーム インディケーション, サーバ名表示)は、SSL/TLSの拡張仕様の一つである。SSLハンドシェイク時にクライアントがアクセスしたいホスト名を伝えることで、サーバ側がグローバルIPごとではなくホスト名によって異なる証明書を使い分けることを可能にする。SNIは特に、HTTP 1.1名前ベースバーチャルホストHTTPSに対応させるために使われる。SNIが働くにはWebサーバ側とブラウザ側両面の対応が必要である。SNIを実装しないブラウザでは全てのホスト名で同じサーバ証明書が使われるため、警告が表示されることがある。2012年時点において、SNIを実装しないブラウザはまだ数多く残っている。

 

HTTPSサイトを運用する場合は原則、1FQDNごとに1IPアドレスを割り当てますが、
開発環境がVPS1台・IPアドレス1点のみの構成だったとしても、
複数のHTTPSサイトを置けるということです(別々の証明書で設定可能)。

Apache HTTP Serverは2.2.12以降で対応していて、RHEL系だと6.0以降で使えます。

Windows XP上のIEをはじめとして非対応のクライアントも少なくありませんが、
ステージングサイト&プロダクションサイトの構成のときには
デフォルトのVirtualHostがプロダクションになるよう設定する、など少し配慮すれば
それほど障害にならずに利用できる場面があるのではないでしょうか。

Apache HTTP Server で要注意のディレクティブは SSLStrictSNIVHostCheck です。
SNI非対応クライアントからのリクエストを受けた時の挙動を規定するもので、
off : デフォルトのVirtualHostで応答 / on : 403 Forbidden を返す
となります。

プロダクション環境での利用は[Apache] SNIの落とし穴 » 株式会社パラファミリーで言及されているように
クローラーがSNI非対応である状況への配慮が必要です。

"googlebot server name indication""bingbot server name indication"で検索すると、
Googlebotは対応、Bingbotは非対応のようです。
(両検索サイトでの TLS SNI Test Site: *.sni.velox.ch のキャッシュから)

参考:NameBasedSSLVHostsWithSNI - Httpd Wiki