Linuxのnetstatコマンドをマスターする:基本から高度なネットワーク監視まで

LightNode
By LightNode ·

はじめに

netstat(ネットワーク統計)コマンドは、Linuxシステム管理者にとって欠かせないネットワークツールの1つです。この多機能なコマンドラインユーティリティは、ネットワーク接続、ルーティングテーブル、インターフェース統計など、ネットワーク関連の重要な情報を包括的に提供します。

netstatとは?

netstatは、以下のようなネットワーク関連情報を表示するコマンドラインユーティリティです:

  • ネットワーク接続(受信および送信)
  • ルーティングテーブル
  • ネットワークインターフェースの統計
  • マスカレード接続
  • マルチキャストメンバーシップ
  • プロトコル統計

なぜ重要なのか

システム管理者やネットワークエンジニアは、netstatを以下のような重要な作業で活用します:

  1. ネットワーク問題のトラブルシューティング - 接続問題やネットワークボトルネックを迅速に特定
  2. セキュリティ監視 - 不正なネットワーク接続や疑わしい活動の検出
  3. パフォーマンス分析 - ネットワークトラフィックパターンやインターフェース統計の監視
  4. システム監査 - アクティブなサービスや開いているポートの確認

簡単な歴史

netstatコマンドは、Unixシステムの初期からTCP/IPネットワーキングツールキットの一部として存在しています。BSD Unixで誕生したこのツールは、Linuxを含むさまざまなUnix系オペレーティングシステムで標準ツールとして進化を遂げました。

現在では、新しいツールであるssコマンドに取って代わられつつありますが、netstatは以下の理由で広く使用されています:

  • システム管理者に馴染みがある
  • 多くのUnix系システムで利用可能
  • 機能が豊富で詳細な出力オプションがある
  • 豊富なドキュメントとコミュニティサポートがある

基本的な構文と使用法

コマンド形式

netstatコマンドの基本的な構文は以下の通りです:

netstat [options]


### よく使われるオプションとフラグ

以下は、`netstat`コマンドで頻繁に使用されるオプションの一覧です:

<table>
  <thead>
    <tr>
      <th>オプション</th>
      <th>説明</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>-a</td>
      <td>すべてのリスニングポートとアクティブな接続を表示</td>
    </tr>
    <tr>
      <td>-t</td>
      <td>TCP接続を表示</td>
    </tr>
    <tr>
      <td>-u</td>
      <td>UDP接続を表示</td>
    </tr>
    <tr>
      <td>-n</td>
      <td>ホスト名やポート名を解決せずに数値アドレスを表示</td>
    </tr>
    <tr>
      <td>-l</td>
      <td>リスニングソケットのみを表示</td>
    </tr>
    <tr>
      <td>-p</td>
      <td>PIDとプログラム名を表示</td>
    </tr>
    <tr>
      <td>-r</td>
      <td>ルーティングテーブルを表示</td>
    </tr>
    <tr>
      <td>-i</td>
      <td>ネットワークインターフェースの統計情報を表示</td>
    </tr>
    <tr>
      <td>-s</td>
      <td>プロトコルの統計情報を表示</td>
    </tr>
  </tbody>
</table>



### 基本的な例

