日本語 man コマンド類 (ja-man-1.1j_5) と日本語 man ドキュメント (ja-man-doc-5.4 (5.4-RELEASE 用) など) をインストールすると、以下のような man コマンド閲覧、キーワード検索が コンソールからできるようになります。
4.11-RELEASE-K, 5.4-RELEASE-K, 5.5-RELEASE-K, 6.0-RELEASE-K から 6.4-RELEASE-K, 7.0-RELEASE-K から 7.4-RELEASE-K, 8.0-RELEASE-K から 8.4-RELEASE-K, 9.0-RELEASE-K から 9.3-RELEASE-K, 10.0-RELEASE-K から 10.3-RELEASE-K, 11.0-RELEASE-K から 11.4-RELEASE-K, 12.0-RELEASE-K, 12.1-RELEASE-K は、 プライベート版 (小金丸が編集してまとめたもの) ですが、 より多くの翻訳したファイルが含まれています。 (5.4-RELEASE-K から 6.4-RELEASE-K, 7.0-RELEASE-K から 7.4-RELEASE-K, 8.0-RELEASE-K から 8.4-RELEASE-K, 9.0-RELEASE-K から 9.3-RELEASE-K, 10.0-RELEASE-K から 10.3-RELEASE-K, 11.0-RELEASE-K から 11.4-RELEASE-K, 12.0-RELEASE-K から 12.4-RELEASE-K, 13.0-RELEASE-K から 13.3-RELEASE-K, 14.0-RELEASE-K から 14.1-RELEASE-K は、全翻訳済み)
13.3-STABLE-K, 15.0-CURRENT-K は現在、作成中で日々更新されています。
Table of Contents
NG_NETFLOW(4) FreeBSD カーネルインタフェースマニュアル NG_NETFLOW(4) 名称 ng_netflow -- Cisco の NetFlow 実装 書式 #include <sys/types.h> #include <netinet/in.h> #include <netgraph/netflow/ng_netflow.h> 解説 ng_netflow ノードは、FreeBSD で実行されるルータで Cisco の NetFlow エクス ポートプロトコルを実装します。ng_netflow ノードは、着信トラフィックを listen (接続を受け付け) し、それのユニークなフローを識別します。フロー は、終点 IP アドレス、TCP/UDP ポート番号、ToS、および入力インタフェースに よって区別されます。期限が切れたフローは、NetFlow バージョン 5/9 UDP デー タグラムのノードからエクスポートされます。期限切れの理由は、次の 1 つを指 定できます: - RST または FIN TCP セグメント。 - アクティブなタイムアウト。フローは、指定された期間より長く生存できま せん。デフォルトは、1800 秒 (30 分) です。 - アクティブでないタイムアウト。フローは、指定された期間にアクティブで ありませんでした。デフォルトは、15 秒です。 ノードは、(NetFlow v9 専用の) IPv6 アカウンティングをサポートし、複数の fib を気付いています。異なった fib は、NetFlow V9 の異なった domain_id と NetFlow V5 の異なった engine_id にマップされます。 フック このノードタイプは、iface0, iface1 などの名前が付けられた NG_NETFLOW_MAXIFACES フック (デフォルトは、65536) と out0, out1 などの名 前が付けられたフックの同じ数、さらに次の 2 つの export までをサポートしま す: (NetFlow バージョン 5 のための) export と (NetFlow バージョン 9 のた めの) export9 です。すべてのサポートされた export フックのために同時に export を行うことができます。デフォルトで (有効にされた ingress NetFlow) ノードは、iface* フックで受信されたデータの NetFlow アカウンティングを行 います。対応する out フックが接続されているなら、変更されていないデータ は、迂回され、そうでなければ、データは、解放されます。データが out フック で受信されたなら、なんの処理なしで対応する iface フックに迂回されます (デ フォルトで無効にされた egress NetFlow)。export プロトコルのための完全な export データグラムが構築されるとき、それは、export または export9 フック に送信されます。通常操作では、1 つ (または複数) の export フックは、 ng_ksocket(4) ノードの inet/dgram/udp フックに接続されます。 コントロールメッセージ このノードタイプは、次を加えて、一般的なコントロールメッセージをサポート します: NGM_NETFLOW_INFO (info) struct ng_netflow_info 中のいくつかのノード統計値と現在のタイムアウ ト値を返します。 NGM_NETFLOW_IFINFO (ifinfo) ifaceN フックに関する情報を返します。フック番号は、引数として渡され ます。 NGM_NETFLOW_SETDLT (setdlt) ifaceN フックのデータリンクタイプを設定します。現在、サポートされて いるタイプは、DLT_RAW (生の IP データグラム) と DLT_EN10MB (イーサ ネット) です。<net/bpf.h> ヘッダで DLT_ 定義を見つけることができま す。現在、使用される値は、DLT_EN10MB のための 1 と DLT_RAW のための 12 です。このメッセージタイプは、引数として struct ng_netflow_setdlt を使用します: struct ng_netflow_setdlt { uint16_t iface; /* どのインタフェースが dlt を変更したか */ uint8_t dlt; /* bpf.h からの DLT_XXX */ }; 要求された ifaceN フックは、前もって接続されていなければなりません。 そうでなければ、メッセージ送信操作は、エラーで返ります。 NGM_NETFLOW_SETIFINDEX (setifindex) ある場合には、ng_netflow は、パケットの入力インタフェースインデック スを決定することができないかもしれません。トラフィックがシステムイン タフェースの入力キューに来る前に ng_netflow ノードに入るなら、これ は、起こるかもしれません。そのようなセットアップの例は、同期データラ インと ng_iface(4) の間のトラフィックの取得です。この場合、入力イン デックスは、与えられたフックと関係があるべきです。インタフェースのイ ンデックスは、ユーザランドからの if_nametoindex(3) を通して決定する ことができます。このメッセージは、引数として struct ng_netflow_setifindex を必要とします: struct ng_netflow_setifindex { uint16_t iface; /* どのインタフェースが index を変更したか */ uint16_t index; /* 新しいインデックス */ }; 要求された ifaceN フックは、前もって接続されていなければなりません。 そうでなければ、メッセージ送信操作は、エラーで返ります。 NGM_NETFLOW_SETTIMEOUTS (settimeouts) NetFlow のアクティブ/インアクティブタイムアウトのための値を秒単位で 設定します。このメッセージは、引数として struct ng_netflow_settimeouts を必要とします: struct ng_netflow_settimeouts { uint32_t inactive_timeout; /* フロー不活発なタイプアウト */ uint32_t active_timeout; /* フロー活発なタイムアウト */ }; NGM_NETFLOW_SETCONFIG (setconfig) 指定されたインタフェースを設定します。このメッセージは、引数として struct ng_netflow_setconfig を必要とします: struct ng_netflow_setconfig { uint16_t iface; /* どのインタフェースが config を変更したか */ uint32_t conf; /* 新しい設定 */ #define NG_NETFLOW_CONF_INGRESS 1 #define NG_NETFLOW_CONF_EGRESS 2 #define NG_NETFLOW_CONF_ONCE 4 #define NG_NETFLOW_CONF_THISONCE 8 #define NG_NETFLOW_CONF_NOSRCLOOKUP 16 #define NG_NETFLOW_CONF_NODSTLOOKUP 32 }; 設定は、いくつかのオプションのビットマスクです。デフォルトで有効にさ れた、オプション NG_NETFLOW_CONF_INGRESS は、(ifaceX フックから来る データのために) ingress NetFlow 生成を有効にします。オプション NG_NETFLOW_CONF_EGRESS は、(outX フックから来るデータのために) egress NetFlow を有効にします。オプション NG_NETFLOW_CONF_ONCE は、 パケットが、netflow ノードを通して数回渡されるなら、一度だけアカウン トされるべきであるであることを定義します。オプション NG_NETFLOW_CONF_THISONCE は、パケットが、正確にこの netflow ノードを 通して数回渡されるなら、一度だけアカウントされるべきであるであること を定義します。これらの 2 つのオプションは、ingress と egress NetFlow の両方が、有効にされるとき、重複してアカウントすることを避けるために 重要です。オプション NG_NETFLOW_CONF_NOSRCLOOKUP は、ネットワークマ スクに書き込むために使用されるフローソースアドレスでラディックス (radix) 検索をスキップします。オプション NG_NETFLOW_CONF_NODSTLOOKUP は、(egress インタフェース ID、宛先マスクとゲートウェイを書き込む) 宛先でラディックス (radix) 検索をスキップします。検索によって提供さ れたデータを必要とされないなら、ルータのロードを削減するために、それ らを無効にすることができます。 NGM_NETFLOW_SETTEMPLATE (settemplate) (NetFlow v9 特有の) データフローテンプレートをアナウンスするために様 々なタイムアウトを設定します。このメッセージは、引数として struct ng_netflow_settemplate を必要とします: struct ng_netflow_settemplate { uint16_t time; /* アナウンスの間の最大時間 */ uint16_t packets; /* アナウンスの間の最大パケット */ }; time フィールドの値は、データテンプレートを再アナウンスするために秒 単位の時間で表します。packets フィールドの値は、再アナウンスのデータ テンプレートの間の最大のパケットカウントを表します。 NGM_NETFLOW_SETMTU (setmtu) (NetFlow v9 特有の) 指定されたサイズのパケットを構築するためにエクス ポートインタフェース MTU を設定します。このメッセージは、引数として struct ng_netflow_setmtu を必要とします: struct ng_netflow_setemtu { uint16_t mtu; /* パケットの MTU */ }; デフォルトは、1500 バイトです。 NGM_NETFLOW_SHOW このコントロールメッセージは、フローキャッシュの全体の内容をダンプす るようにノードに要求します。それは、直接 ngctl(8) から呼び出されるの ではなく、flowctl(8) から呼び出されます。 NGM_NETFLOW_V9INFO (v9info) struct ng_netflow_v9info のいくつかの NetFlow v9 に関連する値を返し ます。 struct ng_netflow_v9info { uint16_t templ_packets; /* v9 テンプレートパケット */ uint16_t templ_time; /* v9 テンプレート時間 */ uint16_t mtu; /* v9 MTU */ }; シャットダウン このノードは、NGM_SHUTDOWN コントロールメッセージを受け取るか、すべての フックが切断されている時、シャットダウンします。 使用例 最も簡単な可能な設定は、フロー収集が有効にされるところで一つのイーサネッ トインタフェースです。 /usr/sbin/ngctl -f- <<-SEQ mkpeer fxp0: netflow lower iface0 name fxp0:lower netflow connect fxp0: netflow: upper out0 mkpeer netflow: ksocket export inet/dgram/udp msg netflow:export connect inet/10.0.0.1:4444 SEQ これは、2 の NetFlow が有効なされたインタフェース fxp0 と ng0 があるルー タのより複雑な例です。この例の ng0: ノードは、ng_tee(4) に接続されること に注意してください。後者は、パケットを解析して解放する、IP パケットのコ ピーを利用者に送信します。fxp0: に関して: 利用者は、tee を使用しません が、パケットをいずれかのノードに送り返します。 /usr/sbin/ngctl -f- <<-SEQ # ng0 の tee を iface0 フックに接続 mkpeer ng0:inet netflow right2left iface0 name ng0:inet.right2left netflow # DLT を raw モードに設定 msg netflow: setdlt { iface=0 dlt=12 } # インタフェースインデックスを設定 (この例の 5) msg netflow: setifindex { iface=0 index=5 } # fxp0: を iface1 と out1 フックに接続 connect fxp0: netflow: lower iface1 connect fxp0: netflow: upper out1 # export フックに ksocket ノード作成し、適切な宛先に # export を送信するためにそれを設定します mkpeer netflow: ksocket export inet/dgram/udp msg netflow:export connect inet/10.0.0.1:4444 SEQ 関連項目 setfib(2), netgraph(4), ng_ether(4), ng_iface(4), ng_ksocket(4), ng_tee(4), flowctl(8), ngctl(8) B. Claise, Ed, Cisco Systems NetFlow Services Export Version 9, RFC 3954. http://www.cisco.com/en/US/docs/ios/solutions_docs/netflow/nfwhite.html 作者 ng_netflow ノードタイプは、Gleb Smirnoff <glebius@FreeBSD.org>, Alexander Motin <mav@FreeBSD.org>, Alexander Chernikov <melifaro@ipfw.ru> によって 書かれました。初期のコードは、Roman V. Palagin <romanp@unshadow.net> に よって書かれた ng_ipacct に基づいていました。 バグ NGM_NETFLOW_SHOW コマンドで得られるキャッシュスナップは、厳しい負荷の下で エントリのいくらかの割合で欠けるかもしれません。 ng_netflow ノードタイプは、AS 番号に入れられません。これは、カーネルルー ティングテーブルで必要な情報が不足しているためです。しかしながら、この情 報は、GNU Zebra のようなルーティングデーモンからのカーネルに注入すること ができます。この機能は、今後のリリースで利用可能になるかもしれません。 FreeBSD 11.4 December 10, 2012 FreeBSD 11.4