Назад | Перейти на главную страницу

Как предотвратить зависание SSH при подключении клиента openvpn к клиентскому подключению

У меня точно такая же проблема, как и описанная здесь, но я не могу запросить разъяснения у автора, так как я новый пользователь, и я не могу оставлять комментарии к этому, поэтому я публикую новый вопрос (я попытался опубликовать его в качестве ответа для справки в том же потоке, и он был удален, так как он не дает ответа ...).

Как предотвратить зависание TCP-соединения в сети OpenVPN?

Вопрос: Есть ли у кого-нибудь рекомендации по устранению неполадок и / или определению основной причины проблемы TCP, описанной в этом потоке? Это как если бы удаленный конец не принимает сообщения ACK, отправленные клиентом VPN.

Моя настройка точно такая же, как и в исходном запросе: сервер CentOS (подсеть топологии) и два клиента, один CentOS и один Ubuntu14.03. Когда я делаю ssh cat abc.txt от ubuntu-client к centos-client, vpn-соединение centos останавливается. Единственный способ восстановить его - это перезапустить как сервер openvpn (в блоке centos), так и клиент openvpn в centos - простой перезапуск соединения centos-client не делает его работоспособным (он вызовет tun0 после ~ 1-2 минуты, но я больше не могу пинговать или ssh ящик через vpn). Я также попробовал все предложения по настройке MTU, найденные в других потоках (tun-mtu 1300 / fragment 1100 / mssfix и т.д.), и ни один из них не помогает.

Что делает это еще более странным, так это то, что если я сделаю тот же ssh-cat из Ubuntu, используя vpn-сервер CentOS для Интернета на общедоступный IP-адрес centos-client (таким образом, минуя centos-client <-> centos-server впн нога) все работает нормально (глохнет ни разу).

ОБНОВЛЕНИЕ 1: Я нашел способ исправить это, но он очень уродливый. Разместите это здесь, на случай, если у кого-то появятся другие идеи / подсказки. Когда я устанавливаю уровень подробности на 9 на сервере openvpn (не на клиенте, только на сервере), проблема больше никогда не возникает. Глагол 9 заставляет сервер openvpn регистрировать много данных и использовать 100% ЦП, на котором он работает. Затем это ограничивает скорость передачи и обеспечивает успешное выполнение scp без остановок; scp теперь копирует со скоростью 40-50 Кбайт / сек, в то время как раньше он останавливался после ударов выше 100 Кбайт / сек.

ОБНОВЛЕНИЕ 2: Я считаю, что это проблема с буферизацией. Размер передаваемого файла (через scp или ssh cat) имеет большое значение. Если я scp a Файл 700 КБ (или меньше), он всегда будет успешным, сколько бы раз я это ни пробовал. Если вместо этого я попытаюсь получить файл размером 800 КБ, он всегда будет терпеть неудачу / останавливаться после 7xxKb +.

Я видел похожую проблему и смог обойти ее, отключив масштабирование окна TCP.

sysctl -w net.ipv4.tcp_window_scaling=0

Возможно, это укажет вам правильное направление, в котором может быть проблема.