SSH를 통해 특정 도메인에 액세스하기 위해 프록시를 투명하게 우회합니다.

SSH를 통해 특정 도메인에 액세스하기 위해 프록시를 투명하게 우회합니다.

저는 수십 개의 방화벽과 대규모 프록시 서버를 갖춘 대기업에서 근무하고 있습니다. 때때로 격리된 네트워크에 있는 일부 서비스에 액세스해야 하며 해당 네트워크의 서비스에 액세스할 수 있습니다. 현재 다음과 같은 접근 방식이 있습니다.

  1. 예를 들어 로컬 터널을 구성하는 앱이 있습니다.

    ssh -L 30001:super01.secret.host:3419 secretServer1
    ssh -L 30002:super01.secret.host:8080 secretServer1
    ssh -L 30011:super02.secret.host:8080 secretServer1
    ssh -L 30021:super03.secret.host:4000 secretServer2
    
  2. (예를 들어) localhost:30001을 가리키는 각 웹 서비스에 대한 북마크가 있습니다.

  3. localhost:30001 URL을 사용하도록 개발하는 로컬 프로그램을 구성합니다.

동적 포트 전달 및 양말 프록시를 사용하는 다른 방법이 있다는 것을 알고 있지만 이를 구성하는 것은 정말 고통스럽습니다(어쨌든 회사의 시스템 전체 프록시가 있어야 한다는 점을 고려하면).

super01.secret.host:3419로 이동하는 요청을 리디렉션하고 localhost:30001을 통해 라우팅하는 방법이 있습니까? 그러면 secretServer1 서버를 통해 super01.secret.host에 액세스하도록 정의하는 앱(스크립트)을 구현할 수 있으며 로컬 포트 ​​전달을 열고 리디렉션을 생성합니다. 아니면 이것을 구성하는 더 좋은 방법이 있습니까?

내 주요 목표: - 시스템 전반에 걸쳐 모든 네트워킹 설정을 갖습니다. - 격리된 네트워크의 서비스에 투명하게 액세스합니다(예: 해당 네트워크에서 super01.secret.host:8080에 액세스해야 하는 경우 내 로컬 컴퓨터와 동일한 호스트 및 포트) - 나머지 모든 네트워킹이 이전과 같이 작동하도록 만들고 싶습니다(예: noproxy 목록에 없는 경우 요청이 회사의 프록시를 통해 라우팅됩니다).

답변1

iptables를 사용하여 SSH 프록시와 포트 전달을 모두 사용할 수 있습니다.

  1. 당신이 하는 것처럼 SSH 프록시를 설정합니다.

  2. 포트 포워딩, 예. 첫 번째 리디렉션의 경우

    iptables -A PREROUTING -t nat -i eth0 -p tcp -d secretServer1 --dport 3419 -j DNAT --to localhost:3001
    

메모: 이것은 테스트되지 않았습니다

관련 정보