1. **すべてのアクティブな接続を表示**
```bash
netstat -a
  1. すべてのTCP接続を表示
netstat -at
  1. プログラム情報付きでリスニングポートを表示
sudo netstat -tulnp

この組み合わせは特によく使用されます:

  • -t: TCP接続
  • -u: UDP接続
  • -l: リスニングポートのみ
  • -n: 数値アドレス
  • -p: プログラム情報
  1. ルーティングテーブルを確認
netstat -r
  1. インターフェース統計情報を表示
netstat -i

出力の理解

典型的なnetstat出力には、以下のような列が含まれます:

  • Proto: プロトコル(TCP, UDP)
  • Recv-Q: 受信キューにあるデータ
  • Send-Q: 送信キューにあるデータ
  • Local Address: 接続のローカルエンドポイント
  • Foreign Address: 接続のリモートエンドポイント
  • State: 接続の状態(LISTEN, ESTABLISHED など)

netstat -tanコマンドの出力例:

Proto Recv-Q Send-Q Local Address          Foreign Address        State
tcp        0      0 0.0.0.0:22            0.0.0.0:*             LISTEN
tcp        0      0 127.0.0.1:631         0.0.0.0:*             LISTEN
tcp        0      0 192.168.1.5:22        192.168.1.100:52614   ESTABLISHED

表示オプション

すべての接続をリスト表示

  1. すべてのプロトコルを数値アドレスで表示
netstat -an
  1. 拡張情報を表示
netstat -ae
  1. タイマー情報を表示
netstat -o

プロトコル別表示

  1. TCPのみ
# すべてのTCP接続を表示(リスニングポートを含む)
netstat -at

# リスニング中のTCPポートのみを表示
netstat -lt
  1. UDPのみ
# すべてのUDP接続を表示
netstat -au

# リスニング中のUDPポートのみを表示
netstat -lu
  1. Unixドメインソケット
# Unixドメインソケットを表示
netstat -x

出力フォーマットオプション

数値での表示

# 完全な数値出力(名前解決なし)
netstat -n

# 他のオプションと組み合わせ
netstat -ant  # TCP接続を数値アドレスで表示

数値表示の利点:

  • 実行速度が速い
  • DNSルックアップなし
  • DNS関連の問題が発生しても信頼性が高い

拡張情報の表示

# プロセス情報を表示
sudo netstat -p

# ユーザーとプロセス情報を表示
sudo netstat -ep

# ネットワークインターフェースの統計情報を拡張表示
netstat -ie

連続的な表示

# 2秒ごとに更新
netstat -c

# 他のオプションと組み合わせて連続監視
netstat -ct  # TCP接続の連続監視

統計情報の表示

  1. プロトコル統計
# すべてのプロトコルの要約統計を表示
netstat -s

# TCP統計のみを表示
netstat -st

# UDP統計のみを表示
netstat -su
  1. インターフェース統計
# インターフェースの統計を表示
netstat -i

# 拡張インターフェース情報を表示
netstat -ie

インターフェース統計の出力例:

Iface    MTU   RX-OK RX-ERR RX-DRP RX-OVR   TX-OK TX-ERR TX-DRP TX-OVR Flg
eth0    1500  158426      0      0      0   88573      0      0      0 BMRU
lo     65536   24846      0      0      0   24846      0      0      0 LRU

項目の説明:

  • RX: 受信統計
  • TX: 送信統計
  • OK: 正常に処理されたパケット数
  • ERR: エラーの数
  • DRP: ドロップされたパケット
  • OVR: オーバーランイベント

一般的なユースケース

ネットワークトラブルシューティング

開いているポートの確認

  1. システム上のすべてのオープンポートを確認
sudo netstat -tulpn | grep LISTEN

このコマンドで以下を特定可能:

  • 実行中のサービス
  • 使用中のポート
  • ポートを所有するプロセス
  1. 特定のポートが使用中か確認
sudo netstat -tulpn | grep ":80"    # Webサーバーを確認
sudo netstat -tulpn | grep ":3306"  # MySQLを確認

アクティブな接続の特定

  1. 現在の接続を監視
# 確立されたすべての接続を表示
netstat -nat | grep ESTABLISHED

# IPアドレスごとの接続数をカウント
netstat -nat | grep ESTABLISHED | awk '{print $5}' | cut -d: -f1 | sort | uniq -c
  1. 接続状態の追跡
# 接続状態の分布を確認
netstat -ant | awk '{print $6}' | sort | uniq -c

ネットワークトラフィックの監視

  1. インターフェースのトラフィック分析
# インターフェース統計をリアルタイムで監視
netstat -i
watch -n 1 "netstat -i"
  1. プロトコル別の監視
# TCPトラフィック統計を監視
netstat -st

# UDPトラフィック統計を監視
netstat -su

セキュリティ分析

不審な接続の特定

  1. 不審なポートを検出
# 非標準ポートのリスニング状況を一覧表示
sudo netstat -tulpn | grep -v ":22\|:80\|:443"
  1. 不審な接続パターンを確認
# 想定外のIPアドレスからの接続を確認
netstat -ant | grep ESTABLISHED | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -rn

ポートスキャン検出

# 複数回の接続試行を確認
netstat -ant | grep SYN_RECV | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr

システム監査

  1. サービスの検証
# 各プロセスがどのポートでリスニングしているか確認
sudo netstat -tulpn | grep LISTEN | sort -k 4
  1. 接続のログ作成
# 簡易接続ログの作成
while true; do
    date >> connection_log.txt
    netstat -ant >> connection_log.txt
    sleep 60
done
  1. リソース使用状況の監視
# サービスごとの接続数を監視
netstat -ant | grep ESTABLISHED | awk '{print $4}' | cut -d: -f2 | sort | uniq -c

よくあるトラブルシューティングのシナリオ

  1. Webサーバーの問題
# Webサーバー接続を確認
sudo netstat -ant | grep ":80\|:443" | awk '{print $6}' | sort | uniq -c
  1. データベース接続の問題
# データベース接続を監視(MySQLの例)
sudo netstat -ant | grep :3306 | awk '{print $6}' | sort | uniq -c
  1. メールサーバーの分析
# メールサーバー接続を確認
sudo netstat -ant | grep ":25\|:465\|:587" | awk '{print $6}' | sort | uniq -c

高度な使い方

他のコマンドとの組み合わせ

grep と awk を使用

  1. 複雑なフィルタリングと分析
# 状態とポートごとの接続数をカウント
netstat -ant | awk '{print $6, $4}' | sort | uniq -c | sort -rn

# 特定サービスの接続をリアルタイムで監視
watch -n 1 'netstat -ant | grep ":80" | wc -l'
  1. 高度な接続分析
# 接続サマリーを作成
netstat -ant | \
awk '{ip[$5]++} END {for (i in ip) print ip[i],i}' | \
sort -nr | head -n 10

他ツールへのパイプ処理

# tee を使用したログ出力
netstat -ant | tee network_status.log

# xargs を使用したプロセス管理
netstat -tulpn | grep LISTEN | awk '{print $7}' | cut -d/ -f1 | xargs ps -f

スクリプトと自動化

基本的な監視スクリプト

#!/bin/bash

LOG_FILE="/var/log/network_monitor.log"

monitor_connections() {
    echo "=== ネットワーク状態レポート ===" >> $LOG_FILE
    date >> $LOG_FILE
    echo "アクティブ接続数:" >> $LOG_FILE
    netstat -ant | grep ESTABLISHED | wc -l >> $LOG_FILE
    echo "リスニングポート:" >> $LOG_FILE
    netstat -tulpn | grep LISTEN >> $LOG_FILE
    echo "=========================" >> $LOG_FILE
}

# 5分ごとに実行
while true; do
    monitor_connections
    sleep 300
done

高度な分析スクリプト

#!/bin/bash

analyze_network() {
    echo "=== ネットワーク分析 ==="
    
    echo -e "\n接続数トップ10のIPアドレス:"
    netstat -ant | grep ESTABLISHED | \
    awk '{print $5}' | cut -d: -f1 | \
    sort | uniq -c | sort -rn | head -n 10
    
    echo -e "\n接続状態の概要:"
    netstat -ant | awk '{print $6}' | \
    sort | uniq -c | sort -rn
    
    echo -e "\nポート使用状況:"
    netstat -ant | awk '{print $4}' | \
    cut -d: -f2 | sort | uniq -c | sort -rn | head -n 10
}

# タイムスタンプ付きでファイルに保存
analyze_network | tee -a "network_analysis_$(date +%Y%m%d_%H%M%S).log"


### パフォーマンスモニタリング

#### リソース使用状況の追跡
1. **CPUとメモリの影響**
```bash
# netstatのリソース使用状況を監視
while true; do
    ps aux | grep netstat | grep -v grep
    sleep 1
