Мой Linux-сервер пытается установить LDAPS-соединение с сервером глобального каталога, и это соединение обрывается (предположительно со стороны GC).
В целях обсуждения предположим, что 1.1.1.1 - это сервер Linux, а 1.2.3.4 - сервер глобального каталога.
Если я попытаюсь использовать telnet
из коробки Linux я вижу:
[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, так что простите меня за невежество ... Я вижу, что в пакетах 1-3 происходит трехстороннее рукопожатие. В этом есть смысл. Что же происходит в пакете №4? Что значит [PSH, ACK]
значит? Это похоже на избыточное подтверждение, в котором нет необходимости. Фактические данные отправляются в этом 4-м пакете? Или это какое-то странное продолжение рукопожатия?
PSH
это флаг Push: http://ask.wireshark.org/questions/20423/pshack-wireshark-capture
Флаг Push сообщает сетевому стеку получателя «протолкнуть» данные прямо в принимающий сокет, а не ждать дополнительных пакетов, прежде чем это сделать.
Флаг Push обычно означает, что данные были отправлены, но при этом была отменена встроенная задержка эффективности TCP, например Алгоритм Нэгла или Задержанные подтверждения.
Эти задержки делают сеть TCP более эффективной за счет некоторой задержки (обычно около нескольких десятков миллисекунд). Приложение, чувствительное к задержкам, не хочет ждать задержек эффективности TCP, поэтому приложение обычно отключает их, заставляя данные отправляться как можно быстрее с установленным флагом Push.
В Linux это делается с помощью setsockopt()
флаги TCP_QUICKACK
и TCP_NODELAY
. Видеть man 7 socket
Чтобы получить больше информации.
@DarkMoon объяснил, что означает флаг PSH. Что касается ваших данных, установка соединения завершается (трехстороннее рукопожатие), затем, да, клиент отправил на сервер 194 байта данных (Len=194
). Серверу не понравились данные, и он закрыл соединение. Возможно, клиент не настроен должным образом для связи с сервером или наоборот, например несоответствие SSL / TLS.
Если у вас есть доступ, я бы посоветовал изучить журналы на сервере, чтобы убедиться, что он записал то, что ему не понравилось в данных клиента.