LAMP 서버의 외부 요청이 인터넷 검열을 우회하도록 하는 방법은 무엇입니까?

LAMP 서버의 외부 요청이 인터넷 검열을 우회하도록 하는 방법은 무엇입니까?

나는 또 다른 것을 가지고 있었다질문AskUbuntu 사이트에서 이 버전을 Server Fault에서 마이그레이션했습니다.질문, 내 생각에는 슈퍼유저가 요청하기에 가장 좋은 위치라고 생각합니다.

배경:

Ubuntu 12.04의 호스트 OS가 있는 가상화된 Xubuntu 12.04 OS에서 실행되는 LAMP 서버로 구성된 로컬(Drupal) 개발 환경이 있습니다. 브리지 네트워킹이 활성화되지 않았습니다.

Drupal의 웹 2.0 통합 측면(예: Youtube 및 Facebook 통합)에 대한 실험을 시작하고 싶지만 이러한 웹사이트는 최소한 IP 차단, DNS 필터링, URL 필터링 및 패킷을 포함하는 대규모 필터링 체제에 의해 모두 차단됩니다. 필터링하고 연결 재설정 패킷을 사용하여 이러한 규칙을 적용합니다. 일부 ISP는 대역폭이 제한된 SSH 터널을 검색하기 위해 심층 패킷 필터링을 사용하는 것으로 보입니다. 다행히도 제가 사는 아파트에 있는 ISP는 현재 이 작업을 수행하지 않는 것 같습니다. 외국인은 프록시/VPN/등을 사용하는 것이 금지되지 않습니다. 법을 위반하기 위해 이를 사용하지 않는 한(즉, 중국 국민과 제한된 자료를 공유하는 경우)

일반적인 웹 탐색 및 차단된 콘텐츠에 액세스해야 하는 기타 작업의 경우 다른 국가에 있는 서버(Ubuntu Server 10.04, ssh 및 openvpn만 활성화됨)에 대한 ssh 터널을 양말5 프록시로 사용합니다. Chromium과 Firefox는 모두 기본적으로 Socks5 프록시를 통해 DNS 요청을 보낼 수 있습니다(전자는 기본적으로, 후자는 구성 설정을 변경하여). 이 솔루션은 제한된 사이트에 대한 모든 브라우저 측 연결에 완벽하게 작동합니다.

그러나 많은 웹 2.0 통합 Drupal 모듈에서는 서버 자체가 제한된 외부 사이트를 요청해야 합니다.

내 질문은 다음과 같습니다

내 SSH 터널을 통과하고 필터링 체제를 통과하는 가장 좋은 방법은 무엇입니까?

  • 내 Apache2 서버의 모든 외부 요청 및 DNS 조회,

또는

  • 내 Apache2 서버에서 지정된 호스트로의 요청(및 DNS 조회)만 수행됩니까?

고려/시도된 솔루션

  • 가장 간단한 해결책은 필터링 체제 외부의 머신(내가 ssh로 연결한 머신)에서 LAMP 서버를 사용하는 것입니다. 그러나 나는 여러 가지 이유로 이 작업을 수행하지 않는 것을 선호합니다(무언가 문제가 발생할 경우를 대비해 이 시스템에 물리적으로 액세스할 수 없음, 오래된 하드웨어, 이 서버에 대한 연결이 끊어지면 개발을 계속할 수 없음 등).
  • 전역 프록시 설정 사용 - 내 연구에 따르면 Xubuntu에는 전역 양말5 설정 기능이 없습니다. 또한 이것이 내 DNS 조회를 포착할 수 있는지도 모르겠습니다.

  • use tsocks: 이것이 가장 좋은 후보인 것 같지만 두 가지 문제/질문이 있습니다.

    1. Apache2를 시작/다시 시작하여 이러한 명령을 앞에 붙일 수 있는 스크립트는 어디에 있습니까 tsocks?

    2. Socks5 프록시를 통해 DNS 조회를 어떻게 포착하고 리디렉션합니까?

      파일 을 편집하면 /etc/hosts/제한된 해결 방법이 제공되지만 youtube.com과 같은 사이트에서는 너무 많은 외부 사이트(및 URL)의 미디어 및 기타 콘텐츠를 로드하므로 이러한 모든(잠재적으로 연결 재설정) 제3자 URL을 추적하는 것이 거의 불가능합니다. socatSOCKS5 프록시를 통해 UDP 트래픽을 캡처, 변환 및 전송하는 데 사용 (설명 참조)여기) 좋은 해결책인 것 같지만 링크된 튜토리얼에 설명된 대로 구현할 수 없었습니다. (사용하는 것이 socat문제를 해결하는 적절한 방법이라고 확인되면 검토를 위해 사용 중인 명령을 게시할 수 있습니다.)

답변1

Apache는 실제로 아웃바운드 연결을 수행하지 않습니다. PHP는. 따라서 SOCKS 프록시와 통신해야 하는 것은 PHP입니다.

관련 있는:https://stackoverflow.com/questions/10490962/founding-socket-connection-in-php-using-socks-proxy

HTTP 프록시가 있으면 더 쉬울 것이고 VPN을 사용하면 더 쉬울 것입니다. OpenVPN 설정을 다시 포기해야 할까요?

또는 서버에서 Privoxy를 설정하여 SOCKS 프록시와 통신한 다음 Privoxy를 HTTP 프록시로 사용하도록 PHP를 구성할 수 있습니다.

관련 정보