
저는 수십 개의 방화벽과 대규모 프록시 서버를 갖춘 대기업에서 근무하고 있습니다. 때때로 격리된 네트워크에 있는 일부 서비스에 액세스해야 하며 해당 네트워크의 서비스에 액세스할 수 있습니다. 현재 다음과 같은 접근 방식이 있습니다.
예를 들어 로컬 터널을 구성하는 앱이 있습니다.
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
(예를 들어) localhost:30001을 가리키는 각 웹 서비스에 대한 북마크가 있습니다.
localhost:30001 URL을 사용하도록 개발하는 로컬 프로그램을 구성합니다.
동적 포트 전달 및 양말 프록시를 사용하는 다른 방법이 있다는 것을 알고 있지만 이를 구성하는 것은 정말 고통스럽습니다(어쨌든 회사의 시스템 전체 프록시가 있어야 한다는 점을 고려하면).
super01.secret.host:3419로 이동하는 요청을 리디렉션하고 localhost:30001을 통해 라우팅하는 방법이 있습니까? 그러면 secretServer1 서버를 통해 super01.secret.host에 액세스하도록 정의하는 앱(스크립트)을 구현할 수 있으며 로컬 포트 전달을 열고 리디렉션을 생성합니다. 아니면 이것을 구성하는 더 좋은 방법이 있습니까?
내 주요 목표: - 시스템 전반에 걸쳐 모든 네트워킹 설정을 갖습니다. - 격리된 네트워크의 서비스에 투명하게 액세스합니다(예: 해당 네트워크에서 super01.secret.host:8080에 액세스해야 하는 경우 내 로컬 컴퓨터와 동일한 호스트 및 포트) - 나머지 모든 네트워킹이 이전과 같이 작동하도록 만들고 싶습니다(예: noproxy 목록에 없는 경우 요청이 회사의 프록시를 통해 라우팅됩니다).
답변1
iptables를 사용하여 SSH 프록시와 포트 전달을 모두 사용할 수 있습니다.
당신이 하는 것처럼 SSH 프록시를 설정합니다.
포트 포워딩, 예. 첫 번째 리디렉션의 경우
iptables -A PREROUTING -t nat -i eth0 -p tcp -d secretServer1 --dport 3419 -j DNAT --to localhost:3001
메모: 이것은 테스트되지 않았습니다