특정 포트의 트래픽을 다른 시스템으로 전달하는 가장 좋은 방법은 무엇입니까?

특정 포트의 트래픽을 다른 시스템으로 전달하는 가장 좋은 방법은 무엇입니까?

내가 가진 설정은 다음과 같습니다.

[client01] <-A-> [server01] <-B-> [server02]

client01server01(연결 ) 의 포트 9300에 액세스할 수 있습니다 A. (연결 ) 의 server01포트에만 액세스할 수 있습니다 .9300server02BSSH를 통해. 포트의 모든 트래픽을 포트로 이동시키는 가장 9300좋은 방법은 무엇입니까 ?server019300server02

client01에서 server01까지 의 SSH 터널을 사용하여 이 작업을 성공적으로 수행할 수 있지만 server02에서 ssh를 실행하고 싶지는 않습니다 client01. 에서 포워딩 포트 9300( on ) server01으로 SSH를 연결할 때 작동하지 않습니다. 잘못된 명령을 사용하고 있는 것입니까?server02ssh -g -L9300:localhost:9300 server02server01

편집: server02는 SSH를 통해서만 연결할 수 있다고 추가했습니다.

답변1

다음과 같이 iptables DNAT 규칙을 사용하여 이 작업을 수행할 수 있습니다.

iptables -A PREROUTING -p tcp -d x.x.x.x --dport 9300 -j DNAT --to-destination y.y.y.y:9300

server01의 IP 주소를 x.x.x.xserver02의 주소로 대체 y.y.y.y하면 설정됩니다.

물론 이것은 모두 server01에서 iptables를 실행하고 있다고 가정합니다. 이는 또한 server02가 server01을 사용하여 트래픽을 다시 인터넷으로 라우팅한다고 가정합니다. server02가 그렇지 않으면 원하는 작업을 수행하지 않는 것입니다.

머신 간의 SSH 전용 연결을 고려하여 편집하십시오.

SSH 포트 전달에 대한 명령줄은 "L"과 "9300" 사이에 공백이 필요하다는 점을 제외하면 괜찮아 보입니다. 또한 server01 컴퓨터가 포트 9300에서 인바운드 연결을 허용하는지 확인해야 합니다. iptables -L INPUT트래픽이 허용되는지 확인하려면 필터 테이블( )에서 iptables INPUT 체인을 살펴보세요.

해당 터널도 지속적으로 유지되어야 합니다.

관련 정보