done
  1. ネットワークインターフェースのパフォーマンス
#!/bin/bash
# インターフェースのスループットを監視
INTERVAL=1
INTERFACE="eth0"

while true; do
    R1=$(cat /sys/class/net/$INTERFACE/statistics/rx_bytes)
    T1=$(cat /sys/class/net/$INTERFACE/statistics/tx_bytes)
    sleep $INTERVAL
    R2=$(cat /sys/class/net/$INTERFACE/statistics/rx_bytes)
    T2=$(cat /sys/class/net/$INTERFACE/statistics/tx_bytes)
    
    RBPS=$(( ($R2 - $R1) / $INTERVAL ))
    TBPS=$(( ($T2 - $T1) / $INTERVAL ))
    
    echo "インターフェース $INTERFACE:"
    echo "受信: $(($RBPS/1024)) KB/s"
    echo "送信: $(($TBPS/1024)) KB/s"
    echo "------------------------"
done

長期モニタリングソリューション

#!/bin/bash
# 毎時ネットワーク統計レポートを生成

LOGDIR="/var/log/netstat_reports"
mkdir -p $LOGDIR

generate_report() {
    TIMESTAMP=$(date +%Y%m%d_%H)
    REPORT="$LOGDIR/netstat_report_$TIMESTAMP.log"
    
    echo "ネットワークレポート - $(date)" > $REPORT
    echo "=========================" >> $REPORT
    
    echo "接続の概要:" >> $REPORT
    netstat -s >> $REPORT
    
    echo "インターフェース統計:" >> $REPORT
    netstat -i >> $REPORT
    
    echo "現在の接続:" >> $REPORT
    netstat -ant >> $REPORT
}

