(обратное) ssh соединение "время ожидания при обмене баннерами"
Я установил несколько 100 встроенных блоков для связи со штаб-квартирой, открыв обратные туннели ssh, каждый под новым портом. Это в основном работает нормально, но сегодня я столкнулся с проблемой при использовании туннеля через GPRS-соединение с низкой пропускной способностью (или с низким качеством?).
Удаленная машина, открывающая туннель, подключается к интернету через (пока неизвестный) 3G-маршрутизатор, который, вероятно, имеет только GPRS, в лучшем случае EDGE-соединение.
Зайдя на мою машину я вижу входящие ssh
соединение через порт 1234:
me@machine:~$ sudo nmap -sS -p 1234 --open localhost
Starting Nmap 5.21 ( http://nmap.org ) at 2014-11-27 15:27 CET
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000070s latency).
Hostname localhost resolves to 2 IPs. Only scanned 127.0.0.1
PORT STATE SERVICE
1234/tcp open unknown
Nmap done: 1 IP address (1 host up) scanned in 0.09 seconds
me@machine:~$
Теперь, пытаясь открыть соединение SSH я получаю Connection timed out
ошибка:
me@machine:~$ ssh -vp 1234 localhost
OpenSSH_5.9p1 Debian-5ubuntu1.4, OpenSSL 1.0.1 14 Mar 2012
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: Connecting to localhost [::1] port 1234.
debug1: fd 3 clearing O_NONBLOCK
debug1: Connection established.
debug1: identity file /home/cts/.ssh/id_rsa type 1
debug1: Checking blacklist file /usr/share/ssh/blacklist.RSA-4096
debug1: Checking blacklist file /etc/ssh/blacklist.RSA-4096
debug1: identity file /home/cts/.ssh/id_rsa-cert type -1
debug1: identity file /home/cts/.ssh/id_dsa type -1
debug1: identity file /home/cts/.ssh/id_dsa-cert type -1
debug1: identity file /home/cts/.ssh/id_ecdsa type -1
debug1: identity file /home/cts/.ssh/id_ecdsa-cert type -1
Connection timed out during banner exchange
me@machine:~$
Другие порты работают нормально, как и этот, когда он был (проверен) подключен к сети 3G.
Я попробовал кое-что, что иногда помогает, делая это через спутниковые соединения - ssh -o "ConnectTimeout 99" -o "ServerAliveCountMax 5" -vp 1234 localhost
но это тоже не помогло.
Я предполагаю, что это как-то связано с
а) провайдер беспроводной связи фильтрует что-то в своей сети GPRS, а не в своей сети 3G
или же
б) плохая задержка соединения GPRS, наполняющая мой туннель.
Кто-нибудь имеет представление о том, как справиться с этой ситуацией или лучше понять, что происходит (или, скорее, не происходит) здесь? Добавление больше v
s, чтобы команда больше не показывала выходные данные отладки, кстати.
2 ответа
Время ожидания соединения во время сообщения об ошибке обмена баннерами может указывать на проблемы в сети. Если вы видите, что сокет установлен с помощью netstat как на сервере, так и на клиенте, возможно, существует межсетевой экран или устройство проверки пакетов, которое не позволяет установить соединение SSH. Мы видели эту проблему в системе, которая находилась за защищенной сетью, и правила брандмауэра не были настроены должным образом. Брандмауэр также сбрасывал все подключения, которые пытались инициировать запрос HTTP/1.1, что было подтверждено с помощью netcat для имитации веб-сервера и подключения к нему с помощью netcat. Когда мы изменили ответ на HTTP/1.2, он пропустил ответ, указав, что что-то на сетевом уровне проверяет запросы и применяет к ним правила фильтрации.
Другие проблемы с сетью низкого уровня, такие как проблемы кадров MTU/Jumbo или высокая потеря пакетов, также могут быть причиной проблемы.
Если ваш брандмауэр (например, на хосте перехода) использует knockd, попробуйте увеличить Cmd_Timeout: https://linux.die.net/man/1/knockd