Tentando rotear pedidos HTTP de saída através de VPN no Ubuntu Server 12.04

4

Eu tenho um servidor Ubuntu 12.04 em execução no EC2 da Amazon que executa um processo de rastreamento da web. Estamos nos deparando com um problema em que alguns dos servidores Web que hospedam os sites que precisamos rastrear estão bloqueando todos os endereços IP do EC2.

Minha brilhante ideia era encapsular solicitações HTTP de saída através de uma VPN. Consegui configurar a VPN, mas ela roteava TODO o tráfego pela VPN, o que significava que eu não podia acessar o SSH na máquina e não responderia a nenhuma solicitação HTTP recebida. (Esse servidor também hospeda um serviço da web que precisamos ser capazes de acessar)

Realmente, eu só quero "proxy" todas as solicitações HTTP de saída através da VPN para que possamos acessar sites que tenham todos os IPs IP2 bloqueados.

É bem possível que eu esteja fazendo o caminho errado e saúdo qualquer outra sugestão que possa ser mais simples ou mais robusta.

    
por Chris Brantley 15.07.2012 / 00:30

1 resposta

2

O que você precisa é de roteamento da política de origem para rotear as respostas para as conexões de entrada do gateway EC2 em vez da VPN . Supondo que o IP interno da sua instância é 1.0.0.20 com o gateway padrão em 1.0.0.1, e o IP da VPN é 10.8.0.20:

  1. Crie tabelas de roteamento nomeadas (só precisa ser feito uma vez)

    echo 10 ec2 >> /etc/iproute2/rt_tables
    echo 11 vpn >> /etc/iproute2/rt_tables
    
  2. Configure as novas tabelas de roteamento com uma rota padrão sobre seus respectivos gateways

    ip route add 1.0.0.0/24 dev eth0 table ec2
    ip route add default via 1.0.0.1 table ec2
    ip route add 10.8.0.0/24 dev tun0 table vpn
    ip route add default via 1.0.0.1 table vpn
    
  3. Adicione regras de roteamento para selecionar a tabela de roteamento correta com base no endereço de origem

    ip rule add from 1.0.0.20 lookup ec2
    ip rule add from 10.8.0.20 lookup vpn
    

Isso deve permitir que você defina o gateway padrão para ser a VPN e ainda assim as conexões de entrada funcionem.

O que você poderia fazer em vez disso, é configurar seu aplicativo para vincular-se explicitamente ao IP da VPN (10.8.0.20) ao criar conexões de saída, o que fará com que todas as conexões desse aplicativo passem pela VPN, mas todas as outras conexões de saída sair diretamente. Se você não puder configurar seu aplicativo para vincular-se ao IP da VPN, poderá adicionar um servidor proxy HTTP para fazer essa parte.

    
por 15.07.2012 / 09:06