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

JANOG38に参加してきた #JANOG

JANOG38とは

2016年7月6日〜8日に沖縄で開催されたネットワークオペレーションに関するミーティングに参加してきた. 詳しくは,公式ページ を参照されたし.

また,いくつかのセッションではストリーミングや資料が公開されているため,興味のある方は以下のリンクを参照するといい.

https://www.janog.gr.jp/meeting/janog38/programwww.janog.gr.jp

会議中は,セッションの内容等を何人かの人がTsudaってくれており,それもかなり参考になる.

全体を通して

学生という身分を言い訳にしたくはないが,まだまだ未勉強なところがあり,セッションの話についていけない部分が多々あったことが非常に辛かった.そして,体調管理を怠った結果,会議中にウトウトして集中出来ない場面があったのも反省すべき点である.

しかし,総じて面白かった.セッションも分からない部分はあったもののかなり刺激された.また企業ブースに周り,学生という身分を利用して不躾な質問をし自分の知識の糧にするのも,今思えば自己満足にはなるが勉強になった.自分は来年から東京勤務になるので,移住先の相談等に乗ってもらったりもしたw そして企業ブースでは,興味深い話を聞くと同時に色々なノベルティグッズを貰うことが出来た.学生特権恐ろしや.

セッション

かなり多くのセッションがあり,その中でも興味深い話がいくつかあった.

一日目のBoFでは,サイバーセキュリティがテーマのものに参加したが,ここではKDDIさんがホスティングするCMS(といっても例によってWordPressが大半だが)の脆弱性をつかれた攻撃やその対応について話があった.また関西の学生としては馴染み深い神戸デジタルラボ(KDL)の方によるWP Potalの話もあった.しかし恐らくBoFの内容はオフレコなので,ここでは述べられない.

二日目にあったモバイIPv6の話(モバイルにおけるIPv6の舞台裏と将来に向けて ~総務省IPv6研究会を通じて~)ではモバイルキャリアの3社が登壇し,モバイルにおけるIPv6の大変興味深い話をしてくださったが,このセッションもオフレコ指定されていたため,詳細をここで述べることは出来ない.ただかなり面白かった(ここまでは言っていいだろう). また「ゼロレーティングを支える技術とローカルレギュレーション」は,技術的な話と倫理的,法的な話が混じっており大変興味深かった.普段は技術的な話にばかり傾倒し,法的な話等を学ぶ機会がないので,こういった場で知識を蓄えられるのもかなり良かった.

三日目は,午後に行われた「IoT領域におけるディープラーニングの実践と課題~ネットワークの知能化を目指して~」という発表が,あまりネットワークネットワークしてなくて自分にも理解出来た.話の趣旨は,ディープラーニングで学習した複数のAIが,どのようにネットワークを介して情報をやり取りするかといったネットワークデザインについての話だったと思うが,議論ではネットワークデザインにディープラーニングが応用できないかという話も出てきて,実際にネットワークフロー等にDLを応用した研究がある等の話が聞けた.ただあまり多くはないらしい.実際,ネットワークデザインにDLが応用出来るとしても,何をどうパラメータとして設定して学習していけばいいのか,ネットワークにまだまだ疎い自分には分からない…

また三日目はスペシャルな出来事もあった.研究室の後輩のツテでホストであるOKITさんの社員さんを紹介して頂き,そしてJANOG38を支える会場ネットワークの裏側(NOCとは別)を特別に見せて頂けた(逆に通常のNOC部屋は見れていないが…w).ファイバーが伸びていたり,良く分からないCiscoの機器が置いてあったりした.Ciscoの良く分からない機器以外だと,Ciscoのルータ1台とスイッチが2台ぐらいあったかなと思う.そこから,バックボーンのサーバ類や,かなり多くの無線機器に線が伸びているようだ.実際に無線機器はかなり多く存在した!恐らくCiscoのルータに繋がった5Gや2.4Gの無線LANの他に,ソフトウェアルータであるCSRやvyosに繋がった無線APもあった.これが裏でどのように繋がっているかが気になるところである.

