트래픽을 양방향으로 라우팅해야하는 다중 홉 SSH 터널을 시도하고 있습니다. 내 네트워크 설정은 다음과 같습니다
ssh remoteforward over multiple hops
내 개인 쉘 machineA가 machineB이 machineC에 SSH 수 machineB
에 SSH 수 machineA
에
machineC 로컬 가공으로 이더넷을 통해 연결되어
서비스 실행이 있습니다 machineD가 machineD의 portX에 UDP 패킷을 보내고 machineD가 UDP를 통해 machineC의 portY로 응답을 보냅니다.
내가 성공적으로 수행 한 다음
ssh를 machineB (machineA에서)
(쉘 결과에서)
SSH (결과 쉘에서) machineC
는 "내 명령을"에코 | 가공의 서비스
NC -ul portY #Read machineC의 포트에 결과에 NC -u 가공 portX #Send 명령
A는 서비스 명령을 공식화하고 결과를 구문 분석합니다.
ssh를 machineB (machineA에서)
(다시 machineA에서)
ssh를 machineC
:
host machineB
hostname x.x.x.x
user username_machineB
localforward 1234 machineC:22
host machineC
hostname localhost
user username_machineC
port 1234
localforward 1235 machineD:portX
remoteforward 1236 localhost:portY
가 나는 다음을 할 수있는 생각 : 나는 내 SSH를 설정 파일에 다음을 시도 (machineA에서 다시)
echo "my command"| nc -u localhost 1235
nc -ul 1236
하지만 ... 작동하지 않는 것 같습니다. 예상되는 응답이 1236에 표시되지 않습니다. 정확하게 디버깅하는 방법을 모르겠습니다. 또한 machineC의 구성에서 "localforward"및 "remoteforward"행의 형식을 완전히 알지 못합니다. 나는 그 라인들을 평가할 때 누가 "로컬 호스트"로 해석 될지 모른다. remoteFwarding이 machineC에서 사용되지 않을 수도 있습니다.하지만 먼저 다른 모든 것을 올바르게 구성했는지 확인하려고합니다. 나는 그것을 잘못하고 있나?
또는 machineB, C 또는 D의 구성을 변경하지 않고도 최종 목표를 달성 할 수있는 다른 방법이 있습니까? 내가하고 싶은 것은 machineA를 사용하여 machineD를위한 복잡한 명령을 프로그램 적으로 구성하고 machineA에서도 스크립트를 사용하여 결과를 파싱하는 것이다.