Raw socketでVLANタグ付きフレームを受信する

この記事はビール飲みながら書きました。アルコール入ってるので間違ってたり変なこと言ってたらごめんなさい。。おびーるおいちい!!!!

Qiitaデビュー兼ねてこの記事の微修正入れたりしつつ投稿しました。
技術的な記事はもうそっちに寄せようかなー(このブログの存在意義がなくなる)

Linux Raw Socketを使って遊んでいたのですが、VLANタグ付きフレームを受信してもraw socketではタグが消されてしまうことがわかった。
結論から言うと結構弄めんどくさかったのでそのメモ。

(さらに…)

Dockerの仮想NICでraw socketプログラミングをやってみる

前回に引き続き、Dockerのネットワーク周りです。
今回はDockerの仮想NICをraw socketで扱ってみようと思います。

Dockerの仮想NICはホストOS上で見えるvethとip linkの関係にあり、対応するvethにパケットを送信するとコンテナ内のethに転送されます。
そしてホストOS上で見えるvethは、通常のNICと同じように扱えます。
Docker標準ではこのvethがLinux bridgeであるdocker0というブリッジに接続されますが、前回はvethをdocker0から剥がしてOpenvSwitchに接続しました。
これによりVLANが扱えたり、OpenFlowでパケット転送を制御したりが可能となりました。
今回は、そのOpenvSwitchに当たる転送処理を自前で実装してみようというのが趣旨になります。
まずは簡単なバカハブ(リピーターハブ)を実装してみたいと思います。

(さらに…)

物理のトランクリンクをOpenvSwitchで受けて各Dockerコンテナに渡す

ご無沙汰しております(3年ぶり)
仕事?
もちろんしてますよ。あと山登りしてます。

それはそうと、仕事でネットワーク関連の検証をやっていて、ただのPing箱がたくさん欲しくなったとき、こんな感じの構成を作りたかった。

今までただPing返してくれれば良かったので、
この絵で言うコンテナ部分をnetns(Linux Network Namespace)でやっていた。
もちろんnetnsはネットワークの隔離であって、ファイルシステムやプロセス空間までは分けてくれない。
なので、すでにホストOS上でApacheだったりsshdだったりが動いていると、起動スクリプトをいじくったりしないといけない。
ここがコンテナになると、一度にネットワークもファイルシステムもプロセス空間も分離できる。
さらにDockerならDockerfile少し書いたり、出来合いのイメージ拾ってくるだけでサーバとかも一瞬で建てられる。
というわけでやってみよう。

(さらに…)

[Eject]光学ドライブの開閉状態を取得してみる

Ejectコマンド工作をやってると良く光学ドライブの開閉状態を確認したくなりますよね。
ならないとしたら、今すぐこの記事を読むのをやめて病院に行って下さい。

※Ejectネタです。(☝ ՞ਊ ՞)☝ウィーン

というわけで今回は、光学ドライブの開閉状態を確認する方法を考えてみました。

(さらに…)