私のLinuxサーバーがグローバルカタログサーバーへのLDAPS接続を確立しようとしていますが、接続が(GC側で)ドロップされています。
説明のために、1.1.1.1がLinuxサーバーで、1.2.3.4がグローバルカタログサーバーであるとします。
Linuxボックスからtelnet
を使用しようとすると、次のようになります。
[root@foobox ~]# telnet gcfoo.exampleAD.local 3269
Trying 1.2.3.4...
Connected to gcfoo.examplead.local.
Escape character is '^]'.
Connection closed by foreign Host.
4行目と5行目の間に遅延はありません。ただちに接続を切断します。
telnet
の結果は少し誤解を招く可能性があると考えたため(実際には安全な通信の種類には適していないため)、アプライアンスから実際の接続試行のパケットキャプチャを収集しました(LDAPSを必要とする実際のプログラムを使用)。 。
これが私が見るものです(ここでも、IPとソースポートは無実を保護するために名前が変更されています)。
No. Time Source Destination Protocol Length Info
1 0.000000 1.1.1.1 1.2.3.4 TCP 66 27246 > msft-gc-ssl [SYN] Seq=0 Win=5840 Len=0 MSS=1460 SAC_PERM=1 WS=128
2 0.000162 1.2.3.4 1.1.1.1 TCP 62 msft-gc-ssl > 27246 [SYN, ACK] Seq=0 Ack=1 Win=8192 Len=0 MSS=1460 SACK_PERM=1
3 0.000209 1.1.1.1 1.2.3.4 TCP 54 27246 > msft-gc-ssl [ACK] Seq=1 Ack=1 Win=5840 Len=0
4 0.003462 1.1.1.1 1.2.3.4 TCP 248 27246 > msft-gc-ssl [PSH, ACK] Seq=1 Ack=1 Win=5840 Len=194
5 0.007264 1.2.3.4 1.1.1.1 TCP 60 msft-gc-ssl > 27246 [RST] Seq=1 Win=64046 Len=0
私はTCP/IPに少し錆びているので、無知を許してください... 3ウェイハンドシェイクがパケット1〜3で行われているのがわかります。それは理にかなっている。パケット#4で何が起こっているのですか? [PSH, ACK]
の意味?これは不要な冗長な確認応答のようです。この4番目のパケットで実際のデータが送信されていますか?それとも、ハンドシェイクの奇妙な続きですか?
PSH
はプッシュフラグです: http://ask.wireshark.org/questions/20423/pshack-wireshark-capture
プッシュフラグは、受信側のネットワークスタックに対して、データを受信ソケットに直接「プッシュ」し、それ以上のパケットを待たずにそれを行うように指示します。
プッシュフラグは通常、組み込みのTCP効率遅延、たとえば Nagle's Algorithm または Delayed Acknowledgements をオーバーライドしながらデータが送信されたことを意味します。
これらの遅延により、TCPネットワーキングがいくらかの遅延(通常は数十ミリ秒程度)を犠牲にしてより効率的になります。遅延に敏感なアプリケーションは、TCPの効率遅延を待たずに済むため、アプリケーション通常はそれらを無効にし、プッシュフラグを設定してデータを可能な限り迅速に送信します。
Linuxでは、これはsetsockopt()
フラグTCP_QUICKACK
およびTCP_NODELAY
で行われます。詳細については、man 7 socket
を参照してください。
@DarkMoonは、PSHフラグの意味を説明しました。データに関しては、接続の確立が完了し(3ウェイハンドシェイク)、クライアントは194バイトのデータをサーバーに送信しました(Len=194
)。サーバーはデータを気に入らず、接続を閉じました。クライアントがサーバーと通信するように正しく構成されていないか、またはその逆の可能性があります。 SSL/TLSの不一致。
アクセス権がある場合は、サーバーのログを調べて、クライアントのデータに関して望ましくないものをログに記録したかどうかを確認することをお勧めします。