Сеанс SSH через OpenVPN отключается / блокируется через несколько строк


12

У меня есть большое количество идентичных безвентиляторных ПК под управлением Debian 6 (ARM). Большинство из них подключены через Comcast и работают нормально. Некоторые из них подключены к модемам WiMax и имеют проблемы со связью.

В частности: если я ssh к одному из них и попробую команду типа 'ps -ax', я вернусь примерно на 3 строки назад, а затем сессия будет заблокирована. Если я позволю ему сесть, в конце концов он закроется с «закрытой сессией сессии».

Что я пробовал:

  • ssh -vvv → нет сообщений об ошибках
  • ssh <user@host> 'command'→ это иногда возвращает полный вывод команды. Иногда это не соединяется вообще.

Предложения по другим вещам попробовать?

Я обнаружил, что могу успешно выполнять некоторые команды: например, ударить return дюжину раз или больше - это нормально. cd ~а потом lfработает как делает df -h. Я могу dfуспешно запускаться много раз, но как только я пытаюсь что-то сделать с большим количеством вывода (например ls /etc), оно блокируется.

Имеет ли значение, что я пытаюсь общаться между этими двумя хостами, используя OpenVPN?


Убедитесь, что MTU вашего пути не ниже, чем MTU настроенного интерфейса. SSH не фрагментируется, поэтому при установленном бите DF пакеты отбрасываются. Прочитайте это для более подробного объяснения.
Аарон Копли

1
Пробовал установить MTU на всех интерфейсах до 1400 без видимого эффекта. Протестировано с ping -c 1 -s $((5000-28)) -M do machine-ip
возвратом

1
tracepath -n <ip>подтверждает это: 1500 разрешен весь путь.
ethrbunny

1
Прости мое невежество, но как -Tпоможет в этом случае?
Аарон Копли

2
<Читает второй абзац> Это проблема MTU. <Читать далее> Да, проблема MTU. Смотрите эту ветку для объяснения. Я не голосую за закрытие как дубликат, потому что есть один момент, который не обсуждается другим потоком: что нужно изменить в конфигурации VPN, чтобы решить проблему.
Жиль "ТАК - перестань быть злым"

Ответы:


11

У вас есть симптомы проблемы MTU : некоторые TCP-соединения замирают, более или менее воспроизводимо для данной команды или URL, но без какого-либо легко различимого общего шаблона. Характерным признаком является то, что интерактивные сеансы SSH работают хорошо, если вы не запускаете команды с большим выводом. См. Объяснение для получения доступа к избранным сайтам https в Linux через PPPoE .

OpenVPN имеет несколько опций, связанных с MTU - поиск «mtu» в руководстве. У меня недостаточно опыта, чтобы быть уверенным в том, какой вариант нужно изменить. (Даже возможно, что вы можете что-то изменить в конфигурации модема Wimax.) Наиболее вероятный вариант: изменить mssfixзначение до тех пор, пока проблема не будет устранена. По умолчанию это 1450; что-то около 1400 может решить вашу проблему. Попробуй openvpn --fragment 1200 -mssfix; если это помогает, увеличивайте значение, пока оно не начнет ломаться.


Начинаю с установки mssfix 1200на сервер и перезапуска. Все идет нормально. Если это сработает, я увеличу его до 1300 или 1400 и посмотрю, что произойдет. Слишком много клиентов, чтобы изменить все удаленные конфиги, хотя так придется делать на стороне сервера.
ethrbunny

Я знал, что это был MTU!
Аарон Копли

3

Ответ Жиля полностью прав, но есть и другая потенциальная причина для этого.

В версии 2.3.0 OpenVPN была ошибка, которая приводила к отключению клиентов при отправке больших кусков данных: https://community.openvpn.net/openvpn/ticket/263

Эта проблема возникала только при использовании TCP. UDP был совершенно не затронут.


3

У нас была та же проблема, и это действительно была проблема MTU. Однако для нас проблема была не в конфигурации openVPN, а в интерфейсе tun0.

Как мы решили это: сначала найдите максимальный размер пакета, который прошел через

ping <host> -s 1500 -M do

и уменьшение значения 1500 до тех пор, пока значение не пройдет (для нас 1350).

Как только правильное значение будет найдено, измените интерфейс tun0 с помощью

sudo ip link set dev tun0 mtu 1350

как было предложено Себастьяном здесь . После этого VPN шел гладко.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.