第5章 sysctl およびチューニング可能なカーネルの使用
5.1. チューニング可能なカーネルの概要
チューニング可能なカーネルを使用することで、Red Hat Enterprise Linux の起動時に、またはシステムを実行中にオンデマンドで動作をカスタマイズできます。ハードウェアのパラメーターによっては、起動時のみに指定され、システムが実行し始めると変更できないものもありますが、ほとんどの場合は必要に応じて変更でき、次の起動に向けてパーマネント設定ができます。
5.2. チューニング可能なカーネルの使用方法
チューニング可能なカーネルを修正するには、以下の 3 つの方法があります。
-
sysctlコマンドを使用する方法 -
/etc/sysctl.d/ディレクトリーで設定ファイルを手動で修正する方法 -
シェルを経由して、
/proc/sysにマウントされた仮想ファイルと相互作用する方法
すべての起動時パラメーターが sysfs サブシステムの制御下にあるわけではありません。いくつかのハードウェア固有のオプションは、カーネルのコマンドライン上に設定する必要がありますが、これらのオプションについては、本ガイドの Kernel Parameters セクションを参照してください。
5.2.1. sysctl コマンドの使用
sysctl コマンドを使用して、チューニング可能なカーネルを表示、読み取り、および設定します。表示または読み取りの際のチューニング可能なカーネルのフィルター、そしてチューニング可能なカーネルの一時的または永続的な設定が可能となります。
変数の表示
# sysctl -a
変数の読み取り
# sysctl kernel.version + kernel.version = #1 SMP Fri Jan 19 13:19:54 UTC 2018
変数の一時的な書き込み
# sysctl <tunable class>.<tunable>=<value>
変数の永続的な書き込み
# sysctl -w <tunable class>.<tunable>=<value>
5.2.2. /etc/sysctl.d 内のファイルの変更
起動時にデフォルトをオーバーライドするには、手動で /etc/sysctl.d にファイルを追加することも可能です。
/etc/sysctl.dに新しいファイルを作成します。# vim /etc/sysctl.d/99-custom.conf
以下の形式で、設定したい変数を 1 行に 1 つずつ入れていきます。
<tunable class>.<tunable> = <value> + <tunable class>.<tunable> = <value>
- ファイルを保存します。
-
変更を有効にするためにマシンを再起動するか、
または
sysctl -p /etc/sysctl.d/99-custom.confを実行して再起動せずに変更を適用します。
5.3. 制御可能なチューニング可能なもの
チューニング可能なものは、カーネルのサブシステムによっていくつかのグループに分けられます。Red Hat Enterprise Linux システムにおけるチューニング可能なものには、以下のクラスがあります。
表5.1 sysctl インターフェースの表
| クラス | サブシステム |
|---|---|
|
abi |
実行ドメインおよびパーソナリティー |
|
crypto |
暗号化インターフェース |
|
debug |
カーネルのデバッグインターフェース |
|
dev |
デバイスの詳細 |
|
fs |
グローバルおよび固有のチューニング可能なファイルシステム |
|
kernel |
グローバルなチューニング可能なカーネル |
|
net |
チューニング可能なネットワーク |
|
sunrpc |
Sun Remote Procedure Call (NFS) |
|
user |
ユーザー名前空間の制限 |
|
vm |
メモリー、バッファー、およびキャッシュのチューニングと管理 |
5.3.1. チューニング可能なネットワークインターフェース
システム管理者は、チューニング可能なネットワークを経由して実行中のシステムのネットワーク設定を変更できます。
チューニング可能なネットワークは、/proc/sys/net ディレクトリーにあります。このディレクトリーには、さまざまなネットワークトピックに関する複数のサブディレクトリーが格納されています。システム管理者はこれらのサブディレクトリー内のファイルを変更し、ネットワーク設定を調整する必要があります。
以下は、最も頻繁に使用されるディレクトリーです。
-
/proc/sys/net/core/ -
/proc/sys/net/ipv4/
/proc/sys/net/core/ ディレクトリーには、カーネルとネットワーク層との間の相互作用を制御するさまざまな設定が格納されています。これらのチューニング可能なものをいくつか調整することで、システムのパフォーマンスを向上させることが可能です。たとえば、受信キューのサイズを増加したり、ネットワークインターフェース専用の接続およびメモリーの最大値を上げたりすることで、パフォーマンスを向上させることができます。システムのパフォーマンスは、個々の問題のさまざまな側面に左右されることに留意してください。
/proc/sys/net/ipv4/ ディレクトリーには、追加のネットワーク設定が格納されています。これは、システムに対する攻撃を防止したり、システムをルーターとして機能させるように使用している場合に役立ちます。ディレクトリーには、IP および TCP の両方の変数が格納されています。これらの変数に関する詳細は /usr/share/doc/kernel-doc-<version>/Documentation/networking/ip-sysctl.txt を参照してください。
/proc/sys/net/ipv4/ ディレクトリー内のその他のディレクトリーは、ネットワークスタックのさまざまな側面を扱っています。
-
/proc/sys/net/ipv4/conf/- 各システムインターフェースを異なる方法で設定できるようにします。これには、未設定のデバイス用のデフォルト設定の使用や、すべての特殊設定をオーバーライドする設定が含まれます。 -
/proc/sys/net/ipv4/neigh/- システムに直接接続されたホストとの通信のための設定や、1 ステップ以上離れたシステム用の異なる設定も含まれています。 -
/proc/sys/net/ipv4/route/- システム上の任意のインターフェースとのルーティングに適用される指定値が格納されています。
チューニング可能なネットワークのリストは IPv4 インターフェースと関係があり、/proc/sys/net/ipv4/{all,<interface_name>}/ ディレクトリーからアクセスできます。
- log_martians
カーネルログに無効なアドレスを持つパケットをログします。
タイプ デフォルト ブール値
0
1 つ以上の
conf/{all,interface}/log_martiansが TRUE に設定されている場合に有効です。
Further Resources
- accept_redirects
ICMP のリダイレクトメッセージを受信します。
タイプ デフォルト ブール値
1
インターフェース用の accept_redirects が、以下の条件下で有効となります。
-
conf/{all,interface}/accept_redirectsが両方とも TRUE の場合 (インターフェースへの転送が有効な場合) -
conf/{all,interface}/accept_redirectsのうち少なくとも 1 つが TRUE の場合 (インターフェースへの転送は無効)
Further Resources
-
- 転送
インターフェース上で IP 転送を有効にします。
タイプ デフォルト ブール値
0
Further Resources
- mc_forwarding
マルチキャストルーティングを実施します。
タイプ デフォルト ブール値
0
- 読み取り専用値
- マルチキャストルーティングのデーモンが必要です。
-
インターフェース用にマルチキャストルーティングを有効にするためには
conf/all/mc_forwardingも TRUE に設定する必要があります。
Further Resources
- medium_id
接続しているメディアがデバイスを区別するために使用する任意の値です。
タイプ デフォルト 整数
0
注記
- 同じメディア上の 2 つのデバイスにおいて、このうちの 1 つでしかブロードキャストパケットが 受信されない場合、2 つのデバイスの id 値が異る可能性があります。
- デフォルト値の 0 は、メディアに対してそのデバイスが唯一のインターフェースであることを意味します。
- 値が -1 の場合、メディアが不明であることを示します。
- 現在は、proxy_arp の動作を変更するために使用されています。
- proxy_arp の機能は、異るメディアに接続された 2 つのデバイスの間で転送されたパケット用に有効となります。
Further Resources - たとえば、「Using the "medium_id" feature in Linux 2.2 and 2.4」 を参照してください。
- proxy_arp
Proxy ARP の実行
タイプ デフォルト ブール値
0
conf/{all,interface}/proxy_arpのうち少なくとも 1 つが TRUE に設定されている場合、インターフェース用の proxy_arp は有効です。そうでない場合は無効です。
- proxy_arp_pvlan
プライベート VLAN Proxy ARP
タイプ デフォルト ブール値
0
RFC 3069 などの機能をサポートするために、Proxy ARP が同じインターフェースに応答できるようにします。
- secure_redirects
インターフェースの現在のゲートウェイリストにリストされているゲートウェイに対する ICMP リダイレクトメッセージのみを受信します。
タイプ デフォルト ブール値
1
注記
- 無効となった場合でも、RFC1122 リダイレクトルールが引き続き適用されます。
- shared_media によってオーバーライドされます。
-
conf/{all,interface}/secure_redirectsのうち少なくとも 1 つが TRUE に設定されている場合、インターフェース用の secure_redirects は有効となります。
- send_redirects
ルーターの場合、リダイレクトを送信します。
タイプ デフォルト ブール値
1
注記
conf/{all,interface}/send_redirectsのうち少なくとも 1 つが TRUE に設定されている場合、インターフェース用の send_redirects が有効となります。
- bootp_relay
ローカル用としてこのホストに予定されていないソースアドレス 0.b.c.d のパケットを受信します。
タイプ デフォルト ブール値
0
注記
- これらのパケットを管理するために BOOTP デーモンを有効にする必要があります。
-
インターフェース用に BOOTP リレーを有効にするために
conf/all/bootp_relayも TRUE に設定する必要があります。 - 実装されていない場合は、『Red Hat Enterprise Linux ネットワークガイド』の 「DHCP リレーエージェント」 を参照してください。
- accept_source_route
SRR オプションのあるパケットを受信します。
タイプ デフォルト ブール値
1
注記
-
インターフェース上の SRR オプションのあるパケットを受信するために、
conf/all/accept_source_routeも TRUE に設定する必要があります。
-
インターフェース上の SRR オプションのあるパケットを受信するために、
- accept_local
ローカルソースアドレスのあるパケットを受信します。
タイプ デフォルト ブール値
0
注記
- これは、適切なルーティングとのコンビネーションにて、2 つのローカルインターフェース間のパケットをワイヤー上で移動し、適切に受信させるために使用することができます。
-
accept_local に効果をもたらすためには、
rp_filterをゼロ以外の値に設定する必要があります。
- route_localnet
ルーティング中は、ループバックアドレスを martian ソースまたは宛先として考慮しません。
タイプ デフォルト ブール値
0
注記
- これにより、ローカルルーティング目的での 127/8 の使用が有効となります。
- rp_filter
ソースの検証を有効化
タイプ デフォルト 整数
0
値 効果 0ソースの検証はありません。
1RFC3704 厳密な逆方向パスで定義された厳密モード
2RFC3704 緩やかな逆方向パスで定義された緩やかなモード
注記
- RFC3704 における現在の推奨プラクティスは、DDos 攻撃による IP スプーフィングを回避するために厳密モードを有効にすることです。
- 非対称のルーティングまたは別の複雑なルーティングを使用する場合は、緩やかなモードが推奨されます。
-
{interface} でソースの検証を行う際、
conf/{all,interface}/rp_filterの中の最大値が使用されます。
- arp_filter
タイプ デフォルト ブール値
0
値 効果 0(デフォルト) カーネルは、別のインターフェースからのアドレスの ARP 要求に対応できます。正常な通信の可能性を向上させるので、通常は理にかなっています。
1同じサブネットで複数のネットワークインターフェースを持つことを可能にします。また、カーネルがインターフェースから ARP 要求 の IP パケットをルーティングするかどうかに基づいて、各インターフェースの ARP が応答できるようにします (したがって、これを機能させるためにはソースベースのルーティングを使用する必要があります)。つまり、ARP 要求に応答するカード (通常は 1) の制御が可能となります。
注記
- IP アドレスは、特定のインターフェースではなく、Linux の完全なホストが所有します。この動作が問題を起こすのは、負荷分散などのより複雑なセットアップの場合だけです。
-
conf/{all,interface}/arp_filterのうち少なくとも 1 つが TRUE に設定されている場合、インターフェース用のarp_filterは有効となります。
- arp_announce
インターフェース上に送信された ARP 要求の IP パケットからローカルソースの IP アドレスを発表するための異る制限レベルを定義します。
タイプ デフォルト 整数
0
値 効果 0(デフォルト) 任意のインターフェース上に設定された任意のローカルアドレスを使用します。
1このインターフェースでは、出力先のサブネットにないローカルアドレスは使用しないようにします。このインターフェースを経由してアクセス可能な出力先ホストが 、ARP 要求のソース IP アドレスが受信側インターフェース上に設定されるロジカルなネットワークの一環となるよう要求した場合、このモードは役立ちます。要求を生成する際、出力先 IP を含むすべてのサブネットを確認し、そのようなサブネットからのソースアドレスである場合は保持します。そのようなサブネットがない場合は、レベル 2 のルールにしたがってソースアドレスを選択します。
2この出力先には常に最適のローカルアドレスを使用します。このモードでは、IP パケットのソースアドレスを無視し、出力先ホストとの対話には好みのローカルアドレスを選択するようにします。このようなローカルアドレスは、出力先 IP アドレスを含む発信インターフェース上のすべてのサブネット上にある主要な IP アドレスを探すことで選択されます。適切なローカルアドレスが見つからない場合は、発信インターフェース上またはその他すべてのインターフェース上にある最初のローカルアドレスを選択します。この時、アナウンスするソース IP アドレスに関係なく、要求に対する応答があることを期待します。
注記
-
conf/{all,interface}/arp_announceの中の最大値が使用されます。 - 制限レベルを上げると、解決済み出力先から応答がある可能性が高くなり、制限レベルを下げると、より有効な送信者情報をアナウンスします。
-
- arp_ignore
受信した ARP 要求に対して応答するさまざまなモードを定義します。この ARP 要求は、ローカル出力先 IP アドレスを解決するものです。
タイプ デフォルト 整数
0
値 効果 0(デフォルト): 任意のインターフェース上に設定された任意のローカル出力先 IP アドレスに応答します。
1出力先 IP アドレスが受信インターフェース上で設定されたローカルアドレスの場合にのみ応答します。
2出力先 IP アドレスが受信インターフェース上で設定されたローカルアドレスで、送信者の IP アドレスと出力先 IP アドレスの両方がこのインターフェース上の同じサブネットの一部である場合にのみ応答します。
3スコープホストで設定されたローカルアドレスには応答しません。グローバルおよびリンク用のアドレス解決のみに応答します。
4-7予備
8ローカルアドレスの場合はすべて、応答しません。{interface} 上で ARP 要求が受信された際に conf/{all,interface}/arp_ignore の最大値が使用されます。
注記
- arp_notify
アドレスおよびデバイスの変更を通知するモードを定義します。
タイプ デフォルト ブール値
0
値 効果 0
何もしません。
1
デバイスの停止またはハードウェアのアドレス変更の際、余計な ARP 要求を生成します。
注記
- arp_accept
IP がまだ ARP テーブルに存在しない余計な ARP フレームの動作を定義します。
タイプ デフォルト ブール値
0
値 効果 0
ARP テーブルに新しいエントリーを作成しません。
1
ARP テーブルに新しいエントリーを作成します。
注記
この設定がオンの場合、応答および要求の両タイプの余計な ARP が、ARP テーブルをアップデートするようトリガーします。ARP テーブルが余計な ARP フレームの IP アドレスをすでに格納している場合、この設定がオンまたはオフであることに関係なく、ARP テーブルがアップデートされます。
- app_solicit
マルチキャストプローブへドロップバックする前にネットリンクを経由してユーザー空間の ARP デーモンに送信するプローブの最大数 (mcast_solicit を参照してください)。
タイプ デフォルト 整数
0
注記
mcast_solicit を参照してください。
- disable_policy
このインターフェースの IPSEC ポリシー (SPD) を無効にします。
タイプ デフォルト ブール値
0
needinfo
- disable_xfrm
いかなるポリシーであろうと、このインターフェースの IPSEC 暗号化を無効にします。
タイプ デフォルト ブール値
0
needinfo
- igmpv2_unsolicited_report_interval
次の未承諾の IGMPv1 または IGMPv2 レポートの再送信が実行されるミリ秒単位の間隔。
タイプ デフォルト 整数
10000
注記
ミリ秒
- igmpv3_unsolicited_report_interval
次の未承諾の IGMPv3 レポートの再送信が実行されるミリ秒単位の間隔。
タイプ デフォルト 整数
1000
注記
ミリ秒
- tag
必要に応じて使用可能な数字の書き込みが可能です。
タイプ デフォルト 整数
0
needinfo
- xfrm4_gc_thresh
IPv4 宛先キャッシュエントリー用のガベージコレクションを開始するしきい値。
タイプ デフォルト 整数
1
注記
この値が 2 倍になると、システムは新しい割り当てを拒否します。

Where did the comment section go?
Red Hat's documentation publication system recently went through an upgrade to enable speedier, more mobile-friendly content. We decided to re-evaluate our commenting platform to ensure that it meets your expectations and serves as an optimal feedback mechanism. During this redesign, we invite your input on providing feedback on Red Hat documentation via the discussion platform.