from electron 2 web

インターネットのリソースを無駄遣いして検索におけるUXを下げてごめんなさい

圧倒的文章力のNASAでゴミみたいなチラ裏のようなメモを量産してしまい全ての"Web開発者"にごめんなさい

ルーター自作本、ブリッジまで終えたのでメモと今後の予定(チラ裏)

1月ぐらいからルーター自作で分かるパケットの流れという本を読みながら写経している。

感想

はい。何やったかって言うとlink layer programing、パケットアナライザー、ブリッジ

link layer programingはnetwork proguramingとはまた違う感じ。ioctlとかifreqとかsockaddr_llが絡んでくる。

l3ならbindでipとportを指定する感じだがl2だとifを指定する感じ。ただ指定するだけではなくてioctlとかifreqとかいろいろいる。

パケットアナライザーはまぁ名のとおりだけどめちゃ大変だった。ブリッジよりもよほど大変。dhcpしか解析したことなかったけど一階層ずつ解析するってこんな大変なのな。

dhcpならportなんかで待ち受けてるから先頭チェックして違ってたら切り捨てればいいだけだし。

まずanalyzepacket関数にreadとかrecvで入ってきたデータを渡してそれがどんなんか判断する。イーサネットだったらイーサネットパーサーに渡して、そこでパーサー回してそれがipかarpかicmpかみたいなのを判別する。

んでipだったらパーサー回してtcpudpかを判断する。

もうお気づきだと思うがレイヤーが上がるごとに指数関数的にパーサーが増える。tcp以上なんて無限にプロトコル作れる訳なのでヤバい。

それこそfortigateとか見たいにskypeとかいろんなシグネチャがあるしヤバいんだろうなって思う(語彙消失)

ブリッジはifからifへと垂れ流す奴で垂れ流すだけなので割と簡単だがpollとかselectとかの知識がいる。

まぁこれがあればNWの障害とかに便利。

前STPだかでおうちネットワークに障害が発生したときトラフィック追うのがかなり大変で元々一つ持っておきたい戸思ってたんだよね。

twitter

とつぶやきましたがbridgeってネットワークタップの簡易版みたいなものだし当たり前では。

ルーター

ルーターarpテーブルの処理がかなり複雑ですね・・・

今後の予定

routerboardをまた久しぶりに使い始める。これは自宅のネットワークを改善するための準備も含めてる。

routerboardにOS2つにするやついれてあるはずだから(去年ぐらいにやった)そっちのlinuxの上でこいつ動かせばおk。

そうすれば実際にネットワークタップとして使える・・・!(とおもいましたがRBは僕のNOCの主役なので潰せないな)

あとはBGPをはるために参考実装を改造してBGPルーターとか作ってみたいですね・・・まぁ仕様がクソ大変そうですが

RKXプロはVPNルーター作ってましたし頑張ればできるでしょ・・・