# レポート生成を実行
generate_report

統合のヒント

  1. システムモニタリングと組み合わせる
# システムモニタリングスクリプトに追加
if [ $(netstat -ant | grep ESTABLISHED | wc -l) -gt 100 ]; then
    echo "接続数が高い状態を検出" | mail -s "ネットワーク警告" [email protected]
fi
  1. カスタムレポート機能
network_summary() {
    local port="$1"
    echo "ポート $port 上の接続:"
    netstat -ant | grep ":$port" | awk '{print $6}' | sort | uniq -c
}

# 使用例: network_summary 80

netstat の代替ツール

ss コマンド

ss (Socket Statistics) は、Linuxシステムにおけるnetstatのモダンな代替ツールです。一般的にnetstatより高速で、多機能です。

ss の主な利点

  • 多数の接続があるシステムでも高速
  • 詳細なソケット情報を提供
  • 新しいプロトコルへの対応が優れている
  • システムリソースの使用が少ない

netstat との比較

# netstat コマンド vs ss の同等コマンド

# すべての接続を表示
netstat -a
ss

# リスニングTCPポートを表示
netstat -tln
ss -tln

# プロセス情報を表示
netstat -p
ss -p

# 統計を表示
netstat -s
ss -s

ss の使用例

# 詳細なソケット情報を表示
ss -i

# タイマー情報を表示
ss -o

# メモリ使用量を表示
ss -m

# 状態でフィルタリング
ss state established

# ポートでフィルタリング
ss sport = :80

モダンな代替ツール

lsof (List Open Files)

# ネットワーク接続を表示
lsof -i

# リスニングポートを表示
lsof -i -P -n | grep LISTEN

# 確立された接続を表示
lsof -i | grep ESTABLISHED

nmap

# 開いているポートをスキャン
nmap localhost

# 詳細なポートスキャン
nmap -sV localhost

iptraf-ng

  • リアルタイムのIPトラフィックモニタリング
  • 詳細なプロトコル統計
  • インターフェース統計
  • LANステーションモニター

適切なツールの選び方

netstat を使う場合:

  • 古いシステムで作業する
  • クロスプラットフォームの互換性が必要
  • 既存のドキュメントに従う
  • シンプルなネットワーク診断を実行する

ss を使う場合:

  • モダンなLinuxシステムで作業する
  • 高速な実行が必要
  • 多数の接続を処理する
  • 詳細なソケット情報が必要

lsof を使う場合:

  • ファイルディスクリプタ情報を確認したい
  • ネットワーク接続とプロセスを関連付ける
  • アプリケーションの問題をトラブルシュートする

nmap を使う場合:

  • セキュリティ監査を実行する
  • 詳細なポートスキャンが必要
  • ネットワークサービスを分析する

移行ガイド

netstat から ss への移行

netstat コマンドss コマンド説明
netstat -tss -tTCP接続を表示
netstat -uss -uUDP接続を表示
netstat -lss -lリスニングソケットを表示
netstat -pss -pプロセス情報を表示
netstat -nss -n名前解決を無効化
netstat -assすべてのソケットを表示
netstat -rip routeルーティングテーブルを表示

スクリプト移行の例

# 旧netstatスクリプト
#!/bin/bash
netstat -tulpn | grep LISTEN > listening_ports.log

# 新しいss相当スクリプト
#!/bin/bash
ss -tulpn | grep LISTEN > listening_ports.log

