Red Hat Training

A Red Hat training course is available for RHEL 8

34.13. TCP タイムスタンプの利点

TCP タイムスタンプは、TCP ヘッダー内のオプションの情報であり、TCP プロトコルの拡張機能です。Red Hat Enterprise Linux ではデフォルトで TCP タイムスタンプが有効になっており、カーネルは TCP タイムスタンプを使用して、TCP 接続のラウンドトリップ時間 (RTT) をより適切に推定します。これにより、TCP ウィンドウとバッファーの計算がより正確になります。

さらに、TCP タイムスタンプは、セグメントの寿命と順序を判断し、ラップされたシーケンス番号から保護するための代替方法を提供します。TCP パケットヘッダーは、32 ビットフィールドにシーケンス番号を記録します。10 Gbps 接続では、このフィールドの値は 1.7 秒後にラップされる可能性があります。TCP タイムスタンプがないと、受信側はラップされたシーケンス番号を持つセグメントが新しいセグメントか古い重複かを判断できません。ただし、TCP タイムスタンプを使用すると、受信側はセグメントを受信するか破棄するかを正しく選択できます。したがって、高速ネットワークインターフェイスを備えたシステムでは TCP タイムスタンプを有効にすることが不可欠です。

net.ipv4.tcp_timestamps カーネルパラメーターには、次のいずれかの値を指定できます。

  • 0: TCP タイムスタンプは無効化されています。
  • 1: TCP タイムスタンプは有効化されています (デフォルト)。
  • 2: TCP タイムスタンプは有効ですが、ランダムオフセットはありません。

    重要

    各接続のランダムなオフセットがなければ、ホストの大体の稼働時間とフィンガープリントを決定し、この情報を攻撃に使用することが可能です。

デフォルトでは、Red Hat Enterprise Linux では TCP タイムスタンプが有効になっており、現在の時刻のみを保存するのではなく、接続ごとにランダムなオフセットを使用します。

# sysctl net.ipv4.tcp_timestamps
net.ipv4.tcp_timestamps = 1

net.ipv4.tcp_timestamps パラメーターの値がデフォルト (1) と異なる場合は、設定したときと同じ方法で設定を元に戻します。