¿Cómo hacer que las solicitudes externas de un servidor LAMP eviten la censura de Internet?

¿Cómo hacer que las solicitudes externas de un servidor LAMP eviten la censura de Internet?

tuve otropreguntaen el sitio de AskUbuntu y migré esta versión desde un Server Faultpregunta, ya que creo que el Superusuario es el mejor lugar para preguntarlo.

Fondo:

Tengo un entorno de desarrollo local (Drupal) que consta de un servidor LAMP que se ejecuta en un sistema operativo Xubuntu 12.04 virtualizado con un sistema operativo host Ubuntu 12.04. La red en puente no está habilitada.

Me gustaría comenzar a experimentar con los aspectos de integración web 2.0 de Drupal (es decir, integración de Youtube y Facebook), pero todos estos sitios web están bloqueados por un régimen de filtrado masivo que incluye como mínimo bloqueo de IP, filtrado de DNS, filtrado de URL y filtrado de paquetes. filtrado y utiliza paquetes de restablecimiento de conexión para hacer cumplir estas reglas. Parece que algunos ISP también utilizan filtrado profundo de paquetes para descubrir túneles ssh que luego tienen un ancho de banda limitado; afortunadamente, el ISP de mi apartamento no parece hacer esto en este momento. A los extranjeros no se les prohíbe el uso de proxies/vpns/etc. siempre y cuando no los utilicen para infringir la ley (es decir, compartir material restringido con ciudadanos chinos).

Para la navegación web normal y otras tareas que requieren acceder a contenido bloqueado, utilizo un túnel ssh a un servidor (Ubuntu Server 10.04, con solo ssh y openvpn habilitados) en otro país como proxy calcetines5. Tanto Chromium como Firefox pueden enviar solicitudes DNS de forma nativa a través del proxy calcetines5 (el primero de forma predeterminada y el segundo cambiando una configuración). Esta solución funciona perfectamente para todas las conexiones del lado del navegador a sitios restringidos.

Sin embargo, muchos de los módulos Drupal de integración web 2.0 también requieren que el propio servidor solicite los sitios externos restringidos.

Mi pregunta es:

¿Cuál sería la mejor manera de atravesar mi túnel ssh y pasar el régimen de filtrado?

  • Todas las solicitudes externas y búsquedas de DNS de mi servidor Apache2,

o

  • ¿Solo las solicitudes (y búsquedas de DNS) de mi servidor Apache2 a hosts específicos?

Soluciones consideradas/intentadas

  • La solución más sencilla sería utilizar un servidor LAMP en la máquina fuera del régimen de filtrado (al que hago ssh). Sin embargo, preferiría no hacer esto por varias razones (no hay acceso físico a esta máquina en caso de que algo salga mal, hardware antiguo, si pierdo la conexión a este servidor no puedo continuar con el desarrollo, etc.)
  • Utilice la configuración de proxy global: según mi investigación, Xubuntu no tiene la capacidad de realizar configuraciones globales de calcetines5. Además, no sé si esto captaría mis búsquedas de DNS.

  • uso tsocks: este parece ser el mejor candidato pero tengo dos problemas/preguntas:

    1. ¿Dónde está el script que inicia/reinicia Apache2 para que pueda anteponer estos comandos tsocks?

    2. ¿Cómo puedo detectar y redirigir las búsquedas de DNS a través del proxy calcetines5?

      Editar el /etc/hosts/archivo proporciona una solución limitada, pero sitios como youtube.com cargan medios y otros contenidos de tantos sitios externos (y, por lo tanto, URL) que realizar un seguimiento de todas estas URL de terceros (potencialmente restablecimiento de la conexión) es casi imposible. Usar socatpara capturar, convertir y enviar tráfico UDP a través del proxy calcetines5 (como se describeaquí) parece una buena solución, pero no he podido implementarla como se describe en el tutorial vinculado. (Si socatse confirma que usar es la forma correcta de resolver mi problema, puedo publicar los comandos que estoy usando para revisarlos)

Respuesta1

Apache realmente no realiza las conexiones salientes; PHP lo es. Entonces es PHP el que necesita comunicarse con el proxy SOCKS.

Importante:https://stackoverflow.com/questions/10490962/estableciendo-socket-connection-in-php-using-socks-proxy

Sería más fácil si tuviera un proxy HTTP y más fácil con una VPN. ¿Quizás deberías darle otra oportunidad a la configuración de OpenVPN?

Alternativamente, puede configurar Privoxy en su servidor para comunicarse con su proxy SOCKS y luego configurar PHP para usar Privoxy como proxy HTTP.

información relacionada