君は牛を二頭持っている

渋谷あたりのエンジニアのブログ。OSからウェッブなフロントエンドまでとか色々。

netfilterメモ(NF_STOLEN)

タイトルのまま。
netfilterの概要とかはググったら大体出てきますので省く。
具体的にどういう仕組みでフックしてるのかとかも、今回は省く。
netfilterを使って登録するフック関数には,いくつかの戻り値があって,それぞれでパケットに対する制御を行う。

  • NF_ACCEPT:通してOK。パケットは次の処理に渡す
  • NF_DROP:具体的にどう処理されるのかは見てませんが、送受信パケットはドロップされる

他にもいくつか(NF_QUEUEなど)
今回のタイトルにあるNF_STOLENは,「このパケットに関しては,カーネルモジュール側で処理しておくので放っておいてください」みたいな感じで、本来の処理フローからパケットを外してしまう。
つまり、LKM側でレイヤ間のやり取りを実現しないといけない。
自分で別の流れに渡すのも良いし、後々、別のタイミングでフック関数に渡される関数(okfn)に再度渡しても良い。