第 128 回 東京エリア Debian 勉強会資料.Deb
銀河系唯一のDebian専門誌
2015 年 7 月 25 日

す特anibe
D
集：

で試を2/
P
HTT

デビアン勉強会

目次
事前課題

2

1.1

野島 . . . . . . . . . . . . .

2

1.2

issei . . . . . . . . . . . . .

2

1.3

wskoka . . . . . . . . . . .

2

1.4

dictoss. . . . . . . . . . .

2

1.5

nametake . . . . . . . . . .

2

1.6

yy y ja jp . . . . . . . . . .

2

1.7

koedoyoshida . . . . . . . .

212

Debian Trivia Quiz

3

最近の Debian 関連のミーテ

3.1

4

第 127 回東京エリア Debian
勉強会 . . . . . . . . . . . .

4

Debian で HTTP/2 を試す

54.1

はじめに . . . . . . . . . . .

54.2

ところで HTTP/2って？ . .

54

1

HTTP/2 の特徴 . . . . . . .

5

4.4

HTTP/2 さらに詳しく . . .

5

4.5

HTTP/2 の良いデモサイト .

6

4.6

HTTP/2 の通信開始の仕方 .

64.7

Debian で HTTP/2 をお手軽に楽しむ . . . . . . . . . . .

64.8

クライアント側準備 . . . . .

64.9

サーバ側準備 . . . . . . . . .

7

4.10 アクセスしてみる . . . . . .

8

4.11 proxy サーバで既存サイトの3

ィング報告

4.3

HTTP/2 化をやってみる . .

8

4.12 おわりに . . . . . . . . . . .

9

会場での無線 LAN のつなぎ方

10

5.1

はじめに . . . . . . . . . . .

10

5.2

wpasupplicant

5及び/etc/network/interfaces を利用の場合 . . . . . . . . . .

5.3

10

そ の 他 の 無 線 LAN 用 パッケージを利用の場合 . . . . .

10

第 128 回 東京エリア Debian 勉強会 2015 年 7 月

1 事前課題
野島 貴英

今回の事前課題は以下です:

1. 本日、何の作業をやるかを宣言ください。
2. (オプション) どこで今回の勉強会の開催を知りましたか？
3. (オプション) 何について聞きたい／参加者と話をしたいですか？
この課題に対して提出いただいた内容は以下です。
2. (オプション)Q. どこで今回の勉強会の開催を知りまし

1.1

たか？

野島

A. Twitter (debianjp)

1. Q.hack time に何をしますか？
A. 性懲りもなく Nook HD+ の Debian 化。
2. (オプション)Q. 何について聞きたい／参加者と話をし1.5たいですか？

1. Q.hack time に何をしますか？
A. Debian 環境構築
2. (オプション)Q. どこで今回の勉強会の開催を知りましA. 夏休みに Debian で何をする！
？

1.2

たか？

issei

A. その他

1. Q.hack time に何をしますか？
A. Hurd をインストール

1.3

nametake

1.6 yy y ja jp
1. Q.hack time に何をしますか？
A. DDTSS
2. (オプション)Q. 何について聞きたい／参加者と話をしwskoka
1. Q.hack time に何をしますか？
A. tilegx への移植
2. (オプション)Q. どこで今回の勉強会の開催を知りましたいですか？

A. DDTSSたか？

A. その他

1.4

1.7 koedoyoshida
1. Q.hack time に何をしますか？
A. あんどきゅめんてっどでびあん編集
2. (オプション)Q. どこで今回の勉強会の開催を知りましdictoss
1. Q.hack time に何をしますか？
A. jessie で動作確認用の lxc コンテナを作って動かしたか？

A. その他てみる2

第 128 回 東京エリア Debian 勉強会 2015 年 7 月

2 Debian Trivia Quiz
野島 貴英

Debian の昨今の話題についての Quiz です。
今回の出題範囲は debian-devel-announce@lists.debian.org や debian-news@lists.debian.org に投稿された内容などからです。
問題 1. 6/22 にて、backport のチームが、特定の条件を満たすパッケージをごっそり消したのは、どの back-

問題 4. DPL の Neil MacGovern が reddit に開いた「DPL だけど、何か質問ある？」というスレで、DPL にports?

とっても凄いと思うディストリビューションとしてあげ□ A squeeze-backports

られてたものはどれ？

