パスワードを忘れた? アカウント作成
10118197 story
ソフトウェア

Linuxの新しいパケットフィルタリング機構「NFTables」 16

ストーリー by hylom
苦労して覚えたiptablesの知識は…… 部門より
あるAnonymous Coward 曰く、

Linuxカーネル3.13には、新たなパケットフィルタリング機構「NFTables」がマージされる模様(本家/.)。

NFTablesはsiptablesを置き換えるべく開発されたもので、よりパワフルかつシンプル、改良されたエラーリポート、効率的なパケットフィルタリングルールのハンドリングなどが特徴だという。NFtablesのコードはすでに公開されているので、既存カーネルでもカーネル/カーネルモジュールをコンパイルすれば利用可能になるようだ。

フィルタリング設定や設定確認にはnftコマンドを使用し、たとえば80番ポートへのパケットをdropするには「nft add rule ip filter input tcp dport 80 drop」などとコマンドを実行すればよいとのこと(解説記事)。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • by Anonymous Coward on 2013年10月23日 16時35分 (#2482535)

    それはきっとiptablesじゃないかな。

    • by Anonymous Coward

      おれもそんなんあったっけ?と思ってぐぐっちゃったよ。
      同名のサーバソフトウェアがあるらしいので修正しておいてくれると助かるが、さて。

  • by Anonymous Coward on 2013年10月24日 10時42分 (#2483063)

    Linuxカーネルではないけど、以前、Linuxでネットワークを手動設定するとき、net-toolsのifconfig(8)を使っていた。
    マスク部の指定が面倒だったりして(今は改善されてるかも)、iproute2のip(8)に乗り換えた。
    引数の指定が色々違って、慣れるのに手間取ったはずだ。

    良く言えば活気があるが、開発の大半は昔のまずいコードの書き直し、まずいコマンドの再実装だったりしてそう。

    *BSDはifconfig で/25 とか普通にできたし、同じコマンドが高機能化され続けている。

    # うーん、言いたいことがはっきりするまで考える気がないので、ここでsubmit(俺やっぱりLinux'erだ)

  • by Anonymous Coward on 2013年10月24日 11時17分 (#2483092)

    疑問点: 1
    可読性が落ちているように感じるのだが、誰も指摘しなかったのか?

    例えばiptablesで-j CTする場合、iptables -t raw -A PREROUTING -m conntrack --ctstate ESTABLISHED -j CTみたいな感じになるだろう。
    一方でntfでは、nft add rule raw prerouting ct state established ctになるのかな?
    この時点でも十分読みにくいけど、これで-j CTの後ろに--helperなんてついて伸びていった日にはもう…
    nftの方が単なる英単語の羅列のようになってしまって、明らかに可読性が落ちているんだよね。
    -j CT程度ですらご覧の有様、もしこれがパラメータの多いhashlimitなんて使った日には、パッと見ではもう何が何だかわからないだろう。

    だいたいからして、iptablesでtimeモジュールとhashlimitモジュール、それにconntrackモジュールとmultiportモジュールを同時に使うルールなんてのも珍しくもない。
    それにiptablesのように-m conntrack --ctstate ESTABLISHED,RELATEDと繋げずに、estanblishedとrelatedを別々に記述してるのも気になる。

    まさかiptablesで言うところのモジュールはひとつしか使えないとか?
    しかもstateマッチみたいな定義も一行に列挙できないとか?
    まさかねぇ。

    疑問点: 2
    nftでlogした時に、ログが投げられる先は何処?

    iptablesであれば、-j LOGならばsyslogだし、-j ULOG-j NFLOGならばulogdに投げられる。
    それではnftでlogした時には、ログは一体何処に投げられるの?

    うちでは特定のパケットをマークして統計取ったりする関係上、全て-j NFLOGで、しかもoutput_MYSQLでMariaDBに丸投げしてるけどさ。
    ぶっちゃけた話、-t raw -A PREROUTING -m rpfilter --invert 的なことが起きるくらいでないとログなんて要らね。って人も多いのでは?
    そんなわけで「ログも少ないから-j LOGのみで十分」って人も結構居るんじゃないのかな。
    つまりnftablesの名前から察するようにデフォルトがNFLOGだと、全ての人がNFLOGとulogdの組み合わせを使うことになるけど、それは明らかにオーバースペックでしょ?

    ulogdは、公式のulogd2のgitリポジトリ見てもわかる通り、ドキュメントからしてかなり古いままで更新停止してるしね。
    どれがInput pluginで、どれがInterpreter pluginで、どれがOutput pluginなのか? とか、plugins stacksの順番や定義の書き方なんて、ドキュメントがそんな状態だからソース読めなきゃ書けないでしょ?
    ulogd強制したら、素人さん達がulogd.conf書けなくて阿鼻叫喚の地獄絵図になるのは目に見えてる。

    だからといってnftablesなのに、デフォルトがNFLOGじゃないってのもってのもねぇ…
    そもそもnftablesっていうネーミングからして失敗なんだよな、カーネルから取ってxt_tablesとかにしておけば良かったんだよ。

    疑問点: 3
    ユーザー定義チェインは?

    table filter {
            chain input {
                    table filter hook input priority 0;
                    ct state established accept
                    ct state related accept

    という例文があるから、同じような感じで定義できそうなのはわかる。
    しかし次のtable filter hook input priority 0;の一文が気になる。
    まさかと思うが、Netlinkの段数分しか定義できないとかいうことじゃないだろうな?
    ましてNFLOGがデフォルトだったとして、NFLOGで使う分と合わせて。ということだったりしたら最悪。

    # なんかもう色々と微妙すぎてテストする気も起こらない…

    • by 130R (31126) on 2013年10月24日 12時07分 (#2483115) 日記

      よく想像だけでそんなに書けるねえ。すごい。

      # 可読性落ちてるんじゃなくて慣れてないだけじゃね

      親コメント
    • by Anonymous Coward

      元々iptablesだって読みにくい書きにくいって点では問題ありでしょ。

      というわけで、iptablesのコマンド群を生成するスクリプトなり何なり作ったヤツはたくさんいる筈だ。いたら手を挙げろ!

  • by Anonymous Coward on 2013年10月23日 17時16分 (#2482568)

    本家曰く
    >(though it now offers an iptables compatibility layer too)
    だそうな。

    • by Anonymous Coward
      なまじっか安定していて一度インストールしたらハードウェアが故障するまで使えたりするので、
      新規インストールするたびにどこかのやり方が根本的に変わってしまっていて、
      毎回何か基本的なことを勉強させられるイメージが。
  • by Anonymous Coward on 2013年10月23日 17時17分 (#2482570)

    設定の面倒さは変わってない気が、、、

    • by Anonymous Coward on 2013年10月23日 17時52分 (#2482590)
      いやあ、設定が楽になるものではないので。「シンプル」とかで誤解したのかな?

      これによってカーネルのコードが綺麗になって、実行効率が良くなって、エラー表示とかもわかりやすくなるというものです。
      専用コマンドも準備されてるけど、今までのコマンド互換インターフェイスでいけるので同じと思ってもよし。

      これが役に立つのは
      - カーネルのソースコードを読み書きする人
      - iptables に山ほどフィルターを既述して実行が遅くなって困った人
      - iptables や ebtables の謎のエラーメッセージに悩まされてる人
      とかかな?

      普通のディストリビューションで使えるようになるのは少し先でしょうね。
      親コメント
  • by Anonymous Coward on 2013年10月23日 17時57分 (#2482594)

    NETMARKとiproute2とnetfilter/iptablesを連携させて複雑なルーティング制御をしてたんだけど
    iptablesからNFTablesに変わっても大丈夫なのかな?

    netfilterのフロントエンドであるiptablesがNFTablesに変わるだけで
    iptablesで出来る全ての事は、間違いなくNFTablesで出来るのかな?

  • by Anonymous Coward on 2013年10月23日 21時07分 (#2482755)

    テンプレをコピペするので職人よろしく

    • by Anonymous Coward

      合法ロリ上司にパワハラされるぞ

  • by Anonymous Coward on 2013年10月24日 2時17分 (#2482915)

    chainとかtableとかの概念も使えないと互換でなく、コマンド構文が似てますくらいだよね?

  • by Anonymous Coward on 2013年10月24日 13時43分 (#2483199)

    ユーザーにはカーネルレベルでの実装は隠蔽される、といいなあ

typodupeerror

長期的な見通しやビジョンはあえて持たないようにしてる -- Linus Torvalds

読み込み中...