ツール選択のヒント

  1. パフォーマンスの考慮
  • 大規模システムの場合: ss を使用
  • 基本的な確認の場合: どちらでも可
  • 詳細分析の場合: 複数ツールを組み合わせる
  1. 互換性の問題
# ss が利用可能かを確認
if command -v ss >/dev/null 2>&1; then
    ss -tulpn
else
    netstat -tulpn
fi
  1. 必要な機能に基づいて選択
  • 基本的なモニタリング: netstat または ss
  • セキュリティ分析: nmap
  • プロセス関連付け: lsof
  • リアルタイムモニタリング: iptraf-ng

ベストプラクティスとヒント

パフォーマンスの考慮

コマンド使用の最適化

  1. 数値出力を使用
# 遅い (DNS解決あり)
netstat -ta

# 高速 (DNS解決なし)
netstat -tan
  1. 出力サイズを制限
# すべての接続を表示する代わりに
netstat -a

# 特定の情報をフィルタリング
netstat -an | grep ':80'
  1. 継続的なポーリングを避ける
# ビジーシステムには非推奨
netstat -c

# より良いアプローチ: 制御された間隔で実行
while true; do
    netstat -an | grep ESTABLISHED
    sleep 5
done

よくある落とし穴

リソース使用の問題

  • 問題: 名前解決中のCPU負荷が高い
# 問題のあるコマンド
watch -n 1 'netstat -ta'

# より良い代替案
watch -n 1 'netstat -tan'

権限の問題

  • 問題: プロセス情報が不足
# 情報が不完全になる
netstat -p

# 正しい使用方法
sudo netstat -p

出力の解釈

  • 問題: 接続状態の誤解
# TIME_WAITの誤解を防ぐ
netstat -ant | grep TIME_WAIT

# 状態ごとの詳細な分析
netstat -ant | awk '{print $6}' | sort | uniq -c

日常使用のヒント

便利なエイリアスの作成

# ~/.bashrc に追加
alias ns='netstat -tulpn'
alias nsc='netstat -ant | grep ESTABLISHED'
alias nsl='sudo netstat -tulpn | grep LISTEN'

クイックセキュリティチェック

# 異常なリスニングポートを確認
check_ports() {
    echo "既知のポート:"
    sudo netstat -tulpn | grep -E ':22|:80|:443'
    echo -e "\n不明なポート:"
    sudo netstat -tulpn | grep -vE ':22|:80|:443'
}

モニタリングテンプレート

# 接続モニタリングテンプレート
monitor_connections() {
    local port=$1
    local threshold=$2
    
    count=$(netstat -an | grep ":$port" | grep ESTABLISHED | wc -l)
    if [ $count -gt $threshold ]; then
        echo "警告: ポート$portの接続数$countがしきい値$thresholdを超えました"
    fi
}

# 使用例: monitor_connections 80 100

ドキュメントとログ作成

有用なログの作成

#!/bin/bash
# ネットワークステータスロガー

log_network_status() {
    local logfile="/var/log/network_status.log"
    local timestamp=$(date '+%Y-%m-%d %H:%M:%S')
    
    {
        echo "=== $timestamp 時点のネットワークステータス ==="
        echo "リスニングポート:"
        netstat -tulpn | grep LISTEN
        echo "現在の接続状況:"
        netstat -ant | awk '{print $6}' | sort | uniq -c
        echo "=================================="
    } >> "$logfile"
}

標準運用手順

# 定期チェックテンプレート
daily_network_check() {
    echo "1. リスニングポートの確認..."
    sudo netstat -tulpn | grep LISTEN
    
    echo "2. 確立された接続の確認..."
    netstat -ant | grep ESTABLISHED | wc -l
    
    echo "3. 接続状態の確認..."
    netstat -ant | awk '{print $6}' | sort | uniq -c
    
    echo "4. インターフェース統計の確認..."
    netstat -i
}

トラブルシューティングガイドライン

  1. 接続問題
connection_troubleshoot() {
    local port=$1
    echo "=== ポート$port の接続トラブルシューティング ==="
    echo "1. ポートがリスニングしているか確認:"
    sudo netstat -tulpn | grep ":$port"
    
    echo "2. アクティブな接続の確認:"
    netstat -ant | grep ":$port" | awk '{print $6}' | sort | uniq -c
    
    echo "3. 接続状態の確認:"
    netstat -ant | grep ":$port" | awk '{print $6}' | sort | uniq -c
}
  1. システムリソースモニタリング
