確認方法TCP linux / macosのタイムアウト?
MacOSでトラブルシューティングが必要なネットワークの問題があります。 TCPソケットに内部タイムアウトがあり、リモートパーティが応答しない場合は接続を閉じる(ただし、正常な切断もない)ことを知っています。これの正確な値を確認するために使用できるコマンド/ツールはありますか?タイムアウト?
すべてのシステム設定のtcp値は、
$ sysctl net.inet.tcp
Tcp_var.h、tcp_subr.c、およびtcp_timer.cから解釈:
- net.inet.tcp.keepidle =キープアライブアイドルタイマー
- net.inet.tcp.keepintvl =キープアライブを送信する間隔
- net.inet.tcp.keepinit = synを確立するためのタイムアウト
- net.inet.tcp.mssdflt =デフォルトTCP最大セグメントサイズ
- net.inet.tcp.v6mssdflt =デフォルトTCP IPv6の最大セグメントサイズ
- net.inet.tcp.minmss =最小TCP最大セグメントサイズ
- net.inet.tcp.minmssoverload = TCP 1秒あたりのセグメント数がMINMSSサイズを下回ることを許可
- net.inet.tcp.rfc1323 = rfc1323(高性能TCP)拡張を有効にする
- net.inet.tcp.rfc1644 = rfc1644(TTCP)拡張を有効にする
- net.inet.tcp.do_tcpdrain = mbufが少ないときに追加のヘルプのためにtcp_drainルーチンを有効にする
- net.inet.tcp.pcbcount =アクティブなPCBの数
- net.inet.tcp.icmp_may_rst =特定のICMP到達不能メッセージがSYN_SENTの接続を中止することがある
- net.inet.tcp.strict_rfc1948 = RFC1948に正確に従っているかどうかを決定します
- net.inet.tcp.isn_reseed_interval = ISNシークレットの再シード間の秒数
- net.inet.tcp.background_io_enabled =バックグラウンドIO有効
- net.inet.tcp.rtt_min =許可される最小RTT値
- net.inet.tcp.randomize_ports =ランダム化TCPポート番号
- net.inet.tcp.tcbhashsize = TCP制御ブロックハッシュテーブルのサイズ
- net.inet.tcp.msl =最大セグメント寿命
- net.inet.tcp.always_keepalive =すべての接続でSO_KEEPALIVEを想定するTCP接続
- net.inet.tcp.broken_peer_syn_rxmit_thres =前に再送信されたSYNの数TCP=残りの試行中にrfc1323およびrfc1644を無効にします
- net.inet.tcp.pmtud_blackhole_detection =パスMTUディスカバリブラックホール検出
- net.inet.tcp.pmtud_blackhole_mss =パスMTUディスカバリブラックホール検出によりMSSが低下
SO_KEEPALIVEが設定されている場合、デフォルトでは、接続が閉じる前に8つのキープアライブが送信されると思います。時間はミリ秒単位です。
Linuxの場合、以下を使用できます。
$ sysctl -a | grep net.ipv4
これがあなたが探しているものかどうかはわかりませんが、キープアライブ値を次のように確認できます:
$ netstat -o
多分無関係ですが、私にとってはうまくいきます:
サーバーの1つに対するssh/tcpインタラクティブタイムアウトを特定しようとしているので、次のようにします。
date; ssh Host.domain 'sleep 10000'; date
出力例:
Thu May 24 12:22:39 CEST 2018
packet_write_wait: Connection to 172.29.1.27 port 22: Broken pipe
Thu May 24 14:22:40 CEST 2018