Рейтинг:0

ssh через openVPN на openWRT зависает на SSH2_MSG_KEXINIT отправлено

флаг is
Foo

Я столкнулся с проблемой, когда ssh к удаленному серверу зависает с сообщением SSH2_MSG_KEXINIT отправлен. Я уже изучил варианты MTU без везения.

Случай 1 (сбой)

Это происходит, когда я подключаюсь по ssh со своего ПК с Linux через маршрутизатор openWRT, на котором запущен клиент openVPN. У меня настроен роутер на пересылку из локальной сети 44.20.11.0/24 к VPN tun0. Я могу успешно пропинговать удаленный сервер ssh со своего ПК, поэтому я не думаю, что переадресация является проблемой.

Эта версия клиента openVPN для ПК 2.5.2 mips-openwrt-linux-gnu. Серверная версия openWRT openVPN опенвпн-2.3.8-16.26.1.x86_64.

Вот вывод клиента ssh для неудачного случая:

ssh -vvvv [email protected]
OpenSSH_8.8p1, OpenSSL 1.1.1m 14 декабря 2021 г.
debug1: Чтение данных конфигурации /home/myuser/.ssh/config
debug1: Чтение данных конфигурации /usr/etc/ssh/ssh_config
debug1: /usr/etc/ssh/ssh_config строка 24: включение /etc/ssh/ssh_config.d/*.conf не соответствует ни одному файлу
debug1: /usr/etc/ssh/ssh_config строка 26: Применение параметров для *
debug2: resolve_canonicalize: имя хоста 10.84.96.200 — это адрес
debug3: расширенный UserKnownHostsFile '~/.ssh/known_hosts' -> '/home/myuser/.ssh/known_hosts'
debug3: расширенный UserKnownHostsFile '~/.ssh/known_hosts2' -> '/home/myuser/.ssh/known_hosts2'
debug3: ssh_connect_direct: вход
debug1: подключение к порту 22 10.84.96.200 [10.84.96.200].
debug3: set_sock_tos: установить сокет 3 IP_TOS 0x10
отладка1: соединение установлено.
debug1: файл идентификации /home/myuser/.ssh/id_rsa типа 0
debug1: файл идентификации /home/myuser/.ssh/id_rsa-cert type -1
debug1: файл идентификации /home/myuser/.ssh/id_dsa тип -1
debug1: файл идентификации /home/myuser/.ssh/id_dsa-cert type -1
debug1: файл идентификации /home/myuser/.ssh/id_ecdsa типа 2
debug1: файл идентификации /home/myuser/.ssh/id_ecdsa-cert type -1
debug1: файл идентификации /home/myuser/.ssh/id_ecdsa_sk тип -1
debug1: файл идентификации /home/myuser/.ssh/id_ecdsa_sk-cert type -1
debug1: файл идентификации /home/myuser/.ssh/id_ed25519 тип -1
debug1: файл идентификации /home/myuser/.ssh/id_ed25519-cert type -1
debug1: файл идентификации /home/myuser/.ssh/id_ed25519_sk тип -1
debug1: файл идентификации /home/myuser/.ssh/id_ed25519_sk-cert тип -1
debug1: файл идентификации /home/myuser/.ssh/id_xmss тип -1
debug1: файл идентификации /home/myuser/.ssh/id_xmss-cert type -1
debug1: строка локальной версии SSH-2.0-OpenSSH_8.8
debug1: удаленный протокол версии 2.0, удаленная версия программного обеспечения OpenSSH_7.6
debug1: compat_banner: соответствие: OpenSSH_7.6 pat OpenSSH_7.0*,OpenSSH_7.1*,OpenSSH_7.2*,OpenSSH_7.3*,OpenSSH_7.5*,OpenSSH_7.6*,OpenSSH_7.7* совместимость 0x04000002
debug2: параметр fd 3 O_NONBLOCK
debug1: Аутентификация на 10.84.96.200:22 как «мой пользователь»
debug3: record_hostkey: найден тип ключа ECDSA в файле /home/myuser/.ssh/known_hosts:828
debug3: record_hostkey: найден тип ключа RSA в файле /home/myuser/.ssh/known_hosts:2050
debug3: record_hostkey: найден тип ключа DSA в файле /home/myuser/.ssh/known_hosts:2051
debug3: record_hostkey: найден тип ключа ED25519 в файле /home/myuser/.ssh/known_hosts:2052
debug3: load_hostkeys_file: загружено 4 ключа с 10.84.96.200
debug1: load_hostkeys: fopen /home/myuser/.ssh/known_hosts2: нет такого файла или каталога
debug1: load_hostkeys: fopen /etc/ssh/ssh_known_hosts: нет такого файла или каталога
debug1: load_hostkeys: fopen /etc/ssh/ssh_known_hosts2: нет такого файла или каталога
debug3: order_hostkeyalgs: иметь соответствующий тип ключа наилучшего предпочтения [email protected], используя HostkeyAlgorithms дословно
debug3: отправить пакет: введите 20
debug1: SSH2_MSG_KEXINIT отправлено```


Вот маршрут ПК для этого сценария (Случай 1, сбой):

по умолчанию через 44.20.6.1 dev br0
10.0.0.0/8 через 44.20.11.11 dev enp1s0
44.20.6.0/24 dev br0 ссылка на область ядра прото src 44.20.6.2
44.20.11.0/24 dev enp1s0 прото-область ядра ссылка src 44.20.11.187

Случай 2 (работает)

Когда я запускаю клиент openVPN непосредственно на ПК с Linux, я могу успешно подключиться по ssh к удаленному ssh-серверу. Это заставляет меня думать, что проблема заключается в маршрутизаторе openWRT/openVPN.

Эта версия клиента openvpn 2.5.5 x86_64-suse-linux-gnu

Вот маршрут ПК с Linux при обходе маршрутизатора openWRT и запуске клиента openVPN непосредственно на ПК:

по умолчанию через 44.20.6.1 dev br0
44.20.6.0/24 dev br0 ссылка на область действия ядра proto src 44.20.6.2
44.20.11.0/24 dev enp1s0 прото-область ядра ссылка src 44.20.11.187

В любой момент времени у меня работает только один экземпляр клиента openVPN.

Я прочитал все темы, предлагающие изменить MTU. Я пытался установить его на 1492, 1000, и 576 на сетевых устройствах на стороне клиента, без везения. MTU сервера openVPN на стороне сервера установлен на 1492.

И ПК с Linux, и VPN-клиенты openWRT/openVPN используют одну и ту же конфигурацию клиента (соответствующие части включены):

клиент
разработчик тун
поддержка активности 10 300
reeg-sec 0
auth-user-pass
скрипт-безопасность 3
тяга
постоянный ключ
упорный тун
сервер типа ns-cert
комп-льзо
глагол 6
заглушить 20
аутентификация SHA512
шифр AES-256-CBC

Мои наблюдения:

Поскольку это работает при запуске VPN-клиента непосредственно на ПК с Linux, я не считаю, что это неправильная конфигурация клиента или сервера openVPN. Я подозреваю, что проблема кроется между ними, в маршрутизаторе openWRT/openVPN. При ssh'ировании напрямую с роутера openWRT соединение тоже зависает.

мтр 10.84.96.200 показывает отсутствие потери пакетов.

Подозреваю, что проблема может заключаться в одном из этих пунктов:

  1. Я не изменил MTU на правильных сетевых устройствах
  2. MTU должно быть значением, отличным от 1492, 1000 или же 576
  3. На маршрутизаторе openWRT есть настройка брандмауэра, которая нарушает это.
  4. Что-то в openWRT мешает этому

Устройство openWRT представляет собой туристический маршрутизатор gl.inet Slate. Я могу получить доступ к журналам как с клиента, так и с сервера openVPN, но я не могу изменить openVPN на стороне сервера. Я могу получить доступ и изменить сервер ssh на стороне сервера.

Вот диаграмма, которая, надеюсь, объяснит более ясно: связи

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.