Provided by: manpages-ja_0.5.0.0.20131015+dfsg-2_all
名前
icmp - Linux IPv4 ICMP カーネルモジュール
説明
このカーネルモジュールは RFC 792 で定義されている Internet Control Message Protocol を実装 したものである。 このプロトコルはエラー状況を知らせたり診断を行うために用いられる。 ユー ザーはこのモジュールとは直接には通信できない。 このモジュールはカーネルの他のプロトコルと 通信し、 それらのプロトコルが ICMP エラーをアプリケーションレイヤに渡す。 カーネルの ICMP モジュールは ICMP リクエストに対する応答も行う。 raw ソケットをプロトコル IPPROTO_ICMP でオープンすれば、 ユーザープロトコルはローカルなソ ケット全てに対する ICMP パケットを受信することができる。 詳細は raw(7) を参照のこと。 ソ ケットに渡される ICMP パケットのタイプは ICMP_FILTER オプションによってフィルターできる。 ICMP パケットは (たとえユーザーソケットに渡される場合でも)、 常にカーネルによって (も) 処 理される。 Linux では ICMP エラーパケットのレートをそれぞれの送り先に対して 制限している。 ICMP_REDIRECT と ICMP_DEST_UNREACH も到着したパケットの行き先経路 (destination route) を制 限する。 /proc インタフェース ICMP では、いくつかのグローバルパラメータを設定するための /proc ファイル群が用意されてい る。 これらのパラメータには、 /proc/sys/net/ipv4/ ディレクトリ内のファイルの読み書きでアク セスできる。 これらのパラメータのほとんどは特定の ICMP タイプに対するレート制限 (rate limitation) である。 Linux 2.2 は ICMP の制限にトークン・バケット・フィルタ (token bucket filter) を用いる。 それぞれの値は、バーストの後にトークン・バケット・フィルタがクリア され るまでのタイムアウトを秒単位で表したものである。最小単位(jiffy)は システム依存の単位で i386 システムは通常 10ms、alpha や ia64 では 1ms である。 icmp_destunreach_rate (Linux 2.2 から 2.4.9 まで) ICMP 不達パケット (Destination Unreachable packet) を送る最大レート。 これは特定の ルートまたは行き先にパケットを送信するレートを制限する。 この制限は、 path MTU discovery に必要な ICMP_FRAG_NEEDED パケットの送信には影響しない。 icmp_echo_ignore_all (Linux 2.2 以降) この値が非ゼロの場合は、 Linux はすべての ICMP_ECHO 要求を無視する。 icmp_echo_ignore_broadcasts (Linux 2.2 以降) この値が非ゼロの場合は、 Linux はブロードキャストアドレスに送られたすべての ICMP_ECHO 要求を無視する。 icmp_echoreply_rate (Linux 2.2 から 2.4.9 まで) ICMP_ECHOREQUEST パケットに応答する ICMP_ECHOREPLY パケットの最大送信レート。 icmp_errors_use_inbound_ifaddr (Boolean; default: disabled; Linux 2.6.12 以降) これを無効にすると、ICMP エラーメッセージは、 出力インタフェースのプライマリアドレ スで送信される。 これを有効にすると、エラーメッセージは ICMP エラーの原因となったパケットを 受信した インタフェースのプライマアドレスで送信される。 この動作は、多くのネットワーク管理者 がルータに対して期待しているものであり、 これにより複雑なネットワークレイアウトのデ バッグがより容易になる。 選択されたインタフェースでプライマリアドレスが存在しない場合は、 この設定に関わら ず、最初のループバック以外のインタフェースで、 プライマリアドレスを持つインタフェー スのプライマリアドレスが使用される点に 注意すること。 icmp_ignore_bogus_error_responses (Boolean; default: disabled; Linux 2.2 以降) ルータの中には、RFC1122 に違反し、ブロードキャストフレームに対して 偽の応答を送信す るものがある。 このような違反は通常カーネルの警告としてログに記録される。 このパラ メータを有効にすると、カーネルはこのような警告を出さなくなり、 ログファイルに雑音の ような情報が記録されるのを避けることができる。 icmp_paramprob_rate (Linux 2.2 から 2.4.9 まで) ICMP_PARAMETERPROB パケットの最大送信レート。 これらのパケットは不正な IP ヘッダを 持つパケットが到着した場合に 送信される。 icmp_ratelimit (integer; default: 1000; Linux 2.4.10 以降) 種別が icmp_ratemask (下記参照) にマッチした ICMP パケットの、 特定の送信先への送信 レートの最大値を制限する。 0 はレート制限を無効にすることを、 0 以外の値は応答間の 最小間隔 (ミリ秒単位) を示す。 icmp_ratemask (integer; default: 下記参照; Linux 2.4.10 以降) レート制限を行う ICMP タイプを決めるマスク。 有効ビット: IHGFEDCBA9876543210 デフォルトマスク: 0000001100000011000 (0x1818) ビット定義 (Linux カーネルソースファイル include/linux/icmp.h を参照): 0 Echo Reply 3 Destination Unreachable * 4 Source Quench * 5 Redirect 8 Echo Request B Time Exceeded * C Parameter Problem * D Timestamp Request E Timestamp Reply F Info Request G Info Reply H Address Mask Request I Address Mask Reply アスタリスク印 (*) が付いたビットは、 デフォルトでレート制限が有効になっている (上記のマス クのデフォルトも参照)。 icmp_timeexceed_rate (Linux 2.2 から 2.4.9 まで) ICMP_TIME_EXCEEDED パケットの最大送信レート。 これらのパケットはパケットがあまりに 多くの hop を通過した場合に、 ループを防ぐために送られる。
バージョン
ICMP_ADDRESS 要求に対するサポートは 2.2 で削除された。 ICMP_SOURCE_QUENCH は Linux 2.2 で削除された。
注意
他の多くの実装では、 IPPROTO_ICMP raw ソケットがサポートされていない。 この機能は移植性が 必要なプログラムでは用いるべきでない。 Linux がルーターとして動作していないときには、 ICMP_REDIRECT パケットは送信されない。 また これらが受け取られるのも、発信元がルーティングテーブルに定義されている 古いゲートウェイ で、リダイレクト・ルート (redirect route) が 適当な時間の後に期限切れになっている場合に限 られる。 ICMP_TIMESTAMP から返される 64 ビットのタイムスタンプは、 紀元 (Epoch) である 1970-01-01 00:00:00 +0000 (UTC) からの経過時間をミリ秒単位で表したものである。 Linux ICMP は ICMP を送るために内部で raw ソケットを用いる。 raw ソケットは netstat(8) の 出力に 0 inode として出力される。
関連項目
ip(7) RFC 792: ICMP プロトコルの説明
この文書について
この man ページは Linux man-pages プロジェクトのリリース 3.54 の一部 である。プロジェクト の説明とバグ報告に関する情報は http://www.kernel.org/doc/man-pages/ に書かれている。