□ B wheezy-backports□ A 当然 Debianっしょ！

□ C jessie-backports□ B ArchLinux問題 2. 7/7 にて、sid では、特定バージョンの GCC とlibstdc++ でコンパイル・動作出来るようにして欲しい旨のアナウンスが流れました。どの組み合わせ？

□ C ubuntu
問題 5. 7/20 に dgit の新しいバージョンのものがリリースされました。どのバージョンになった？

□ A gcc 6/libstdc++6□ A 0.1□ B gcc 4/libstdc++5□ B 0.3□ C gcc 5/libstdc++6□ C 1.0

問題 3. 7/8 にて、複数の upstream から提供されているlibav*群のライブラリについて、提供元の upstream を変更するとの連絡がありました。どの upstream に変更となったのでしょうか？

問題 6. 7/21 に Debian Installer Stretch Alpha 1 がリリースされました。変更点は以下のどれ？
□ A UEFI ブートを搭載□ B ネットワーク IF が MAC アドレスになる□ A FFmpeg□ C インストール時の UI が text モードから graphical□ B libav.orgモードになった□ C VideoLAN3

第 128 回 東京エリア Debian 勉強会 2015 年 7 月

3 最近の Debian 関連のミーティング報告野島 貴英

3.1 第 127 回東京エリア Debian 勉強会• 場所はスクウェア・エニックスさんのセミナルームをお借りしての開催でした。
• 参加者は 6 名でした。
• セミナ内容は野島さんによる「Debian と脆弱性対応のあれこれ」でした。
• 残りの時間で hack time を行い、成果発表をしました。
• 宴会の代わりに、「まいどおおきに食堂」で夕食会をやりました。
セミナは野島さんより、Debian と脆弱性対応について諸々発表がありました。内容としては、すでに公開されている昨今の件のサマリとなりましたが、会場ではいろいろ議論や、追加の情報をいただくことが出来非常に有意義でした。
元々、本発表は別で開かれたクローズドなセキュリティの勉強会で発表する用に作ったものではありますが、改めてまとめて見るといろいろ気づく事があり、新鮮でした。debian のセキュリティチームから CVE、他のディストリビューションまで OSS の脆弱性の連絡体制ができているのは、さすが沢山の人に支えられているディストリビューションなだけあると思います。

4

第 128 回 東京エリア Debian 勉強会 2015 年 7 月

4 Debian で HTTP/2 を試す
野島 貴英

4.1 はじめに2015/5 に HTTP/2 が RFC7540 として遂に文章化されました。また、最近でも、ほうぼうで WEB ページあるいはサービスについて、HTTP/2 の対応度合いについて聞かれるようになってきました*1 。
ここでは、Debian で、HTTP/2 の環境をちょっと作って試してみました。

4.2 ところで HTTP/2って？
WEB ブラウザがサーバと通信する際に、HTTP/1.x(x は 0,1 の数字）が長年 (HTTP/1.1 は 15 年以上も！) 使われています。しかしながら、昨今の WEB ページは、HTTP/1.x が策定された頃に比べて格段にリッチなページとなっており、１ページを表示する為に必要な通信量は格段に増えています。HTTP/1.x のままでは、WEB の通信が非効率となってしまいました。

HTTP/1.1 の欠点を克服するために、google 社で SPDY が開発され、さらに SPDY を参考にして、沢山の人の貢献により、次世代の HTTP 通信規格が策定されました。これが HTTP/2 となります。

4.3 HTTP/2 の特徴
HTTP/2 の特徴としては以下の通りです [1]。
• テキスト電文ベースではなく、バイナリ電文を使います。
• １本の TCP コネクション上で、複数のリクエスト・レスポンスを多重化してやりとりできるように設計されています。

• リクエスト・レスポンスに使われるヘッダ情報を無駄の無い電文にし、さらに圧縮し、より効率的に通信できるようにしています。実はモバイル端末などでは、パケットの往復にかかる時間が長いので、リクエスト・レスポンスの開始１パケット目にできるだけ情報を詰め込むことは通信時間を縮めるのに非常に有効です。

• １つのリクエストで、ブラウザが続けて必要とするデータをまとめてレスポンスできる機能が入りました（サーバプッシュという機能。)[2]4.4 HTTP/2 さらに詳しく
これ以上 HTTP/2 プロトコルについて、詳しく調べたい人は、*1 某有名携帯電話イベントで HTTP/2 をアプリ開発者に全力推奨している件を見てマヂ慌てたりしたのは秘密...