三日間を通して,普通のセッションもかなり面白かったがそれ以上にオフレコ話が面白く,こういうのを聞くためにも会場に出向かないといけないなあと改めて感じた.

企業ブース

恥ずかしながら知らない会社が多々あり,ネットワーク関連の会社はこんなにもあるのだと驚嘆した.企業ブースの多くは,対企業用の製品紹介のためにあると思われるため,学生という身分では話しかけづらいという面が大いにあった.しかし,話を聞きたそうにブース前でモジモジしていると,企業のかたが積極的に声をかけてくれたため,色々な話を聞いたり話したりすることが出来た.スイッチングハブファイアウォール,DDoS対策,IoT,ドメイン,SDN,東京の賃貸事情wといった幅広い話を聞くことができ,こういった面においてもJANOGに参加して良かったと思った.

企業ブースを回るメリットの一つにノベルティグッズが貰えることもあるw 今回もかなり多くのノベルティグッズを頂け,感謝の気持ちが極まっている. f:id:asakasa:20160710030401j:plain

最後に

JANOGでは,いくつかのセッションをストリーミング配信しているため,興味のある人は是非見てみるべきだろうと思う.資料だけ読んでも勉強にはなるが,一番の肝は質疑応答タイムなので,その部分だけでも視聴すると良いと思う(資料は読んだうえで).しかし,一番のオススメは現地参加である.オフレコの話がいっぱい聞けるし,ノベルティグッズもいっぱい貰えるし,JANOGが地方で行われることがあるので終われば観光も出来る.今回は沖縄で開催されたため,JANOG終了後の今,かなり沖縄を満喫している.沖縄最高だ.良さみが深い.

IoT? CTFに参加してきた話

先週の土曜日に,神戸デジタルラボで開催されたセキュリティコンテスト (公式ページ)に参加してきた. NDAにより問題や構成については詳しく語れないため,感想程度の些細なものを残しておこうと思う.

f:id:asakasa:20160621153726j:plain

今回のコンテストは,主にIoTに関連するCTFのようだったが,実際にIoTっぽいのは数問だったように感じた.それか,僕のIoTへの認識がずれているようだ.問題数は多くなかったが,僕にとってはちょうどよいぐらいの難易度だったので(解けるとは言ってない),全体的にかなり楽しめた.また,オンサイト型のコンテストだったので,緊張や興奮といった空気感がリアルに感じられて,その点も非常に楽しかった.しかし結果は,残り30分ぐらいで大幅に巻き返され4位で終わってしまった… 廃校も阻止出来なければ入賞も出来ず,とても悔しい気持ちで終わった.

コンテスト終わりは,沖縄料理屋で懇親会があった.その場で,問題について色々と聞いたり話し合ったりするのだけど,話を聞く度に自分の無知や力不足を痛感する…もっと精進せねばと思わずにいられない…

f:id:asakasa:20160621160812j:plain 沖縄料理,とても美味しかった

OS X El Capitan <-> NFS Server on CentOS 7 64bit

必要に迫られ,自VPSCentOS 7上にNFSサーバを用意した.そのときの備忘録として,手順および詰まった点を共有する.

目的

  • Mac OS X El Capitanからマウント出来るNFSサーバを構築
  • automounterの機能を使ったマウントも可能とする

作業手順

パッケージのインストール

$ sudo yum install nfs-utils

NFSサーバの設定

ドメインの登録

/etc/idmapd.confを編集する.5行目のDomainの値を自ドメインにする.

$ sudo cp /etc/idmapd.conf /etc/idmapd.conf.org
$ sudo vi /etc/idmapd.conf
Domain = YOUR-SERVER-DOMAIN-NAME
$ diff /etc/idmapd.conf /etc/idmapd.conf.org
5c5
< Domain = YOUR-SERVER-DOMAIN-NAME
---
> #Domain = local.domain.edu

マウントポイントの設定

/etc/exportsを編集する.ここでは,/importsを外部マウント可能なディレクトリポイントにする. マウントに関する詳しい設定オプションは,man 5 exportsを参照すること.

$ sudo mkdir /imports
$ touch /etc/exports
$ vi /etc/exports
/imports *(insecure)

