포트 포워딩에 netcat 사용


20

청취하는 프로세스가 있습니다 IP:port-실제로 소켓에 연결되는 스파크 스트리밍입니다. 문제는 어떻게 든 한 포트에서 스파크에 연결하는 서버를 만들고 싶습니다. 데이터는 다른 포트 에서이 서버로 스트리밍됩니다.

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

내 서비스 A는 소켓에 의존합니다. 그리고 내 스파크 소비자는 소켓에 의존합니다.

여기 내가 지금까지 한 일은 포트에서 포트로의 포워딩이지만 작동하지 않는 것 같습니다.

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


포트 5006이 열려 있습니까?! ; whatis ouput이 명령 sudo netstat -nltp
بارپابابا

답변:


28

만 사용할 수 없습니다 nc앞으로 트래픽을 nc 하지 않았 keep-alive거나 fork모드

대신 다른 도구를 사용해야합니다 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

1
고마워, 첫 번째 socat 테스트를 시도했지만 문제는 스트리밍 인스턴스가 항상 무언가를 기대하고 5006에서 듣고 있다는 것입니다.이 없이는 오류가 발생합니다.
파괴적인

NCAP도 ... 몇 가지 흥미로운 것들에 대한 허용하는 ... 프록시에 대한 옵션이 있습니다 ( gost보이는 멋진하지만 ....)
게르트 반 베르그 덴
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.