5• HTTP/2 本家
https://http2.github.io/• 高速・大規模ネットワーク時代に向けて改良された HTTP/2 プロトコル http://www.atmarkit.co.jp/ait/articles/1409/18/news135.html• twitter の#http2study タグ• http/2 Advent Calender 2014 http://qiita.com/advent-calendar/2014/http2などなど、多数の良い解説がありますので是非ご覧ください。これ以上細かい HTTP/2 のプロトコル仕様についてはここでは割愛します。

4.5 HTTP/2 の良いデモサイト
論より証拠で、HTTP/2 が優れているか？を試せる非常に良いデモサイトがあります。是非お試し下さい。なお、

Debian sid の chromium/iceweasel で動作確認を確認できています。

https://http2.golang.org/gophertiles4.6 HTTP/2 の通信開始の仕方
HTTP/2 を使ってブラウザからアクセスするとき、現状、TLS の ALPN/NPN で HTTP/2 を指定して、やりとりを開始するやり方しか現行ブラウザには実装されていません。というわけで、事実上、HTTP/2 のサイトは、全部フル SSL 化されている状況となります [3]。
一方、TLS を使わない場合、HTTP/1.1 のリクエストヘッダに特別なヘッダを混ぜることにより、HTTP/2 へアップグレードして、以降 HTTP/2 でやり取りをするという手法があります。しかしながら、こちらはブラウザが対応していません [4]。

4.7 Debian で HTTP/2 をお手軽に楽しむ
HTTP/2 を Debian でお手軽に楽しむには以下の環境を用意します。
• クライアント側準備
chromium か、iceweasel• サーバー側準備
nghttp2,Apache Traﬃc Server 等など

4.8 クライアント側準備
以下に chromium と、iceweasel について、HTTP/2 用を評価するのに便利なセットアップについて載せます。

4.8.1 chromium
chromium を使う場合は次の通りです。まず、Debian に chromium ブラウザを導入します。
$ sudo apt-get install chromium

次に、chromium を起動して左隅みに現れる「Apps」→「Web Store」をアクセスし、「HTTP/2 and SPDYindicator」を導入してください。
以上の操作を行った chromium で HTTP/2 対応のサイトにアクセスすると、青い稲妻マークがアドレスバーに6表示されるようになります。

図1

chromium で HTTP/2 のサイトにアクセス

4.8.2 iceweasel
iceweasel を使う場合は次の通りです。まず、iceweasel と、xul-ext-spdy-indicator を Debian に導入します。
$ sudo apt-get install iceweasel xul-ext-spdy-indicator

以上の操作を行った iceweasel で HTTP/2 対応のサイトにアクセスすると、青い稲妻マークがアドレスバーに表示されるようになります。

図2

iceweasel で HTTP/2 のサイトにアクセス

4.9 サーバ側準備
いよいよ Debian にサーバ側を準備します。

4.9.1 HTTP/2 に対応しているサーバ
どんなサーバが HTTP/2 に対応しているかは、

Implementations
https://github.com/http2/http2-spec/wiki/Implementations
を参照ください。

4.9.2 nghttp2 パッケージ
Debian sid にて、HTTP/2 対応サーバのパッケージとして、nghttp2 があります。ここではこちらを使ってサーバを作ることにします。
$ sudo apt-get install nghttp2 ssl-cert

なお、閲覧可能なコンテンツとして、groﬀ の付属 html マニュアルをドキュメントルートにした HTTP/2 サーバ

7

を立ててみます。
なお、*-snakeoil.*というファイルは、ssl-crt パッケージを導入すると勝手に作成される自己証明書ファイルとなります。
$ sudo nghttpd -D -d /usr/share/doc/groff-base/html/ \443 /etc/ssl/private/ssl-cert-snakeoil.key \/etc/ssl/certs/ssl-cert-snakeoil.pem

4.10 アクセスしてみる
ブラウザで、アクセスしてみます。
アクセス先：https://localhost/pic-6.html

chromium/iceweasel 共に無事に HTTP/2 対応を示す青い稲妻マークが URL 表示部分に付いていることが判ります。