$
  • Macからマウントする場合は,insecureオプションが必要
  • /etc/exportsのファイルは,最後に改行を入れること

バージョンの指定

Macにおけるmountコマンドは,NFSのバージョン4でマウント可能だが,automounterの方はNFSのバージョン4ではマウントが出来ない. CentOS 7で導入したNFSサーバは,デフォルトではバージョン4で通信を行うため,明示的にバージョンを下げる必要がある.

/etc/sysconfig/nfsRPCNFSDARGSを書き換える.

$ sudo cp /etc/sysconfig/nfs{,.org}
$ sudo vi /etc/sysconfig/nfs
# ...
RPCNFSDARGS="-N4 -N4.1 -V3"
# ...
  • -N4 -N4.1は,4および4.1のバージョンを使用しないという意味
  • -V3は,バージョン3で通信するという意味

ファイアウォールの設定(firewalldを有効にしてる場合)

add-serviceを使い,NFS用のポートを開けた場合,TCPのみしか開いてくれない. automounterではUDPを使うため,下記のどちらかの対応を要する.

  • firewalldNFS関連の定義ファイルを編集
  • UDPポートを明示的に開放

ここでは,前者の対応をする. /usr/lib/firewalld/services以下にfirewalldで使用される各サービスの定義ファイルが存在する.

$ sudo cp /usr/lib/firewalld/services/nfs.xml{,.org}
$ sudo vi /usr/lib/firewalld/services/nfs.xml # 追記
# ...
  <port protocol="udp" port="2049"/>
# ...
$ 
$  sudo cat /usr/lib/firewalld/services/nfs.xml
<?xml version="1.0" encoding="utf-8"?>
<service>
  <short>NFS4</short>
  <description>The NFS4 protocol is used to share files via TCP networking. You will need to have the NFS tools installed and properly configure your NFS server for this option to be useful.</description>
  <port protocol="tcp" port="2049"/>
  <port protocol="udp" port="2049"/>
</service>
$
$ sudo firewall-cmd --permanent --add-service=nfs
$ sudo firewall-cmd --permanent --add-service=mountd
$ sudo firewall-cmd --permanent --add-service=rpc-bind
$ sudo firewall-cmd --reload

NFSサーバの起動

$ sudo systemctl start rpcbind
$ sudo systemctl start nfs

MacからのNFSサーバのディレクトリをマウント

mountコマンドを利用して特定のディレクトリにマウントする方法と,automounterの機能を使い/net以下にディレクトリをオートマウントする方法を下記に記す.

$ mkdir ~/mnt
$ sudo mount_nfs YOUR-SERVER-DOMAIN-NAME:/imports ~/mnt
$ cd /net/YOUR-SERVER-DOMAIN-NAME/imports/

参考

Google CTFに参加してみた

日本時間にして4月30日の午前2時から5月2日の午前2時までの48時間,Google CTFに研究室のメンバーと参加した.

 

チーム名はfiで,スコアは865ポイント,ランクは119位だった.世界中からおよそ900チームぐらい(エントリーは2000を超えているが,ポイントを入れたチーム数)が参加していた.目標は100位以内であったので,達成出来ずに残念であった…

f:id:asakasa:20160506191402p:plain

 

僕は主にWeb系の問題を解いた(Write upは下記参照).

github.com

 

Googleが初めて開催するCTFというだけあって,興味があって久しぶりに参加してみたが,僕としてはかなり満足出来た(満足するほど問題が解けたとはいってない).今回もそうだが,CTFを皮切りに色々なことが学べるので,今後も積極的に参加していきたい.

 

そろそろWeb以外もやらねば…Webすら満足に解けてない現状だが…🙄

DeNA TechCon 2016に参加してきた

DeNA TechCon 2016

DeNAの現場エンジニアがDeNAで培った開発面や運用面の知見を共有してくれる,というイベントに参加してきた.DeNAとしても初めての試みだったそうだが,イベントは大盛況であったし,僕自身かなり楽しめたので来年以降も開催して欲しいと思う.

techcon.dena.com

 

