http://www.coins.tsukuba.ac.jp/~yas/coins/slab-kernel-2015/ これは私的なリポジトリのため後輩の役には立ちません。
files/config_template や tools/kerninst.sh を参照のこと
syscall/ にカーネル空間でのシステムコール実装とそれを呼び出すユーザー空間のプログラムがある
driver/ なんの変哲もない内部バッファに読み書きができるだけのドライバ
procfs/ procを利用してuptimeのパクりを作成
periodic/ UDPで定期的にHeartbeatビーコンを送信するカーネルモジュール、kthread使用
TUNデバイスを使ってL3のVPNをしてみる
- myvpn.c
- peer to peerな対等なVPN。サーバもクライアントもお互いに固定ポート先に送り合う。
- myvpn_nat.c
- クライアント側にあるfirewallやNATに邪魔されないよう、サーバはクライアントのソースポートに返事をするようにした。
- サーバはクライアントから最初の1パケットを見てからはじめてクライアントのポートを知るので、かならずクライアントが何かパケットを送ってこないとサーバからクライアントへは届けられない。
- myvpn_xor.c
- myvpn_natの機能に加え単純な512ビット鍵でXOR(ECB)による暗号化を実装。
詳細は以下のREADME.md ( https://github.com/keiya/kernelhack/tree/master/myvpn )