Мой 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, такой как Алгоритм Nagle или Задержанные Подтверждения .
Эти задержки делают TCP, объединяющийся в сеть более эффективный за счет некоторой задержки (обычно вокруг нескольких десятков миллисекунд). Чувствительное к задержкам приложение не хочет ждать задержки эффективности TCP, таким образом, приложение будет обычно отключать их, заставляя данные быть отправленным максимально быстрое с набором флага Push.
На Linux, это сделано с setsockopt()
флаги TCP_QUICKACK
и TCP_NODELAY
. См. man 7 socket
для получения дополнительной информации.
@DarkMoon объяснил, что показывает флаг PSH. В отношении Ваших данных установление соединения завершается (трехстороннее квитирование), затем, да, клиент отправил 194 байта данных к серверу (Len=194
). Сервер не любил данные и закрыл соединение. Потенциально клиент не настроен правильно для общения с сервером или наоборот например, несоответствие SSL/TLS.
, Если бы у Вас есть доступ, я предложил бы исследовать вход в систему сервер, чтобы видеть, зарегистрировал ли он то, что ему не нравились приблизительно данные клиента.