4.11 proxy サーバで既存サイトの HTTP/2 化をやってみる
さて、nghttpd は軽量の HTTP/2 対応 WEB サーバではあるのですが、やっぱり apache のような高機能なWEB サーバを使って HTTP/2 を実現したいというニーズがあると思います。（例：php のサイトを HTTP/2 化したい等）
今度は、apache をバックエンドにして、nghttp2 付属の proxy サーバを使い、サイトの HTTP/2 化を行ってみます。
今回用意しようとしている環境の概念図を載せます。

図3

proxy サーバで HTTP/2 化を行う環境の概念図

proxy と apache の環境を Debian に用意します。手順は次の通りです。
8

Step 1. sudo apt-get install apache2 nghttp2 ssl-cert
Step 2. sudo a2enmod userdir
Step 3. cd /home/yours/; mkdir public html
Step 4. cd public html; cp -a /usr/share/doc/groﬀ-base/html .
Step 5. sudo vi /etc/nghttpx/nghttpx.conf----nghttpx.conf の中身ここから---frontend=0.0.0.0,443
backend=127.0.0.1,80
private-key-file=/etc/ssl/private/ssl-cert-snakeoil.key
certificate-file=/etc/ssl/certs/ssl-cert-snakeoil.pem
workers=1----ここまで----Step 6. sudo systemctl start apache2.service
Step 7. sudo nghttpx -D –conf /etc/nghttpx/nghttpx.conf
以上できましたら、いよいよ先に用意したブラウザからアクセスしてみます。無事 apache 側に用意したサイトが、HTTP/2 対応できている事がわかります。
アクセス先：http://localhost/~yours/html/pic.html

4.12 おわりにHTTP/2 も Debian を使えば簡単に実験できます。また、沢山のファイルで構成されるページがあると、HTTP/2は非常に威力を発揮します。この機会に HTTP/2 を是非お試し頂き、その威力を確認してみてください。

参考文献[1] HTTP/2 Frequently Asked Questions,https://http2.github.io/faq/[2] 初めての HTTP/2 サーバプッシュ,http://labs.gree.jp/blog/2014/12/11987/[3] wikipedia HTTP/2 の章,https://ja.wikipedia.org/wiki/HTTP/2[4] HTTP/2 プ ロ ト コ ル ネ ゴ シ エ ー ション 方 法 と ATS で の 実 装,http://techblog.yahoo.co.jp/
infrastructure/http2/ats_http2_pn/

9

第 128 回 東京エリア Debian 勉強会 2015 年 7 月

5 会場での無線 LAN のつなぎ方
野島 貴英,Roger

5.1 はじめに今回試験として、会場側でフィルタ無しのグローバル回線を用意しました。ただ、会場側のセキュリティポリシーにより、wpa-psk AES hidden SSID という方式での提供となります。
以下に Debian マシンでの接続方法を記載します。
また、自分の環境では違うやり方でつながったという方は、野島まで教えて下さい。こちらでもノウハウとして溜めていく予定です。

5.2 wpasupplicant 及び/etc/network/interfaces を利用の場合
もっとも良いマニュアルは、/usr/share/doc/wpasupplicant/README.Debian.gz となります。困った場合はこちらも合わせてご参照下さい。
以下に/etc/network/interfaces の定義について会場の例を記載します。
$ sudo vi /etc/network/interfaces-----以下のエントリがなければ追記ここから---------iface wlan0_debian inet dhcp
wpa-conf /etc/wpa_supplicant/wpa_supplicant_debian.conf-----以下のエントリがなければ追記ここまで---------$ sudo vi /etc/wpa_supplicant/wpa_supplicant_debian.conf-----以下のエントリを追記ここから---------network={
ssid=<<会場の SSID>>
psk=<<会場のパスワード>>
scan_ssid=1}-----以下のエントリを追記ここまで---------$ sudo chmod 600 /etc/wpa_supplicant/wpa_supplicant_debian.conf$ sudo ifup wlan0=wlan0_debian

ま た 、ハ マって し まった 時 の デ バッグ 方 法 は 、/usr/share/doc/wpasupplicant/README.Debian.gz 中 の”4.

Trubleshooting” の章が便利です。

5.3 その他の無線 LAN 用パッケージを利用の場合すみません、自分が情報を持たないため、現場で教えて下さい。

10

Debian 勉強会資料
2015 年 7 月 25 日
初版第 1 刷発行
東京エリア Debian 勉強会 （編集・印刷・発行）

11