로컬로 전달된 백포트에 연결하기 위해 포트 주소 변환을 수행하는 방법

로컬로 전달된 백포트에 연결하기 위해 포트 주소 변환을 수행하는 방법

4개의 Splunk 인덱서를 실행 중이고 포트 9997에 연결해야 합니다. 127.0.0.1:8971에 연결할 수 있는 역방향 SSH 포트 전달 외에 이러한 Splunk 서버에 대한 직접적인 가시선이나 라우팅 방법이 없습니다. , 127.0.0.1:8972, 127.0.0.1:8973 및 127.0.0.1:8974.

내 Linux 시스템(sles 11 SP4)을 어떻게 속일 수 있습니까?

  • 1.2.3.1:9997 -> 127.0.0.1:8971
  • 1.2.3.2:9997 -> 127.0.0.1:8972
  • 1.2.3.3:9997 -> 127.0.0.1:8973
  • 1.2.3.4:9997 -> 127.0.0.1:8974

출력 규칙이 있습니다.

   51  3060 DNAT       tcp  --  *      *       0.0.0.0/0            1.2.3.4       tcp dpt:9997 to:127.0.0.1:8971

이것은 작동하지만 내가 얻은 응답은 쓰레기입니다.

14:37:23.425219 IP 192.168.58.10.55403 > 127.0.0.1.8971: S 2063729062:2063729062(0) win 14600 <mss 1460,sackOK,timestamp 1532158690 0,nop,wscale 5>
14:37:23.425243 IP 127.0.0.1.8971 > 192.168.58.10.55403: S 2663988489:2663988489(0) ack 2063729063 win 32768 <mss 16396,sackOK,timestamp        1532158690 1532158690,nop,wscale 5> 
14:37:23.425249 IP 192.168.58.10.55403 > 127.0.0.1.8971: R 2063729063:2063729063(0) win 0

포트 전달에 직접 연결하는 것처럼 소켓을 완료하지 않습니다.

14:38:33.822640 IP 127.0.0.1.34731 > 127.0.0.1.8971: S 2794569169:2794569169(0) win 32792 <mss 16396,sackOK,timestamp 1532176289 0,nop,wscale 5>
14:38:33.822649 IP 127.0.0.1.8971 > 127.0.0.1.34731: S 1241947612:1241947612(0) ack 2794569170 win 32768 <mss 16396,sackOK,timestamp 1532176289 1532176289,nop,wscale 5>
14:38:33.822655 IP 127.0.0.1.34731 > 127.0.0.1.8971: . ack 1 win 1025 <nop,nop,timestamp 1532176289 1532176289>
14:38:33.822991 IP 127.0.0.1.34731 > 127.0.0.1.8971: F 1:1(0) ack 1 win 1025 <nop,nop,timestamp 1532176289 1532176289>
14:38:33.825172 IP 127.0.0.1.8971 > 127.0.0.1.34731: . ack 2 win 1024 <nop,nop,timestamp 1532176290 1532176289>
14:38:33.835115 IP 127.0.0.1.8971 > 127.0.0.1.34731: F 1:1(0) ack 2 win 1024 <nop,nop,timestamp 1532176292 1532176289>
14:38:33.835138 IP 127.0.0.1.34731 > 127.0.0.1.8971: . ack 2 win 1025 <nop,nop,timestamp 1532176292 1532176292>

답변1

DNS 또는 호스트 이름을 사용할 수 있으면 다음을 수행할 수 있습니다.

  1. 역방향 터널을 사용하여 SSH 열기(시스템 자동화를 위해 키 입력 SSH 연결 사용 권장)
  2. 터널이 설정되면 /etc/hosts 파일에 호스트 이름 항목을 추가하되 127.0.0.1을 가리키도록 합니다.
  3. 터널이 닫히면 이러한 항목이 /etc/hosts 파일에서 제거됩니다.

1단계는 매우 간단하고 예도 많습니다.
2단계와 3단계는 그리 간단하지는 않지만 간단합니다.

높은 수준에서 cron을 사용하여 스크립트를 트리거하고, netstat의 출력을 보고 활성 역방향 연결이 있는지 확인한 다음 sed 또는 awk를 사용하여 올바른 주소를 가리키도록 호스트 파일을 다시 작성합니다.

호스트 이름이 실용적이지 않은 경우 1 대신 127.0.0.x를 사용하고 포트를 분산하도록 원격 터널 설정을 다시 정의할 수 있습니다.

그것은 마치

ssh credentials -NT -R 1.2.3.1:9997:127.0.0.2:9997 

관련 정보