読者です 読者をやめる 読者になる 読者になる

未経験からWebエンジニアを目指す!!

日々学ぶ新しいことや発見をメモしていくブログです。

Linux: TCP keepaliveの設定

LinuxではTCP keepaliveをサポートしているが、その値を任意で変更する方法がある。

使用用途
  1. 対向機器のdead peer検出目的(対向の機器が死んでいるか生きているかどうか。)
  2. ルータなどを経由すると、ルータやファイアウォールの無動作タイムアウトなどの設定でTCPのコネクションを遮断されるのを防ぐ。
現状の確認コマンド

↓はデフォルトの設定。


# cat /proc/sys/net/ipv4/tcp_keepalive_time
7200 ←7200秒経ったらkeepaliveを送る。

# cat /proc/sys/net/ipv4/tcp_keepalive_intvl
75 ←75秒後に再送する。
# cat /proc/sys/net/ipv4/tcp_keepalive_probes
9 ←9回プローブする。

変更コマンド


# echo 30 > /proc/sys/net/ipv4/tcp_keepalive_time ← 実験のため、30秒に変更。

# echo 20 > /proc/sys/net/ipv4/tcp_keepalive_intvl ←同じく20秒に変更。

パケットをみる

192.168.168.80からkeepaliveを30秒間隔で送っている。
f:id:web0ninja:20160726235457p:plain


応答側のパケットの中身は↓。Ackで返す。
f:id:web0ninja:20160726235605p:plain

Icons made by Iconnice from www.flaticon.com is licensed by CC 3.0 BY