resource_check() {
    echo "=== システムリソースチェック ==="
    echo "1. 総接続数:"
    netstat -ant | wc -l
    
    echo "2. IPアドレスごとの接続数:"
    netstat -ant | grep ESTABLISHED | \
    awk '{print $5}' | cut -d: -f1 | \
    sort | uniq -c | sort -nr | head -5
    
    echo "3. ネットワークプロセスのメモリ使用量:"
    ps aux | grep -E 'netstat|ss' | grep -v grep
}

Linux Netstat Command

よくある質問 (FAQ)

Q: プロセス情報 (PID) が表示されないのはなぜですか?

A: 通常は権限の問題です。コマンドを sudo で実行してください:
sudo netstat -tulpn

-p オプションはプロセス情報を表示するためにルート権限が必要です。

Q: LISTEN と ESTABLISHED の状態の違いは何ですか?

A:
- LISTEN: サービスがポートで接続を待機していることを示します
- ESTABLISHED: アクティブで現在接続中のセッションを表します

Q: 特定のポートの接続を確認するにはどうすればよいですか?

A: grep を使ってポート固有の接続をフィルタリングできます:

# ポート80のすべての接続を確認
netstat -an | grep ":80"

# リスニングポートのみ確認
netstat -tunl | grep ":80"

Q: netstat コマンドが遅いのはなぜですか?

A: 主な原因は次の2つです:
1. DNS解決 - 名前解決を避けるには -n オプションを使用
2. 接続数が多すぎる - フィルタリングを使用するか、ss に切り替える

# 高速なコマンド例
netstat -tan | grep ESTABLISHED

Q: netstat はシステム性能に影響しますか?

A: 頻繁なポーリングは性能に影響を与える可能性があります。ベストプラクティス:
1. ポーリング間隔を増やす
2. 出力をフィルタリングして削減
3. 大規模システムでは ss を検討
4. 忙しいシステムでは連続モード (-c) を避ける

Q: 特定のポートを使用しているアプリケーションを特定するには?

A: 次のコマンドを使用してください:
# ポート80を使用しているプロセスを表示
sudo netstat -tulpn | grep ":80"

# lsof を使った代替方法
sudo lsof -i :80

Q: 接続状態を監視するにはどうすればよいですか?

A: 以下の方法があります:

# 状態ごとの接続数をカウント
netstat -ant | awk '{print $6}' | sort | uniq -c

# 確立された接続をリアルタイムで監視
watch -n 1 'netstat -ant | grep ESTABLISHED | wc -l'

Q: 不審な接続を確認するにはどうすればよいですか?

A: 以下を確認してください:
1. 異常なポート:
netstat -tulpn | grep -vE ':22|:80|:443'

2. 単一のIPからの接続数が多い場合:
netstat -ant | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr

Q: ポートスキャンの試みを検出する方法は?

A: SYN_RECV接続を監視します:
netstat -ant | grep SYN_RECV | awk '{print $5}' | cut -d: -f1 | sort | uniq -c

### Q: `-t` オプションと `-u` オプションの違いは何ですか?
```bash
A:
-t : TCP接続のみを表示
-u : UDP接続のみを表示

これらを組み合わせることも可能:
netstat -tu : TCPとUDPの両方を表示

Q: netstatの出力をファイルに保存する方法は?

A: 以下の方法を試してください:

# 基本的な出力をファイルに保存
netstat -ant > network_status.log

# タイムスタンプを含めて保存
(date; netstat -ant) > network_status.log

# 継続的なログ記録
while true; do
    netstat -ant >> network_log.txt
    sleep 300
done

Q: netstatの出力に「Address already in use」と表示されるのはなぜですか?

A: これは、ポートが別のプロセスによって使用されていることを示します。確認するには以下を実行してください:
sudo netstat -tulpn | grep "<port_number>"

Q: TIME_WAIT接続が多いのはなぜですか?

A: TIME_WAITは、接続終了後に通常発生します。しかし、多すぎる場合は次の原因が考えられます:
1. 接続の回転率が高い
2. ネットワークの問題
3. アプリケーションが接続を再利用していない

監視方法:
netstat -ant | grep TIME_WAIT | wc -l