Centos6.5 システムで構築されたメール サーバー A がありますiredmail
。メール サーバーにはパブリック IP aaa があります。
ローカル ネットワークには、オペレーティング システムが Windows のメール クライアントが 40 ~ 50 台ほどあり、それらはすべてパブリック IP ccc として NAT されています (ルータ C は Linux システムで構築されています)。一方、同じローカル ネットワークには Linux システムを使用するマシンがほとんどありません。また、それらのいくつかは、メール サーバーに頻繁に接続できません。
たとえば、Fedora 19のデスクトップを使用してtelnet
メールサーバーの443ポートに接続し、tcpdump
コマンドでメールサーバーにキャプチャします。
15:16:55.144222 IP xxx.xxx.xxx.xxx.46989 > xxx.xxx.xxx.xxx.https: Flags [S], seq 939563650, win 29200, options [mss 1460,sackOK,TS val 23633360 ecr 0,nop,wscale 7], length 0
15:17:03.160282 IP xxx.xxx.xxx.xxx.46989 > xxx.xxx.xxx.xxx.https: Flags [S], seq 939563650, win 29200, options [mss 1460,sackOK,TS val 23641376 ecr 0,nop,wscale 7], length 0
しかし、Feodra 19と同じハブにあるWindows 7でメールサーバーの443ポートにtelnet接続すると
15:20:54.484991 IP xxx.xxx.xxx.xxx.49218 > xxx.xxx.xxx.xxx.https: Flags [S], seq 31344922, win 8192, options [mss 1460,nop,wscale 2,nop,nop,sackOK], length 0
15:20:54.485034 IP xxx.xxx.xxx.xxx.https > xxx.xxx.xxx.xxx.49218: Flags [S.], seq 1361958840, ack 31344923, win 14600, options [mss 1460,nop,nop,sackOK,nop,wscale 7], length 0
15:20:54.485558 IP xxx.xxx.xxx.xxx.49218 > xxx.xxx.xxx.xxx.https: Flags [.], ack 1, win 4380, length 0
15:20:55.685554 IP xxx.xxx.xxx.xxx.https > xxx.xxx.xxx.xxx.49218: Flags [S.], seq 1361958840, ack 31344923, win 14600, options [mss 1460,nop,nop,sackOK,nop,wscale 7], length 0
15:20:55.686359 IP xxx.xxx.xxx.xxx.49218 > xxx.xxx.xxx.xxx.https: Flags [.], ack 1, win 4380, options [nop,nop,sack 1 {0:1}], length 0
15:21:05.122927 IP xxx.xxx.xxx.xxx.49218 > xxx.xxx.xxx.xxx.https: Flags [F.], seq 1, ack 1, win 4380, length 0
15:21:05.123193 IP xxx.xxx.xxx.xxx.https > xxx.xxx.xxx.xxx.49218: Flags [F.], seq 1, ack 2, win 115, length 0
15:21:05.123813 IP xxx.xxx.xxx.xxx.49218 > xxx.xxx.xxx.xxx.https: Flags [.], ack 2, win 4380, length 0
すべての Windows 7 と Feodra19 が同じネットワーク環境にありますが、Windows 7 は常に正常に接続しますが、Feodar 19 は時々失敗します。ただし、telnet
メール サーバーへのパブリック IP BBB を持つ Linux サーバー B を使用すると、正常に接続され、失敗することはありません。これは、同じソース IP への Linux 接続に問題があるのではないかと考えています。
Windows のローカル ネットワーク メール クライアントは通常、メール サーバーに接続して 3 分間隔でメールをチェックします。これが問題の解決に役立つかどうかはわかりません。
答え1
ついに私は自分でその理由を見つけました。
その理由は次のとおりです。
ネット.ipv4.tcp_tw_recycle=1
Windows では SYN パッケージにタイムスタンプ オプションが常にありませんが、Linux では
タイムスタンプ オプションが常にあるため、メール サーバーは間違ったタイムスタンプを持つ要求で新しい TCP/IP 接続を作成しませんでした。