У меня есть ноутбук с Ubuntu 12.04, который так долго подключается к различным серверам (в разных центрах обработки данных), что это похоже на лотерею, действительно ли я получу соединение. Если я подключаюсь к серверам между собой, это происходит мгновенно, и я установил
UseDNS no
AddressFamily inet
На серверах, к которым я подключаюсь (и на всякий случай перезагрузился). Я также ввел обратный DNS + IP кабельного соединения, с которого я подключаюсь. Если я подключаюсь с ноутбука через telnet:
telnet my.server 22
Тогда соединение также будет мгновенным, поэтому проблема не возникает из-за брандмауэра. У меня одно и то же поведение, независимо от того, подключаюсь ли я по IP, короткому имени в моих хостах или FQDN. Я подключаюсь через соединение со скоростью 50 Мбит / с (кабель, синхронизация), так что это не проблема, и когда я, наконец, получаю соединение, оно хорошее, быстрое и стабильное. Я пробовал прослушивать другой порт (8000), и это не имеет значения. Интернет и другие соединения ноутбука с машиной также очень хорошие.
Если я увеличу ведение журнала, я получу следующее, прежде чем оно зависнет:
$ ssh -vvv flip
OpenSSH_5.9p1 Debian-5ubuntu1.1, OpenSSL 1.0.1 14 Mar 2012
debug1: Reading configuration data /home/anton/.ssh/config
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug2: ssh_connect: needpriv 0
debug1: Connecting to flip [xxx.xxx.xxx.xxx] port 22.
debug1: Connection established.
debug3: Incorrect RSA1 identifier
debug3: Could not load "/home/anton/.ssh/id_rsa" as a RSA1 public key
debug1: identity file /home/anton/.ssh/id_rsa type 1
debug1: Checking blacklist file /usr/share/ssh/blacklist.RSA-2048
debug1: Checking blacklist file /etc/ssh/blacklist.RSA-2048
debug1: identity file /home/anton/.ssh/id_rsa-cert type -1
debug1: identity file /home/anton/.ssh/id_dsa type -1
debug1: identity file /home/anton/.ssh/id_dsa-cert type -1
debug1: identity file /home/anton/.ssh/id_ecdsa type -1
debug1: identity file /home/anton/.ssh/id_ecdsa-cert type -1
Он висит на сервере между двумя следующими строками:
Nov 6 13:51:57 srv sshd[18472]: Connection from XXX.XXX.XXX.XXX port 51099
Nov 6 13:53:03 srv sshd[18472]: debug1: Client protocol version 2.0; client software version OpenSSH_5.9p1 Debian-5ubuntu1.1
Хотя это как минимум быстрее, чем вчера!
У кого-нибудь есть идеи здесь?
Эти симптомы - то, что вы можете ожидать увидеть в случае обнаружения неисправности PMTU. Клиент может подключиться, и можно без проблем обмениваться информацией о версии, потому что все пакеты маленькие.
Но как только начинается обмен ключами, отправляются более крупные пакеты. Если более крупные пакеты незаметно отбрасываются каким-либо промежуточным маршрутизатором без отправки сообщения об ошибке ICMP, требуемого стандартом, отправитель никогда не узнает, что данные должны быть отправлены меньшими сегментами. Следовательно, соединение останавливается на первом большом пакете.
Если проблема действительно в этом, то уменьшение MSS или MTU может решить проблему. Первым шагом может быть изменение используемой записи таблицы маршрутизации на каждом конце соединения, чтобы включить advmss 1220
. Или, если вы не хотите изменять маршрут по умолчанию, вы можете просто добавить более конкретный маршрут с тем же шлюзом.
Вы упоминаете, что проблема исчезла сама по себе, что также не является маловероятным для проблемы с MTU, поскольку она может исчезнуть, когда BGP решит отправить ваши пакеты по другому пути, который не пересекает проблемный маршрутизатор, или это может произойти из-за администратора, ответственного за обнаружение проблемного маршрутизатора и устранение проблемы.