3개의 IP가 있는 서버가 있는데 이를 A, B, C라고 부르겠습니다.
IP A 포트 5000을 통해 이 서버에 연결하고 IP B를 통해 트래픽 프록시를 가져야 합니다.
그리고 IP A 포트 5001을 사용할 때 내 트래픽은 C를 통해 프록시됩니다.
iptables만 사용할 수 있나요? 아니면 오징어 같은 것이 필요합니까?
나는 성공하지 못한 채 몇 가지 NAT 규칙을 시도했습니다.
감사해요!
답변1
나는 이것이 좋은 질문이라고 생각합니다. 여러 가지 방법으로 이를 달성할 수 있습니다. 하지만 지금은 단 하나의 솔루션만 제공합니다. SSH 터널을 사용한 다음 애플리케이션에서 SOCKS 프록시를 사용하도록 할 수 있습니다.
트래픽이 HTTP라고 가정합니다. 로컬 수신 포트가 있는 클라이언트 시스템(이 경우 노트북)에서 두 개의 SSH 터널을 생성합니다.5001그리고5002각기. 터널이 곧 열려요서버-B다른 사람이 뚫을 것이다서버-C인터넷에. 프로세스는 다음과 같습니다.
(랩탑)--->서버-A---->서버-B----->인터넷
(랩탑)--->서버-A---->서버-C----->인터넷
인터넷 관점에서 볼 때 트래픽은 다음에서 발생합니다.서버-B애플리케이션이 포트를 사용하는 경우5001SOCKS 프록시 역할을 하며,서버-C애플리케이션이 포트를 사용하는 경우5002SOCKS 프록시로서서버-A투명해지세요.
랩톱에서 다음 두 명령을 실행하여 두 개의 SSH 터널을 생성하고 바인딩합니다 localhost:5001
.localhost:5002
ssh -f -N -D 5001 -oProxyCommand="ssh -W %h:%p user@server-A" user@server-B
ssh -f -N -D 5002 -oProxyCommand="ssh -W %h:%p user@server-A" user@server-C
랩탑에서 애플리케이션(예: Firefox 브라우저) 이 SOCKS 프록시를 가리키도록 127.0.0.1:5001
하거나 그에 따라 사용하십시오.127.0.0.1:5002
인용하다:OpenSSH 위키