Linux / MacOSでTCPタイムアウトを確認するにはどうすればよいですか?


11

MacOSでトラブルシューティングが必要なネットワークの問題があります。TCPソケットに内部タイムアウトがあり、リモートパーティが応答しない場合に接続を閉じることを知っています(ただし、正常な切断も行われません)。このタイムアウトの正確な値を確認するために使用できるコマンド/ツールはありますか?

回答:


15

すべてのシステム設定の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 = IPv6のデフォルトTCP最大セグメントサイズ
  • net.inet.tcp.minmss =最小TCP最大セグメントサイズ
  • net.inet.tcp.minmssoverload = MINMSSサイズを下回ることが許可されている1秒あたりのTCPセグメント数
  • 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 =すべてのTCP接続でSO_KEEPALIVEを想定する
  • net.inet.tcp.broken_peer_syn_rxmit_thres = TCPが残りの試行中にrfc1323およびrfc1644を無効にする前に再送信されたSYNの数
  • net.inet.tcp.pmtud_blackhole_detection =パスMTUディスカバリブラックホール検出
  • net.inet.tcp.pmtud_blackhole_mss =パスMTUディスカバリブラックホール検出によりMSSが低下

SO_KEEPALIVEが設定されている場合、デフォルトでは、接続が閉じる前に8つのキープアライブが送信されると思います。時間はミリ秒単位です。



3

これがあなたが探しているものかどうかはわかりませんが、キープアライブ値を次のように確認できます:

$ netstat -o

3
Mac OS X
10.6.6

1

多分無関係ですが、私にとってはうまくいきます:

私は私たちのサーバーの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
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.