나가는 모든 트래픽에 대해 프록시 서버를 동적으로 변경

나가는 모든 트래픽에 대해 프록시 서버를 동적으로 변경

제가 다니는 대학에는 세 개의 프록시 서버가 있는데, 모두 세 개의 서로 다른 서비스 제공업체에 연결되어 있습니다. 서로 다른 순간에 서로 다른 프록시는 서로 다른 속도를 제공합니다(해당 순간에 해당 프록시를 사용하는 사용자 수에 따라 다름). 나는 다른 순간에 브라우저(또는 다른 네트워크 응용 프로그램)에서 프록시 서버 구성을 변경하는 데 매우 시간이 많이 걸린다고 생각합니다. 일종의 테스트를 수행하여 다른 순간에 모든 네트워크 응용 프로그램에서 사용하는 프록시 서버를 동적으로 변경할 수 있는 하나의 스크립트를 작성하고 싶습니다.

나는 그것으로 시작할 수 없습니다. 누군가 나에게 그것을 구현할 수 있도록 몇 가지 아이디어를 줄 수 있습니까?

답변1

당신이 사용할 수있는프록시.PAC또는WPAD.DAT

이는 단지 JavaScript이므로 인트라넷의 모든 웹 서버에서 이 파일을 호스팅하고 클라이언트 측에서 설정할 수 있습니다 http://webserever-ip/proxy.pac. 이 스크립트를 사용하면 할 수 있습니다로드 밸런싱세 개의 프록시로. 또한 이 자바 스크립트에서는 IP 범위를 사용하여 트래픽을 나눌 수 있으며, 인트라넷이나 웹 사이트 우회와 같은 여러 기능이 있습니다.

모든 클라이언트 측에서 이 스크립트를 자동으로 설정할 수 있습니다. 동일한 경우 아래 옵션이 필요합니다.

  • 도메인 네트워크를 사용하는 경우 그룹 정책을 사용하여 Proxy.pac을 설정하십시오.
  • DHCP를 사용하여 WPAD.DAT를 설정할 수 있습니다.
  • DNS

답변2

단일 지점에서 프록시를 구성하려면 다음과 같은 iptables 규칙을 사용하여 대상 주소 다시 쓰기를 수행하는 라우터를 설정할 수 있습니다.

iptables -t nat -A PREROUTING -p tcp -d VIRTUAL_PROXY_IP --dport 80 -j NETMAP --to CURRENT_PROXY_IP

모든 애플리케이션과 브라우저는 VIRTUAL_PROXY_IP를 프록시로 사용하므로 이 특수 라우터를 통해 라우팅해야 합니다. CURRENT_PROXY_IP를 변경하려면 필요에 따라 규칙을 변경하세요.

이 접근 방식의 장점은 설정이 빠르고 관리가 쉽다는 것입니다. 단점은 세션이 열려 있는 일부 사용자에게 약간의 혼란이 있을 수 있다는 것입니다(세션 유형 및 업스트림 프록시 유형에 따라 다름). 또한 프록시를 변경하려면 스크립트를 직접 작성하거나 수동으로 변경해야 합니다.

sr_의 의견에서 제안한 더 나은 솔루션은 로드 밸런서를 설정하는 것입니다. LVS를 고려하거나HAProxy

답변3

오징어를 사용한다고 가정하면동일한 표시 이름을 공유하는 두 형제 프록시가 나에게 도움이 되는 것 같습니다. 저는 각각 Proxy1과 Proxy2라는 이름으로 2개를 설정했습니다. 표시되는 호스트 이름은 프록시입니다. 이 시점에서 해야 할 일은 Proxy1 및 Proxy1의 IP 주소를 사용하여 이름 프록시에 대한 A 레코드를 DNS에 만드는 것뿐입니다. squid.conf에서 형제로 설정되어 있는 한. 여기를 보세요http://horms.net/projects/redundant_linux_paper/관련/squid/hierarchies/concepts.html

답변4

간단한 솔루션

로컬 호스트 파일에서 프록시 서버에 대한 호스트 별칭을 설정합니다.

192.168.1.1 chosenproxy #192.168.1.2 chosenproxy #192.168.1.3 chosenproxy

이제 이 별칭을 사용하도록 모든 애플리케이션을 구성하세요.http://chosenproxy:8080

그런 다음 다른 서버를 시도하려면 호스트 파일에서 IP 주소를 편집하면 됩니다.

관리 가능한 포트 솔루션

포트도 변경해야 하는 경우에는 polipo와 같은 경량 프록시 프로그램 중 하나를 사용하세요. Polipo는 기본적으로 포트 8123에서 실행되므로 모든 응용 프로그램이 로컬로 실행되는 polipo를 통해 연결되도록 설정하십시오(예: 설정 사용).http://localhost:8123

그런 다음 다른 프록시 서버를 시도하려면 polipo 구성 파일( /etc/polipo/config)을 변경하여 올바른 상위 프록시 서버 및 포트 번호를 지정하고 polipo를 다시 시작하여 변경 사항을 활성화하십시오.

관련 정보