講演は4会場 + カジュアルトーク場に分かれて行われており,自分は以下の講演を聞いてきた.

  • Webを速くするためにDeNAがやっていること 〜HTTP/2と、さらにその先〜
  • DeNAインフラの今とこれから
  • DeNAマルチプレイゲーム用サーバ「IRIS」
  • スマートフォンセキュリティ - Same-Origin Policy Bypass -

この他にも面白そうな講演がいっぱいあったり,そもそもカジュアルトーク場のほうがオフレコっぽい話をいっぱい聴けたっぽくて,少し残念だった.しかし,いくつかの講演は,後日,映像配信や資料公開があるとのことだったので,楽しみにしたい(追記: 現在公式ページで全てのスライドを公開中).ただし,カジュアルトークに関しては撮影も禁止だったぐらいなので資料の公開等はないと思われる…

 

以下より,TechCon 2016で聞いた内容を自分なりに纏めてみようと思う.

 

Webを速くするためにDeNAがやっていること 〜HTTP/2と、さらにその先〜(OKU KAZUHO @kazuho)

かなり刺激的な講演だった.

まずは,DeNAのウェブ基盤技術の研究開発チームによる仕事(HandlerSocket等),およびそれの効果について紹介があった.ウェブでは,ページの表示が遅れれば遅れるほど売上が下がるという,いわばもっともな世界であるが,その売上を減らさないために数多くのアプローチがとられている.

 

特にDeNAでは,H2Oと呼ばれるDeNAのエンジニアが開発したWEBサーバを用いて,レスポンスタイムの向上やスループットの最適化を図っているそうだ.

H2O - the optimized HTTP/2 server

github.com

 

H2Oは,他のWEBサーバに比べてページの初期描画時間が短いという利点を持っており.それは一体どういったものかについて紹介があった.H2Oの詳細については一応メモをとっていたのだが,恐らく僕が雑な説明をしても混乱を招くだけになると思われるので,ここではしないことにする.

