Manpages

名 前

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_REDIRECTICMP_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 (ブ ー ル 値 ; デ フ ォ ル ト : 無 効 ; Linux
2.6.12 以 降 ) こ れ を 無 効 に す る と 、 ICMP エ ラ ー メ ッ セ ー ジ は 、 出 力 イ ン タ ー フ ェ ー ス の プ ラ イ マ リ ア ド レ ス で 送 信 さ れ る 。 こ れ を 有 効 に す る と 、 エ ラ ー メ ッ セ ー ジ は ICMP エ ラ ー の 原 因 と な っ た パ ケ ッ ト を 受 信 し た イ ン タ ー フ ェ ー ス の プ ラ イ マ リ ア ド レ ス で 送 信 さ れ る 。 こ の 動 作 は 、 多 く の ネ ッ ト ワ ー ク 管 理 者 が ル ー タ ー に 対 し て 期 待 し て い る も の で あ り 、 こ れ に よ り 複 雑 な ネ ッ ト ワ ー ク レ イ ア ウ ト の デ バ ッ グ が よ り 容 易 に な る 。 選 択 さ れ た イ ン タ ー フ ェ ー ス で プ ラ イ マ リ ア ド レ ス が 存 在 し な い 場 合 は 、 こ の 設 定 に 関 わ ら ず 、 最 初 の ル ー プ バ ッ ク 以 外 の イ ン タ ー フ ェ ー ス で 、 プ ラ イ マ リ ア ド レ ス を 持 つ イ ン タ ー フ ェ ー ス の プ ラ イ マ リ ア ド レ ス が 使 用 さ れ る 点 に 注 意 す る こ と 。
icmp_ignore_bogus_error_responses
(ブ ー ル 値 ; デ フ ォ ル ト : 無 効 ; 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 を 参 照 ):

ア ス タ リ ス ク 印 (*) が 付 い た ビ ッ ト は 、 デ フ ォ ル ト で レ ー ト 制 限 が 有 効 に な っ て い る (上 記 の マ ス ク の デ フ ォ ル ト も 参 照 )。

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.79 の 一 部 で あ る 。 プ ロ ジ ェ ク ト の 説 明 と バ グ 報 告 に 関 す る 情 報 は http://www.kernel.org/doc/man−pages/ に 書 か れ て い る 。