장치가 있는데 가벼운 Linux를 실행하면서 d1이라고 부릅니다. 이 장치는 인터넷 상자 / 라우터로 NAT되어 있으므로 인터넷에서 연결할 수 없습니다. 이 장치는 텔넷 데몬을 실행하며 root는 사용자 (pwd 없음)입니다. 개인 네트워크의 IP 주소는 192.168.0.126입니다.
개인 네트워크에서 (192.168.0.x라고 말하면) 할 수 있습니다.
telnet 192.168.0.126
여기서 192.168.0.126은 개인 네트워크의 IP 주소입니다. 이것은 올바르게 작동합니다.
그러나 관리를 허용하려면 개인 네트워크 외부에서 해당 장치에 액세스해야합니다. 따라서 d1에서 다음과 같은 SSH 터널을 만들었습니다.
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 스위치없이 시도했다. 역 DNS 문제를 피하기 위해 이름 대신 IP 주소로 'telnet'을 시도했지만 (d1 / etc / hosts에 s1 IP / name을 참조하는 행을 추가했지만) 성공하지 못했습니다. 4455 이외의 다른 포트에서 시도했지만 성공하지 못했습니다.
s1에서 Wireshark 로그를 수집했습니다. 볼 수 있습니다 :
s1은 SSH 데이터를 c1에 보내고 c1 ACK
s1은 c1에 대한 AAAA DNS 요청을 수행하고 Authoritave 이름 서버 만 가져옵니다.
s1은 A DNS 요청을 수행 한 다음 c1의 IP 주소를 얻습니다.
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를 재 시도하고 DNS 요청을
재 시도합니다. 5 초 후, s1은 SYN을 c1로 재 시도합니다. c1. 이 과정이 3 번 더 반복됩니다.
마지막 5 개 패킷 : d1은 SSH 내용을 s1로 보내고, s1은 ACK와 FIN / ACK를 c1로 보내고, c1은 FIN / ACK로 응답하고, s1은 ACK를 c1로 보냅니다.
22 초 후에 텔넷 데몬이 연결을 닫은 것 같습니다.
AFAIK, SSH 스트림을 디코딩 할 수있는 방법이 없으므로 실제로 여기에 붙어 있습니다 ...
어떤 아이디어?
감사합니다 !