Como ter solicitações externas de um servidor LAMP ignorar a censura na Internet?

4

Eu tinha outra pergunta no site askUbuntu e migrei esta versão de uma falha de servidor pergunta , pois acho que o Superusuário é o melhor local para fazer isso.

Antecedentes:

Eu tenho um ambiente de desenvolvimento local (Drupal) que consiste em um servidor LAMP em execução em um SO Xubuntu 12.04 virtualizado com um sistema operacional host do Ubuntu 12.04. Rede em ponte não está ativada.

Gostaria de começar a experimentar os aspectos de integração do Web 2.0 do Drupal (isto é, a integração do 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 e filtragem de URL. e filtragem de pacotes - 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 são, então, limitados pela largura de banda - por sorte, meu provedor no meu apartamento não parece fazer isso atualmente. Estrangeiros não estão proibidos de usar proxies / vpns / etc. contanto que eles não os usem para violar a lei (ou seja, compartilhar material restrito com cidadãos chineses).

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

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

A minha pergunta é:

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

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

ou

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

Soluções consideradas / tentadas

  • 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, no entanto, por uma série de razões (nenhum acesso físico a esta máquina no caso de algo der errado, hardware mais antigo, se eu perder a conexão com este servidor não posso continuar o desenvolvimento, etc.)
  • Use as configurações de proxy globais - o Xubuntu não tem a capacidade de configurações globais de socks5 de acordo com minha pesquisa. Além disso, não sei se isso detectaria minhas pesquisas de DNS.

  • use tsocks : este parece ser o melhor candidato, mas eu tenho dois problemas / perguntas:

    1. Onde está o script que inicia / reinicia o Apache2 para que eu possa começar 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 arquivo /etc/hosts/ fornece uma solução limitada, mas sites como o youtube.com carregam mídia e outros conteúdos de muitos sites externos (e, portanto, URLs) que rastreiam todos esses URLs (potencialmente redefinindo a conexão) de terceiros. impossível. Usando socat para capturar, converter e enviar tráfego UDP através do proxy socks5 (como descrito aqui ) parece ser uma boa solução, mas não consegui implementá-lo como descrito no tutorial vinculado. (Se for confirmado que socat é a maneira correta de resolver meu problema, posso postar os comandos que estou usando para revisão)

por adempewolff 28.05.2012 / 08:21

1 resposta

1

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

Relevante: link

Seria mais fácil se você tivesse um proxy HTTP e mais fácil com uma VPN. Talvez você devesse dar uma chance ao OpenVPN?

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

    
por 09.07.2012 / 21:40