ULOG ターゲットは、マッチしたパケットについて、ユーザ空間でのロギングを提供してくれる。パケットがマッチした時、ULOG ターゲットがセットされていると、パケットの情報がパケットそのものと一緒にネットリンクソケットを通じてマルチキャストされる。ユーザ空間のプロセスをいくつでも、いずれかのマルチキャストグループに参加させておけば、それらのパケットを受け取ることができるわけだ。言うなれば、これは iptables と Netfilter だからこそ可能な、より完全で洗練されたロギング機能であり、パケットのログを採ることに関して遙かに優れた機能を備えている。このターゲットを利用すれば、 MySQL をはじめとする様々なデータベースに情報をログすることも可能で、特定のパケットについての検索や、ログのグループ化も朝飯前となる。 ULOGD project page に行けば、 ULOG のユーザ空間アプリケーションも用意されている。
Table 11-21. ULOGターゲットオプション
オプション | --ulog-nlgroup |
例 | iptables -A INPUT -p TCP --dport 22 -j ULOG --ulog-nlgroup 2 |
説明 | --ulog-nlgroup オプションは、パケットをどのネットリンクグループに送るかを ULOG ターゲットに指示する。ネットリンクグループは 32 あり、単純に 1 から 32 で指定する。ネットリンクグループ 32 へ伝達したいとすれば、単純に --ulog-nlgroup 32 と書けばよい。デフォルトで使われるネットリンクグループは 1 である。 |
オプション | --ulog-prefix |
例 | iptables -A INPUT -p TCP --dport 22 -j ULOG --ulog-prefix "SSH connection attempt: " |
説明 | --ulog-prefix オプションは、ちょうど通常の LOG ターゲットの接頭辞と同じように働く。このオプションにより、すべてのログエントリに、指定したログ接頭辞が付加される。接頭辞の長さは 32文字までで、内容や出所によってログを見分けるのに大変役に立つ。 |
オプション | --ulog-cprange |
例 | iptables -A INPUT -p TCP --dport 22 -j ULOG --ulog-cprange 100 |
説明 | --ulog-cprange は ULOG ターゲットに対して、パケットのうち何バイトをユーザ空間の ULOG デーモンに送るかを決める。上記のように 100 を指定すると、パケット全体のうちから 100バイトがユーザ空間にコピーされる。そこには、うまくすればヘッダのすべてと、実際のパケットの冒頭のいくらかが含まれているだろう。 0 を指定した場合には、パケットのサイズに関わらず、パケットの頭から終わりまで全部がユーザ空間にコピーされる。デフォルト値は 0 つまりパケット全部だ。 |
オプション | --ulog-qthreshold |
例 | iptables -A INPUT -p TCP --dport 22 -j ULOG --ulog-qthreshold 10 |
説明 | --ulog-qthreshold は ULOG ターゲットに対して、実際にユーザ空間へデータを送るまでに、いくつのパケットをカーネル内でキューイングするかを指示する。例えば上記のように、しきい値 (threshold) を 10 にすると、カーネルは 10個のパケットを蓄積してから、それらをひとつのネットリンク・マルチパートメッセージとしてユーザ空間へ送る。下位互換性の理由からデフォルト値は 1 となっている。以前のユーザ空間のデーモンはマルチパートメッセージが扱えなかった。 |
Linux カーネル 2.3, 2.4, 2.5, 2.6 で機能する。 |