У меня есть устройство, назовем его d1, работающее на облегченном Linux. Это устройство NAT от моего интернет-бокса / маршрутизатора, поэтому недоступно из Интернета. Это устройство запускает на нем демон telnet, и у него есть только пользователь root (без pwd). Его IP-адрес - 192.168.0.126 в частной сети.
Из частной сети (скажем, 192.168.0.x) я могу сделать:
telnet 192.168.0.126
Где 192.168.0.126 - это IP-адрес в частной сети. Это работает правильно.
Однако, чтобы разрешить администрирование, мне нужно было бы получить доступ к этому устройству за пределами этой частной сети. Следовательно, я создал SSH-туннель, например, на d1:
ssh -R 4455:localhost:23 ussh@s1
s1 - это сервер где-то в частной сети (но это только для целей тестирования, он будет где-то в Интернете), на котором работает стандартный дистрибутив Linux и на котором я создал пользователя с именем «ussh». s1 IP-адрес: 192.168.0.48.
Когда я 'telnet' со следующим, скажем, из c1, 192.168.0.19:
telnet -l root s1 4455
Я получил :
Trying 192.168.0.48...
Connected to 192.168.0.48.
Escape character is '^]'.
Connection closed by foreign host
,
Соединение закрывается примерно через 30 секунд, и я не вошел в систему. Я пытался без ключа -l, но безуспешно. Я попытался «telnet» с IP-адресами вместо имен, чтобы избежать проблем с обратным DNS (хотя я добавил на d1 /etc /hosts строку, ссылающуюся на s1 IP / имя, на всякий случай), но безуспешно. Я пробовал на другом порту, чем 4455, безуспешно.
Я собрал логи Wireshark от s1. Я могу видеть :
s1 отправляет данные SSH на c1, c1 ACK
s1 выполняет DNS-запрос AAAA для c1, получает только серверы имен Authoritave.
s1 выполняет запрос DNS A, затем получает IP-адрес c1
s1 отправляет пакет SYN на c1, c1 отвечает RST/ACK
s1 отправляет SYN на c1, C1 RST/ACK (?)
Через 0,8 секунды c1 отправляет SYN на s1, s1 SYN/ACK и затем c1 ACK
s1 отправляет содержимое SSH на d1, d1 отправляет ACK обратно на s1
s1 повторяет запросы AAAA и A DNS
Через 5 секунд s1 повторяет SYN к c1, еще раз он RST/ACKed c1. Это повторяется еще 3 раза.
Последние пять пакетов: d1 отправляет содержимое SSH на s1, s1 отправляет ACK и FIN/ACK на c1, c1 отвечает FIN/ACK, s1 отправляет ACK на c1.
Кажется, что соединение закрывается демоном telnet через 22 секунды.
AFAIK, нет никакого способа декодировать поток SSH, поэтому я действительно застрял здесь ...
Есть идеи ?
Спасибо !