netcat을 이용한 포트포워딩

netcat을 이용한 포트포워딩

나는 프로세스를 수신하고 있습니다 IP:port. 실제로 그것은 소켓에 연결된 스파크 스트림입니다. 문제는 한 포트에서 Spark에 연결하고 다른 포트에서 데이터를 스트리밍하는 서버를 어떻게든 만들고 싶다는 것입니다.

예를 들어 Spark 스트리밍 예제에서는 netcat 유틸리티(예: nc -lk 5005)를 사용합니다. 그러나 들어오는 메시지를 수신한 다음 내보내는 또 다른 서비스가 있습니다. 따라서 서비스 A의 메시지를 수신하고 이를 Spark에 전달할 수 있는 일종의 서버가 필요합니다.

내 서비스 A는 소켓에 따라 다릅니다. 내 Spark 소비자는 소켓을 사용합니다.

포트에서 포트로 전달하기 위해 지금까지 수행한 작업은 다음과 같습니다. 그러나 작동하지 않는 것 같습니다.

nc -X 4 -x 127.0.0.1:5005 localhost 5006

아이디어는 서비스 A:5005-> 소켓 -> 5006-> 스파크 입니다.

이 작업을 수행하는 올바른 방법을 찾을 수 없는 것 같습니다.

일부 답변은 다음을 제안했습니다.

socat tcp-l:5005,fork,reuseaddr tcp:127.0.0.1:5006

내 스파크 소켓 수신기가 연결되지 않거나 연결할 수 없는 것 같습니다. 오류가 발생합니다.Error connecting to 127.0.0.1:5006 - java.net.ConnectException: Connection refused

답변1

또는 모드 없이 nc전달 트래픽만 사용할 수 없습니다 .nckeep-alivefork

대신 다른 도구를 사용해야 합니다 nc(예: socat또는 ) .ncat


이 명령은 포트에서 수신 대기 5050하고 모든 것을 포트로 전달합니다.2020

socat tcp-l:5050,fork,reuseaddr tcp:127.0.0.1:2020

Ncat은 명령줄에서 네트워크를 통해 데이터를 읽고 쓸 수 있는 기능이 풍부한 네트워크 유틸리티입니다. Ncat은 Nmap 프로젝트용으로 작성되었으며 유서 깊은 Netcat을 훨씬 개선하여 재구현한 것입니다. 그것

ncat -l localhost 8080 --sh-exec "ncat example.org 80"

사용할 수 있는 다른 도구는 다음과 같습니다.

포트 1234에서 수신 대기하고 주소 "1.1.1.1"의 포트 4567로 전달합니다.

./proxy tcp -p ":1234" -T tcp -P "1.1.1.1:4567"

포트 1234에서 수신 대기하고 주소 "1.1.1.1"의 포트 4567로 전달합니다.원천

./gost -L tcp://:1234/1.1.1.1:4567

답변2

비슷한 사용 사례가 있습니다. 내 목적은 외부 포트에서 수신 대기하고 역방향 SSH 터널을 가리키는 내부 포트로 전달하는 것입니다.

외부 포트: 8001

내부 포트: 18820

nc -l -k -p 8001 -c "nc 127.0.0.1 18820"

인용하다:

한 로컬 포트에서 다른 포트로 터널을 만드는 간단한 방법은 무엇입니까?

netcat 연결을 열어 두는 방법은 무엇입니까?

답변3

net cat을 통한 포트 전달의 경우 파이프를 사용할 수 있습니다.

mkfifo pip
nc -l -p port_to_listen < pip | nc target_ip port_to_be_forwarded > pip

또는:

nc target_ip port_to_be_forwarded < pip | nc -l -p port_to_listen > pip

관련 정보