名 前
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
(ブ ー ル 値 ; デ フ
ォ ル ト : 無 効 ; 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 と し て 出 力 さ れ る 。
関 連 項 目
RFC 792: ICMP プ ロ ト コ ル の 説 明
こ の 文 書 に つ い て
こ の man ペ ー ジ は Linux man−pages プ ロ ジ ェ ク ト の リ リ ー ス 3.79 の 一 部 で あ る 。 プ ロ ジ ェ ク ト の 説 明 と バ グ 報 告 に 関 す る 情 報 は http://www.kernel.org/doc/man−pages/ に 書 か れ て い る 。