Como fazer com que solicitações externas de um servidor LAMP contornem a censura da Internet?

Como fazer com que solicitações externas de um servidor LAMP contornem a censura da Internet?

eu tive outroperguntano site askUbuntu, e migrei esta versão de uma falha no servidorpergunta, pois acho que o Superusuário é o melhor local para fazer isso.

Fundo:

Eu tenho um ambiente de desenvolvimento local (Drupal) que consiste em um servidor LAMP rodando em um sistema operacional Xubuntu 12.04 virtualizado com um sistema operacional host do Ubuntu 12.04. A rede em ponte não está habilitada.

Eu gostaria de começar a experimentar os aspectos de integração web 2.0 do Drupal (ou seja, integração com Youtube e Facebook), mas esses sites são todos bloqueados por um regime de filtragem massivo que inclui no mínimo bloqueio de IP, filtragem de DNS, filtragem de URL e pacotes filtragem - e usa pacotes de redefinição de conexão para impor essas regras. Parece que alguns ISPs também usam filtragem profunda de pacotes para descobrir túneis ssh que têm largura de banda limitada - felizmente meu ISP em meu apartamento não parece fazer isso atualmente. Estrangeiros não estão proibidos de usar proxies/vpns/etc. desde que não os utilizem para infringir a lei (ou seja, partilhar material restrito com cidadãos chineses).

Para navegação normal na web e outras tarefas que exigem acesso a conteúdo bloqueado, eu uso um túnel ssh para um servidor (Ubuntu Server 10.04, com apenas ssh e openvpn habilitados) em outro país como proxy Socks5. O Chromium e o Firefox são capazes de enviar solicitações DNS nativamente por meio do proxy Socks5 (o primeiro por padrão e o último alterando uma configuração). Esta solução funciona perfeitamente para todas as conexões do navegador com sites restritos.

No entanto, muitos dos módulos Drupal de integração da web 2.0 também exigem que o próprio servidor solicite os sites externos restritos.

Minha pergunta é:

Qual seria a melhor maneira de passar pelo meu túnel ssh e passar pelo regime de filtragem:

  • Todas as solicitações externas e pesquisas de DNS do meu servidor Apache2,

ou

  • Somente as solicitações (e pesquisas de DNS) do meu servidor Apache2 para hosts especificados?

Soluções consideradas/tentativas

  • A solução mais simples seria usar um servidor LAMP na máquina fora do regime de filtragem (aquele para o qual eu ssh). Eu preferiria não fazer isso por uma série de razões (sem acesso físico a esta máquina caso algo dê errado, hardware mais antigo, se eu perder minha conexão com este servidor, não poderei continuar o desenvolvimento, etc.)
  • Use configurações de proxy globais - o Xubuntu não tem capacidade para configurações globais de Socks5 de acordo com minha pesquisa. Além disso, não sei se isso capturaria minhas pesquisas de DNS.

  • use tsocks: este parece ser o melhor candidato, mas tenho dois problemas/dúvidas:

    1. Onde está o script que inicia/reinicia o Apache2 para que eu possa prefaciar esses comandos com tsocks?

    2. Como faço para capturar e redirecionar as pesquisas de DNS por meio do proxy Socks5?

      A edição do /etc/hosts/arquivo fornece uma solução alternativa limitada, mas sites como youtube.com carregam mídia e outros conteúdos de tantos sites externos (e, portanto, URLs) que é quase impossível acompanhar todos esses URLs de terceiros (potencialmente redefinição de conexão). Usando socatpara capturar, converter e enviar tráfego UDP através do proxy Socks5 (conforme descritoaqui) parece uma boa solução, mas não consegui implementá-la conforme descrito no tutorial vinculado. (Se socatfor confirmado que o uso é a maneira correta de resolver meu problema, posso postar os comandos que estou usando para revisão)

Responder1

O Apache não está realmente fazendo conexões de saída; PHP é. Então é o PHP que precisa se comunicar com o proxy SOCKS.

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

Seria mais fácil se você tivesse um proxy HTTP e mais fácil com uma VPN. Talvez você devesse tentar novamente a configuração do OpenVPN?

Como alternativa, você pode configurar o Privoxy em seu servidor para se comunicar com seu proxy SOCKS e, em seguida, configurar o PHP para usar o Privoxy como um proxy HTTP.

informação relacionada