У меня есть домашний компьютер H (Linux), рабочий компьютер W (Mac OS X) и публичный сервер S (тот же Linux, что и H) с IP-адресом 11.22.33.44.
Поскольку H и W находятся за NAT, я использую autossh для их подключения к S и связи друг с другом через туннели:
# From H to S
ssh -R :8822:127.0.0.1:22 [email protected]
# From W to S
ssh -R :7722:127.0.0.1:22 [email protected]
Когда я в офисе, я часто подключаюсь по SSH к H и пересылаю X11 обратно:
# on W
ssh -X -p 8822 [email protected]
xterm
...
И H, и W имеют очень низкую задержку до S (ping около 2-5 мс), поэтому все было довольно гладко, пока мой офис не переехал и не сменился интернет-провайдер. Пинг от W до S оставался низким, и все было быстро, пока не началась пересылка X. Всякий раз, когда я пытаюсь запустить xterm из H через пересылку X11, TCP-соединение по которому становилось чрезвычайно медленным. Однако другие сеансы SSH из W в H без пересылки остаются быстрыми. После нажатия Ctrl-C на неотвечающем xterm, пересылающий сеанс SSH немедленно восстанавливается и становится отзывчивым.
Такое ощущение, что кто-то следит за сеансами SSH и замедляет их всякий раз, когда происходит соединение X11. Чтобы выяснить, какая часть пошла не так, я провел такой тест:
# on W
ssh -R 11.22.33.44:6010:127.0.0.1:6000 [email protected]
# on S
DISPLAY=11.22.33.44:10 xterm # works fine!
# on H
DISPLAY=11.22.33.44:10 xterm # unresponsive
Странно, что если xterm запускается на S, то все в порядке; если же он запускается с H, то он зависает, не часть H→S, а сеанс SSH W→S, так как набор текста на нем стал крайне медленным. После Ctrl-C зависший xterm тут же восстановился.
Похоже, это не проблема сети, так как H→S и W→S все отлично (и по задержке, и по пропускной способности). Через туннель scp между W и H работает быстро; lftp fish://H
из W тоже работает нормально.
Поскольку это произошло после смены интернет-провайдера, я подумал, не ограничивает ли интернет-провайдер трафик, но пересылка X11 отлично работает в любом направлении между W и S или между H и S. Просто любой трафик X11 между W и H, каким бы способом я ни пришел в голову, замедляет соединение SSH, передающее его.
Я в глубоком замешательстве от этого беспорядка. Может кто-нибудь помочь мне понять, в какую часть мне следует обратить внимание?