- 1 名前:login:Penguin [2006/04/28(金) 23:52:43 ID:OSZilmdD]
- 前スレ
pc8.2ch.net/test/read.cgi/linux/1100967722/
- 285 名前:login:Penguin [2006/12/18(月) 17:48:16 ID:CqDzl5wd]
- カーネルモジュールからカーネルに「擬似的に」IP パケットを
送り付けたいんだけど、いい方法ないかな? やりたいことを言うと、モジュールで生成したソケット (LISTEN 状態) に 擬似 SYN パケットを送りつけて(Handshake して)そのソケットを 無理やり TCP_CONNECTED の状態に持って行きたい。 netfilter いじればいけると思ってソースを軽く読んでるんだけど、 netfilter って、来たパケットを落としたり書き換えたりするだけで 何も無いところからパケットを生成することはできなかったりする? (読みが浅いだけかも。もうちょっとちゃんと読むか…)
- 286 名前:login:Penguin mailto:sage [2006/12/19(火) 00:11:12 ID:Y8Ux/Mtq]
- >>285
ACKも投げないとね とりあえず、そういうときは本当に接続してLANケーブルひっこぬく
- 287 名前:login:Penguin [2006/12/19(火) 14:55:27 ID:CRmuTbew]
- >> 286
もちろん ACK も投げる。(記述を省略していた) 他のマシンと通信をしているソケットを(FIN を送らずに)一回破壊して、 通信相手に影響なく別のソケットを作り直して、 通信を継続させる、ということをやりたいのね。 (新たに接続したソケットの Seq. No. は無理やり書き換える)
- 288 名前:285 [2006/12/19(火) 16:33:48 ID:CRmuTbew]
- divert_なんちゃら とかを使えばいいのだろうか。
(e.g. alloc_divert_blk(), divert_frame() とか) よくわからん。参考になるものが少ない…。
- 289 名前:login:Penguin mailto:sage [2006/12/19(火) 16:40:18 ID:WkfMsLhq]
- >>285
よくわからんけど lo からコネクション張るんじゃだめ?
- 290 名前:login:Penguin mailto:sage [2006/12/19(火) 22:53:18 ID:9FDnX5Ig]
- >>287
ユーザ空間のプログラムを呼び出して、 raw socket で投げつける。
- 291 名前:285 [2006/12/20(水) 01:41:48 ID:jEZO7VCp]
- >>289
>>290 あ、それでいいのか。簡単なことに気づかなかった orz 「自分自身ではない IP を名乗る SYN パケット」を送る必要があって、 返ってくる SYN+ACK パケットをキャッチすることと併せて考えていたら netfilter にこだわってしまった。 ユーザ空間から送って、キャッチだけ netfilter で行えばいいのか。感謝。
|

|