ただH2OによるWEBコンテンツの優先度制御はかなり興味深かった.またサーバからプッシュしたい場合に,予めサーバ側で予測してリクエストが来る前からクライアントにプッシュを開始する仕組みを実装しているという.このとき,ブラウザでキャッシュしているようなものはプッシュしたくないが,サーバ側でキャッシュの有無を判断するすることは今は出来ないため,cache-aware server-push(https://github.com/h2o/h2o/issues/421)という仕組みをRFC化する提案をしているそうだ.

github.com

 

このH2Oだが,これからどんどんと伸びていくと感じたので,頑張ってウォッチしていきたいと思う.

www.slideshare.net

 

DeNAインフラの今とこれから (KABE TOMOYA @limitusus, ONO ATSUSHI)

DeNAのインフラについて,これまでとこれからの話を2名の方から伺ってきた.

まず,これまでのインフラだが,DeNAではパブリッククラウドと比べてオンプレのほうがまだ安く構成出来るようだ.管理運用面では,プロセスをランタイムで解析出来るような独自のツールを作っているそうで,詳しくは分からないが,mallocをラップしてメモリ関連のログを出力し,どのアプリがどのタイミングでメモリをドカ食いしたか等を判別しているそうだ.かなり黒魔術を使ってそうな匂いがする.出来ればコードを見てみたいと思う.

そして,これからのインフラだが,かなり仮想化を意識しているように感じた.例えば,今までだと新しいプロダクトを作るときに,ネットワークエンジニアに何かしらを依頼するらしいが,新しいプロダクトとかであれば比較的小規模なため,わざわざネットワークエンジニアの手を借りることなく,サーバエンジニアの手によって構築から管理まで出来たほうが,スピード感が出る.もしプロダクトが大きくなったら,そのタイミングでもう一度しっかりとインフラを考えたほうが良いという考えだと思う.構成は,「OpenStack + BigSwitch + BIG-IP + Ceph」といったものになるそうだ.Cephを使って,イメージやデータを管理し,サーバごとにそれを読み込むといった風にすることで,サーバがポシャったときでもすぐに復旧出来るようにしたいとのことだ.またOSレベルでのコンテナにも興味を持っているらしい.

これからのインフラについては,自分の興味も相まって,かなり興味深かった.ふと疑問に思ったのは,プロダクトが大きくなったときにどのように移行していくのだろうか.発表中に話はなかったが,考えられているのか気になった.

 

DeNAマルチプレイゲーム用サーバ「IRIS」 (IKEDA OSAMU)

オンラインゲームのサーバがどのようなものか興味があったので,この講演を聞くことにした.

まず「IRIS」というのは,C++で書かれたMOサーバである.DeNAでは,Sakoshoとよばれるゲーム用のBaaSと,マルチプレイ専用サーバであるこのIRISがあるそうだ.IRISの基本的な機能は,IRIS内での仮想ルームの作成やIRIS間の通信,ルームの操作や通知,排他処理や座標同期などのマルチプレイサポートがあるそうだ.操作の殆どは,RPC経由だそうだが,どんな技術を使っているのかは不明であった.

また独自にIRISプロトコルを決めて通信を行っているらしい.なぜC++で作ったのかであるが,速度とクロスプラットフォームであることが決め手だったらしい.また最近ではGo言語とかもあるが,通信部分にポータビリティが求められ,かつAndroidiOSに透過的に組み込めるといった点からもC++を選んだとのことだ.

IRISはシングルプロセスで動いており,一つのサーバのなかに10個ぐらいのIRISがある.そのため,一つ一つのIRISサーバの収容人数は多くない.なぜシングルプロセスにしたかは,トラフィックが増大したときに他のプロセスに影響しないことや,実装がシンプルになるためプロダクトレディを早めたいという点を挙げていた.

 

オンラインゲームがバックエンドでどのように動いているのか,全く知らなかったので,とても勉強になる講演だった.自分もいつかオンラインゲームのバックエンドを開発してみたいと思っているものの,思っているだけで終わりそうだ…

 

スマートフォンセキュリティ - Same-Origin Policy Bypass - (SUGIYAMA TOSHIHARU @harupuxa)

自分の興味分野がセキュリティということもあり,講演のなかで一番期待していたものだった.

 

まず始めにスマートフォンアプリのチート対策について話があった.よくあるチートとは,アイテムや通過の増殖,Bot等が挙げられる.また攻撃されうるポイントを以下にあげる.

  • アプリのダウンロード
  • 課金処理(IAB/IAP)
  • 不正な通信リクエスト,通信レスポンスの改ざん
  • データファイルの改ざん
  • メモリ改ざん
  • アプリ改ざん

不正通信では,クライアントで処理結果を改ざんして送信したり,同じ通信を再送したり,同時に複数の送信を行ったりする.対策は,サーバ側でバリデーションをすることやロジック(詳しく覚えてない)のチェック,改ざんされても気づけるような仕組みを入れたり,アプリ内で独自の暗号化や署名,難読化を行うことだ.

メモリ改ざんは,画面上に見えているデータが対象で,実際にデモをしてくれた.まずrooted Android上で独自のプログラムを使って,スマホアプリのプロセスにアタッチしメモリ情報を取得していた.そして,画面上に見えている値をメモリ上から探すといった処理を何度か繰り返し,目的のメモリ番地を発見したら,そこの値を書き換えるといったことをしていた.その結果,スマホアプリ上では,先ほど書き換えた値になっていた.メモリ改ざんの対策は,画面上に見えている値とメモリ上の値を違うものにしておくといったものがあるが,メモリの更新頻度を見ればある程度の予測が出来るため,根本的な解決は難しいらしい.

表題にもあるSame-Origin Policyの回避だが,実際にデモを交えて分かり易く説明していただけた.SOPに関しては,自分のなかでもしっかりと理解が出来ているか不安なので,ここでは説明しない(出来ない).今後も勉強していきたい.講演者は,スマホブラウザのSOP回避を調べるために,AppStoreから100個ぐらいのブラウザアプリをダウンロードし調査したらしく,そのうち五つぐらいのブラウザで可笑しな挙動を発見出来たという.こういった地道にも思われる作業というのが,セキュリティでは大事になってくるのだと強く思った.

 

www.slideshare.net

 

懇親会

SUSHI

f:id:asakasa:20160203041124j:plain 

 

以上.

 

公式レポート

engineer.dena.jp

Visual Studio2015

Visual Studio2015

最近,後輩の卒業研究を手伝う過程でVisual Studio2015を使う機会があったのだが,思った以上に洗練されてる感じがして,とても良かった.統合開発環境としても悪くない.

三が日ボドゲ三昧

今年の始まりはボドゲだった.

家で遊んだボドゲ以外は,全て心斎橋にある「ボードゲームBAR ダイス」に行った.

三が日オープンしているというなかなかクレイジーなマスターがいる面白い場所だ.

 

1月1日

雨風色堂「sis puella magica」

新年初ボドゲまどマギを舞台にした一人用ボドゲだった.が,5回ぐらいやってもクリア出来ず,歯切れの悪い年始まりとなってしまった.説明書を読み違えてるのか,僕の頭が致命的に悪いのか,バランスが悪いのか…

f:id:asakasa:20160105165743j:plain

エンスカイ「カービィのコピとる!」

童心にかえって,ワイワイ楽しめた.人数によって色々な遊び方が出来るのもいい.ゲーム性は,そこまで高くないが.

f:id:asakasa:20160105165832j:plain

f:id:asakasa:20160105165838j:plain

ワドルドゥが好きだった.

「EXPLODING KITTENS」

かのキックスターターで巨額の出資を得たボードゲーム.戦略性を多少残しながら,さくっと終わる感じがとても良い.

f:id:asakasa:20160105165845j:plain

ChickenDiceGames「Age of Summoner」

信仰のバランスがちょっと可笑しい気がするけど普通に楽しかった.Age of Craftと比べてると,そこまではという感じはするけど.

f:id:asakasa:20160105165853j:plain

バオバブ

安定の面白さ.今までルールを読み違えてたようで,鳥をひたすら振り直さなくてもよかったっぽい.

f:id:asakasa:20160105165940j:plain

「Ca$h 'n Gun$ 2」

発泡スチロール製の銃を使って脅し合うゲーム.読み合いが中々楽しかった.

f:id:asakasa:20160105172027j:plain

1月2日

 「THE GAME」

これ,マジでクリア出来る…?

f:id:asakasa:20160105170022j:plain

「ゾンビタワー3D」

コンポーネントからして面白い協力型のゲーム.お互いが協調し合いながら,このゾンビタワーから脱出するというのがゲームの目的になる.

f:id:asakasa:20160105170038j:plain

「Roll for The Galaxy」

久々にやったら,チョー面白かった.負けたけど←

f:id:asakasa:20160105170105j:plain

「ベガス」

シンプルなゲームだけど,ダイスによって戦略がどんどん変化したりして,ドキドキハラハラで面白い.

f:id:asakasa:20160105170126j:plain

1月3日

「CV」

初めてやったけど,凄い面白かった.終わったあとに,どういった人生を歩んだか面白おかしく振り返られるのがむっちゃ良い.

f:id:asakasa:20160105170145j:plain

「ラブレター」

一時期バズったと思うけど,ノーマル板しかやったことがないからか,自分はあまり面白いと感じない.

f:id:asakasa:20160105170220j:plain

「グリモリア」

コンポーネントの魔術書からしてテンションが上がった.他の人が攻撃とか仕掛けてくるのでそれを読みながら防御したり,はたまた自分が攻撃をしたり,妨害をしたり,なかなか考えるところが多くて面白い.サクッと終わるのも好ポイントではある.

f:id:asakasa:20160105170317j:plain

番外:1月4日

大学の友人たちと初詣帰りに,ボードゲームのプレイスペースに行った.僕以外の全員がボドゲの初心者なので,何を選ぶかなやんだすえ,コンセプトとダンジョンオブマンダムにした.2つとも好評だったので,まあよかった.ダンジョンオブマンダムは,やはり皆好きになるなあと感じた.

f:id:asakasa:20160105170334j:plain

f:id:asakasa:20160105170340j:plain

 

 

実は年末にもかなりボドゲで遊んでおり,この年末年始は遊びすぎた感が強い.戒め戒め.