iptables를 사용하여 글로벌 프록시 구현

iptables를 사용하여 글로벌 프록시 구현

저는 pac 파일을 사용하여 인터넷 액세스를 구성하는 Windows 환경에서 Linux 박스(Lubuntu 12.04)를 실행하고 있습니다.

Proxy.pac 파일:

function FindProxyForURL(url, host){
  var proxy_yes = "PROXY xxx.xxx.xxx.xxx:8000";
  var proxy_no = "DIRECT";
  if (shExpMatch(url, "*//yyy.*")) { return proxy_no; }
  if (shExpMatch(url, "*//zzz.zzz.*")) { return proxy_no; }
  if (shExpMatch(url, "*foo.com*")) { return proxy_no; }
  //Proxy anything else
  return proxy_yes;
}

내가 아는 한 Lubuntu에는 글로벌 프록시 시스템이 없습니다.

일부 프로그램(예를 들어 Chromium은 아님)만 존중하는 HTTP_PROXY와 같은 셸 변수를 사용하는 대신 iptables를 사용하여 프록시를 통해 모든 트래픽을 투명하게 리디렉션하여 글로벌 프록시를 효과적으로 구현할 수 있다고 생각했습니다.

이것이 가능합니까? 만약 가능하다면 어떻게 해야 합니까?

편집: 저는 관리자가 아니며 프록시를 설정하려는 것도 아니라는 점을 분명히 해야 합니다. 프록시는 이미 설정되어 있으며 컴퓨터를 인터넷에 연결하려면 자동 프록시 구성을 활성화하고 위의 pac 파일을 가리켜야 합니다. 직접 연결이 차단되었습니다.

모든 애플리케이션을 개별적으로 구성하는 대신 iptables를 사용하여 자동으로 프록시를 통해 트래픽을 라우팅하기를 원했습니다.

답변1

한번도 사용해본 적이 없다고 고백 하지만, 가상 머신에서 실행되는 파생물 Lubuntu일 뿐이라고 생각합니다 . Ubuntu프록싱을 수행하기 위해 자바스크립트에 의존하는 것은 매우 어리석은 일입니다. 왜냐하면 많은 경우에 쉽게 우회되거나 완전히 무시되기 때문입니다. 결국 프록시를 사용하여 시작하는 이점이 무산됩니다.

다음을 사용하여 적절한 프록시 시스템을 설정하는 것으로 시작하겠습니다.squid. 파생상품 의 경우 저장소에 또는 를 사용하여 쉽게 설치할 수 있는 패키지 ubuntu가 있습니다 . 설치 후에는 다음 설정을 편집하여 적절하다고 판단되는 설정을 추가하거나 수정하십시오.squidaptsynaptic/etc/squid/squid.conf

httpd_accel_host virtual
httpd_accel_port 80
httpd_accel_with_proxy on
httpd_accel_uses_host_header on
acl lan src 192.168.1.1 192.168.2.0/24
http_access allow localhost
http_access allow lan

사용할 수 있는 구성 옵션이 훨씬 더 많지만 이는 대부분의 용도에 아주 좋은 시작입니다. 그 후 다음 단계는 기본 라우터에서 iptables를 구성하고 DNAT트래픽을 프록시로 리디렉션하는 것입니다 squid.

iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j DNAT --to 192.168.1.1:3128
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128

물론, 이를 일종의 시작 스크립트에 넣어 라우터가 부팅할 때마다 규칙이 적용되기를 원할 것입니다. 또한 트래픽이 프록시되는(또는 중간에 있는 사람에 의해 가로채기/복호화 등) 허용되지 않도록 의도적으로 설계되었으므로 이는 https트래픽 에 영향을 미치지 않는다는 점을 명심하십시오 . https(의심스러운 사이트로의) 트래픽을 필터링하려면 다음을 수행할 수도 있습니다.SquidGuard믹스에.

https 트래픽을 프록시하는 것이 가능하지만 그다지 권장되지는 않습니다. 해당 기능을 정말로 구현하고 싶다면 좋은 가이드가 있습니다.여기.

답변2

이것이 내가 한 일입니다.

  • 환경 변수 ALL_PROXY, HTTP_PROXY, HTTPS_PROXY, FTP_PROXYNO_PROXY를 설정합니다 /etc/environment.
  • apt in에 대한 http, https 및 ftp 프록시 설정 /etc/apt/apt.conf.d/80proxy(구문 사용 Acquire::http::proxy "http://xxx.xxx.xxx.xxx:8000";)
  • 사용프록시체인환경 변수를 존중하지 않고 프록시에 대한 기본 지원이 없는 나머지 프로그램의 경우.

관련 정보