/proc/sys/net/ipv4/* の変数: ip_forward - 論理型 0 - 無効 (既定値) 0 以外 - 有効 パケットをインターフェース間でフォワード (回送) します。 この変数は特別なもので、この変更はすべての設定値を既定の状態に 戻します (ホスト用 RFC1122、ルータ用 RFC1812 に従って、以下の 記述における既定値はこの設定により 0 ならホスト、0 以外ならルー タの値となります)。 ip_default_ttl - 整数型 既定値 64 ip_no_pmtu_disc - 論理型 Path MTU Discovery を無効にします。 既定値 FALSE IP フラグメンテーション (細分化): ipfrag_high_thresh - 整数型 IP フラグメントの再構成に使われるメモリの最大値。この目的用に メモリが ipfrag_high_thresh バイト割り当てられた場合、フラグメ ントハンドラは ipfrag_low_thresh に達するまで、パケットを投げ 込みます。 ipfrag_low_thresh - 整数型 ipfrag_high_thresh を参照してください。 ipfrag_time - 整数型 メモリに IP フラグメントを保持する秒数 INET peer storage (相手先情報の記憶域): inet_peer_threshold - 整数型 記憶域のおおよその大きさ。このしきい値を越えると、エントリはよ り積極的に破棄されるようになります。このしきい値はまた、エント リの TTL (time-to-live: 生存時間) とガーベジコレクション間隔 (GC intaerval) をも決定します。エントリが増えると TTL とガーベ ジコレクション間隔は短くなります。 inet_peer_minttl - 整数型 エントリの TTL の最小値。組立て側 (reassembling side) でフラグ メントをカバーするに十分な TTL でなければなりません。この TTL の最小値は、プールサイズが inet_peer_threshold より小さい場合、 保証されます。 Jiffies で計られます。 inet_peer_maxttl - 整数型 エントリの TTL の最大値。プール上のメモリ負荷がない (つまりプー ル内のエントリの数がとても小さい) 場合、この期間の後、未使用の エントリは解放されます。 Jiffies で計られます。 inet_peer_gc_mintime - 整数型 ガーベジコレクションパス間の最小の間隔。この間隔はプール上のメ モリ負荷が高い場合に有効です。 Jiffies で計られます。 inet_peer_gc_maxtime - 整数型 ガーベジコレクションパス間の最大の間隔です。この間隔はプール上 のメモリ負荷が低い (あるいは無い) 場合に有効です。 Jiffies で計られます。 TCP 変数: tcp_syn_retries - 整数型 能動的な TCP コネクションを試みるために初期の SYN を再送する回 数。255 を超えるべきではありません。既定値は 5 で、約 180 秒に 相当します。 tcp_synack_retries - 整数型 受動的な TCP コネクションを試みるために SYNACK を再送する回数。 255 を超えるべきではありません。既定値は 5 で、約 180 秒に相当 します。 tcp_keepalive_time - 整数型 キープアライブ有効時、TCP がキープアライブメッセージを送出する 間隔。 既定値: 2 時間。 tcp_keepalive_probes - 整数型 コネクションが壊れたことを決定するまでのキープアライブプローブ の送出回数。既定値:9。 tcp_keepalive_interval - 整数型 プローブを送出する周期。tcp_keepalive_probes と tcp_keepalive_interval の乗算値は、プローブ開始後応答しなくなっ たコネクションを終了するための時間です。既定値:75 秒、つまり、 コネクションは再送の約 11 分後に異常終了するでしょう。 tcp_retries1 - 整数型 何かが悪いと決める前の再送回数で、この疑わしさをネットワーク層 に報告する必要があります。最小の RFC 値は 3 で、これが既定値で、 RTO に依存し約 3 秒から 8 分に相当します。 tcp_retries2 - 整数型 既存の TCP コネクションを終了する前の再送回数です。RFC1122 で は、100 秒以上に制限するべきだと述べられています。これはとても 小さな数です。既定値は 15 で、RTO に依存し約 13 から 30 分に相 当します。 tcp_orphan_retries - 整数型 こちら側からクローズされた TCP コネクションを終了する前の再送 回数。既定値は 7 で、RTO に依存し約 50 秒から 16 分です。マシ ンがウェブサーバを搭載するなら、このようなソケットが著しくリソー スを消費するかもしれないので、この値を低くすることを考慮すべき です。tcp_max_orphans を参照してください。 tcp_fin_timeout - 整数型 ソケットがこちら側からクローズされた場合のソケットの FIN-WAIT-2 状態を維持する時間。相手側が何かおかしい、クローズ してくれない、異常終了したなどの可能性があります。既定値は 60 秒です。2.2 で通常使用される値は 180 秒 なのでこれに戻したいと 思われるかもしれませんが、マシンが負荷の低いウェブサーバであっ たとしても、膨大な数のデッドソケットによりメモリがオーバフロー する危険性があることを覚えておいてください。FIN-WAIT-2 はメモ リを高々 1.5k しか食わないので危険性は FIN-WAIT-1 よりは低いの ですが、その状態が長く続く傾向があります。tcp_max_orphans を参 照してください。 tcp_max_tw_buckets - 整数型 システムによって同時に保持される time-wait ソケットの最大数。 この数を超過する場合、time-wait ソケットは直ちに破棄され、警告 が出力されます。この制限は単純な DoS 攻撃を防ぐためだけに存在 し、人為的に制限を低くしてはなりません。ただしネットワークの状 況により既定値以上を必要とする場合は、多少増やしてください (た ぶんインストールされたメモリを増やした後)。 tcp_tw_recycle - 論理型 TIME-WAIT ソケットを素早く再利用することを有効にします。既定値 は 1 です。技術的なエキスパートの助言/要求なしで変更してはなり ません。 tcp_max_orphans - 整数型 システムで保持されたユーザファイルハンドルのいずれにも接続され ていない TCP ソケットの最大数。この数を越えると孤立したコネク ションは直ちにリセットされ、警告が出力されます。この制限は単純 な DoS 攻撃を防ぐためだけに存在するものですが、この値をうのみ にしたり、人為的に制限を低くしてはなりません。ネットワークの状 況により既定値以上が必要となった場合 (たぶんインストールされた メモリを増やした後)、この値を多少増やしてみましょう。あとはネッ トワークサービスを調整して、このような状態が残っているものは積 極的に解除してください。再び強調しておきますが、孤立した各コネ クションは最大 64k のスワップできないメモリを消費するのです。 tcp_abort_on_overflow - 論理型 待機 (listen) サービスの新しいコネクションの受入れ (accept) が とても遅い場合、それらをリセットします。既定の状態は FALSE で す。オーバーフローがバーストにより起これば、コネクションは回復 するだろうということを意味します。コネクションをもっと早く受入 れるように待機するデーモンを調整できないと確信が持てる場合だけ、 このオプションを有効にしてください。このオプションを有効にする ことは、あなたのサーバのクライアントに悪影響を与える可能性があ ります。 tcp_syncookies - 論理型 カーネルが CONFIG_SYNCOOKIES をセットしコンパイルされた時だけ 意味を持ち、ソケットの syn backlog queue があふれた時に syncookie を送出します。これはよくある 'syn flood 攻撃' を防止 するためのものです。 既定値:FALSE まず、syncookies は予備的な機能であることに注意してください。 高負荷のサーバが、順当な数のコネクションをさばくのを助けるため に使用してはなりません。ログに synflood の警告が記録されている が、調査しても正当なコネクションが過負荷を起こしているように見 える場合は、この警告が消えるまで別のパラメータを調整すべきです。 tcp_max_syn_backlog, tcp_synack_retries, tcp_abort_on_overflow を参照してください。 本当のところ syncookie は TCP プロトコルに違反し、TCP 拡張の使 用を許さず、あるサービスの深刻な低下という結果になる可能性があ り、それが判るのはあなたではなく接続を試みるクライアントやリレー です。実際には flood 攻撃されていないのにログに synflood 警告 が記録されるなら、あなたのサーバの設定は深刻な誤りがあります。 tcp_stdurg - 論理型 TCP urg ポインタフィールドを、Host requirements (rfc1122) にし たがって解釈します。大部分のホストは古い BSD の解釈を使うので、 Linux でこれをセットすると正しく通信ができないかもしれません。 既定値:FALSE tcp_max_syn_backlog - 整数型 送出したコネクション要求を記憶する最大数で、これらの要求はまだ 接続先から確認 (acknowledgement) を受け取っていないものです。 既定値は、128Mb 以上のマシンで 1024、メモリの少ないマシンで 128 です。サーバが過負荷に苦しむ場合は、この数を増加させてみて ください。警告!1024 を超えるなら、 TCP_SYNQ_HSIZE*16<=tcp_max_syn_backlog を保つために、 include/net/tcp.h の中のTCP_SYNQ_HSIZE を変更し、カーネルを再 コンパイルした方がいいでしょう。 tcp_window_scaling - 論理型 RFC1323 で定義されたウィンドウ調整を有効にします。 tcp_timestamps - 論理型 RFC1323 で定義されたタイムスタンプを有効にします。 tcp_sack - 論理型 選択的肯定応答 (SACK) を有効にします。 tcp_fack - 論理型 FACK の輻輳回避および速い再送を有効にします。 tcp_sack が有効でなければ、この値は使用されません。 tcp_dsack - 論理型 TCP が重複 (duplicate) SACK を送ることを可能にします。 tcp_ecn - 論理型 TCP で Explicit Congestion Notification (明示的な輻輳通知) を 有効にします。 tcp_reordering - 整数型 TCP ストリームにおけるパケットの再整列 (順序付け) の最大数。 既定値:3 tcp_retrans_collapse - 論理型 [訳注;著者に連絡し、内容を変更しています。] いくつかの問題のあるプリントシステムに対する Bug-to-bug 互換。 0: 特定の TCP スタックのバグに対処するため、再送時に小さなパケッ トのまま (collapse しない) 送ってみます。 1: 再送時に、collapse し、大きなパケットを送ってみます。 既定値は 1 です。 tcp_wmem - 三つの整数型ベクトル:min, default,max min: TCP ソケット向けの送信バッファ用に予約されたメモリの量。 各 TCP ソケットはその誕生の事実によりそれを使用する権利を持っ ています。 既定値:4K default: TCP ソケット向けの送信バッファ用に許されるメモリのデ フォルトの量。この値は他のプロトコルで使用される net.core.wmem_default を上書きし、普通これは net.core.wmem_default より小さな値です。 既定値:16K max: TCP ソケット向けの送信バッファ用に自動で選ぶことのできる メモリの最大の量。この値は net.core.wmem_max を上書きせず、 SO_SNDBUF を介する "static" selection はこれを使いません。 既定値:128K tcp_rmem - 三つの整数型ベクトル:min, default,max min: TCP ソケットが使う受信バッファの最小の大きさ。メモリ負荷 が抑えられていても、この大きさは各 TCP ソケットに保証されます。 既定値:8K default: TCP ソケットが使う受信バッファのデフォルトの大きさ。 この値は他のプロトコルが使う net.core.rmem_default を上書きし ます。 既定値:87380 バイト。この値は結果として tcp_adv_win_scale の デフォルト設定で Window を 65535 に、tcp_app_win を 0 またはデ フォルトよりちょっと少なくします。これらの変数については下記を 参照してください。 max: TCP ソケット向けの受信バッファ用に自動で選ぶことのできる メモリの最大の量。この値は net.core.rmem_max を上書きせず、 SO_SNDBUF を介する "static" selection はこれを使いません。 既定値:87380*2 バイト tcp_mem - 三つの整数型ベクトル:low, pressure, high low: このページ数未満であれば、TCP は自分自身のためのメモリ要 求を問題なく行えます。 pressure: TCP によって割当てられたメモリの量がこのページ数を超 える場合、TCP は自身のメモリ消費を抑え、メモリ負荷モードに入り、 メモリ消費が "low" に該当した時にこのモードを抜けます。 high: TCP ソケットがキューイングできるページ数。 既定値はブート時に利用可能なメモリの量から計算されます。 tcp_app_win - 整数型 アプリケーションバッファ用に予約される window の最大値 (window/2^tcp_app_win, mss)。値 0 は特別で、何も予約しないこと を意味します。 既定値:31 tcp_adv_win_scale - 整数型 バッファにオーバヘッドを組入れます。 tcp_adv_win_scale が 0 を超える場合 bytes/2^tcp_adv_win_scale、 0 以下の場合 bytes-bytes/2^(-tcp_adv_win_scale)。 既定値:2 tcp_rfc1337 - 論理型 セットなら、TCP スタックは RFC1337 に従って振舞います。セット でなければ、RFC に従いませんが TCP TIME_WAIT asassination を防 ぎます。 既定値:0 ip_local_port_range - 二つの整数型 ローカルポートを選ぶときに TCP および UDP によって使われるロー カルポートの範囲を決めます。最初の数字はローカルポートの始めの 数、二番目の数字は最後の数です。既定値はシステム上で利用可能な メモリの量に依ります - 128Mb 以上 32768-61000 128Mb 未満 1024-4999 (もしくはもっと少ない) この数はこのシステムが TCP 拡張 (タイムスタンプ) をサポートし ていないシステムに同時に発行できる能動的なコネクションの数を決 めます。tcp_tw_recycle が有効 (つまりデフォルト) で、1024-4999 の範囲はタイムスタンプをサポートするシステムへ毎秒 2000 までコ ネクションを発行するのに十分です。 ip_nonlocal_bind - 論理型 セットなら、プロセスがローカルでない IP アドレスを bind() する ことを許可します。これはとても役立ちます - が、うまく動かない アプリケーションがあるかもしれません。 既定値:0 ip_dynaddr - 論理型 0 以外なら、動的 (dynamic) アドレスのサポートを有効にします。1 より大きい値ならば、動的アドレスの書き換えが起きた時に、カーネ ルログメッセージが出力されるでしょう。 既定値:0 icmp_echo_ignore_all - 論理型 icmp_echo_ignore_broadcasts - 論理型 どちらかを true に設定すると、カーネルは送られてくる ICMP ECHO request をすべて無視するか、それらのうちブロードキャストとマル チキャストだけ無視するか、それぞれどちらかの動作をします。 icmp_destunreach_rate - 整数型 icmp_paramprob_rate - 整数型 icmp_timeexceed_rate - 整数型 icmp_echoreply_rate - 整数型 (デフォルトで有効ではない) 特定の相手に対する ICMP パケットの送出レートの最大値を制限しま す。0 は無制限、それ以外は jiffies(1) にしたがったレートになり ます。詳しくはソースを参照してください。 icmp_ignore_bogus_error_responses - 論理型 いくつかのルータはブロードキャストフレームに対する偽物の応答を 送ることで RFC 1122 に違反しています。このような違反は普通カー ネルの警告 (warning) として記録されます。これが TRUE に設定さ れた場合、このような警告を出さず、ログファイルがみにくくなるの を防ぐことができます。 既定値:FALSE (1) Jiffies:カーネル内部のタイムユニット。i386 なら 1/100 秒、Alpha なら 1/1024 秒です。システムの正確な値が知りたい場合、 /usr/include/asm/param.h 内の HZ の定義を参照してください。 igmp_max_memberships - 整数型 予約できるマルチキャストグループの最大数を変更します。 既定値:20 conf/all/*: 設定はすべてのインターフェースに反映されます。 conf/interface/*: インターフェース毎に特別な設定を変更します。 log_martians - 論理型 有り得ないアドレスを持ったパケットをカーネルのログに記録します。 accept_redirects - 論理型 ICMP redirect message を受入れます。 既定値 TRUE (ホスト) FALSE (ルータ) forwarding - 論理型 このインターフェースの IP forwarding を有効にします。 mc_forwarding - 論理型 マルチキャストをルーティングします。カーネルは CONFIG_IP_MROUTE を設定しコンパイルされていることが必要で、さ らに、マルチキャストルーティングデーモンも必要になります。 proxy_arp - 論理型 proxy arp を行います。 shared_media - 論理型 RFC1620 shared media redirect を、ルータなら送り、ホストなら受 入れます。ip_secure_redirects を上書きします。 既定値 TRUE secure_redirects - 論理型 デフォルトゲートウェイリストに記載されたゲートウェイからの ICMP redirect message だけを受入れます。 既定値 TRUE send_redirects - 論理型 ルータなら redirect を送ります。既定値:TRUE。 bootp_relay - 論理型 ローカルネットワーク内のホストではあるがこのホスト宛てでないソー スアドレス 0.b.c.d を持ったパケットを受入れます。BOOTP リレー デーモンがこのようなパケットを捕まえフォワードすることを前提と します。 既定値 FALSE まだ実装されていません。 accept_source_route - 論理型 SRR オプションを持ったパケットを受入れます。 既定値 TRUE (ルータ) FALSE (ホスト) rp_filter - 論理型 1 - RFC1812 で指定された reversed path によるソースの妥当性確 認をします。シングルホームド [訳注;外部への経路をひとつし か持っていない] ホストとスタブネットワークルータ向けに推奨 されたオプションです。(RIP のような) 遅い信頼性のないプロ トコルを実行するもしくはスタティックルータを利用する (ルー プフリーでない) 複雑なネットワークの場合問題が起きることが あります。 0 - ソースの妥当性確認をしません。 既定値は 0 です。startip スクリプトの中で、これを有効にするディ ストリビューションもあるので注意してください。 著者:Alexey Kuznetsov 更新:Andi Kleen 日本語訳:野本浩一 校正:山田慎也さん 高城正平さん 水原さん 堀田倫英さん /proc/sys/net/ipv6/* 変数: IPv6 は tcp_* のようなグローバル変数を持っていません。ipv4/ 下の tcp_* 設定は IPv6 にも当てはまります [XXX?]。 conf/default/*: インターフェースに固有な既定値を変更します。 conf/all/*: すべてのインターフェースに固有な設定を変更します。 [XXX: 特別な機能が forwarding の他にあるかな?] conf/all/forwarding - 論理型 すべてのインターフェース間のグローバルな IPv6 forwarding を有 効にします。 ここで IPv4 と IPv6 は異なる動作をします - 例えばどのインター フェースがパケットを回送するか、どれが回送しないか、を制御する ために netfilter を使用しなければなりません。 さらにこれはすべてのインターフェースのフォワーディングに係わる ホスト/ルータ設定を指定された値にします。詳しくは以下を参照し てください。 これはグローバルフォワーディングと呼ばれます。 conf/interface/*: インターフェース毎に特別な設定を変更します。 ある設定での機能的な振る舞いはローカルフォワーディングが有効か 無効かにより異なります。 accept_ra - 論理型 Router Advertisement を受入れます - autoconfigure はこれを使用 します。 機能的な既定動作 - ローカルフォワーディングが無効なら、有効 ローカルフォワーディングが有効なら、無効 accept_redirects - 論理型 redirect を受入れます。 機能的な既定動作 - ローカルフォワーディングが無効なら、有効 ローカルフォワーディングが有効なら、無効 autoconf - 論理型 リンクのためのローカルアドレスに L2 ハードウェアアドレスを使用 する設定をします。 既定値:TRUE dad_transmits - 整数型 Duplicate Address Detection (重複アドレス検出) のプローブを送 出する回数。 既定値:1 forwarding - 論理型 インターフェースに固有なホスト/ルータの振舞いを設定します。 注記 - すべてのインターフェースで同じ設定にすることを推奨しま す - ルータ/ホストを混在するシナリオはやや珍しいことです。 FALSE: 既定値で、ホストの振舞いが想定されます。これは次のことを意味し ます。 1. IsRouter フラグは Neighbour Advertisement に設定されません。 2. 必要なら、Router Solicitation は送られます。 3. accept_ra が TRUE (既定値) なら、 Router Advertisement を受 入れます (そして autoconfiguration を行います)。 4. accept_redirects が TRUE (既定値) なら、Redirect を受入れ ます。 TRUE: ローカルフォワーディングが有効なら、ルータの振舞いが想定されま す。これは上記とまったく逆のことを意味します。 1. IsRouter フラグは Neighbour Advertisement に設定されます。 2. Router Solicitation は送られません。 3. Router Advertisement は無視されます。 4. Redirect は無視されます。 既定値:グローバルフォワーディングが無効なら (既定値) FALSE、 そうでなければ TRUE。 hop_limit - 整数型 デフォルトの Hop Limit を設定します。 既定値:64 mtu - 整数型 デフォルトの Maximum Transfer Unit。 既定値:1280 (IPv6 で必要な最小値) router_solicitation_delay - 整数型 インターフェースが起動されてから Router Solicitation を送るま で待つ秒数。 既定値:1 router_solicitation_interval - 整数型 Router Solicitation 間で待つ秒数。 既定値:4 router_solicitations - 整数型 ルータが存在しないと想定するまで Router Solicitation を送る回 数。 既定値:3 IPv6更新:Pekka Savola 日本語訳:野本浩一 校正:堀田倫英さん