Apenas roteando determinado tráfego através de VPN

2

Eu tenho um servidor de desenvolvimento central, executando um servidor VPN e alguns clientes que precisam se conectar a ele. O servidor está executando o Apache, mas está aceitando apenas solicitações locais (somente ouvindo 127.0.0.1:80).

Eu basicamente preciso forçar cada cliente conectado à VPN para rotear o tráfego para um determinado nome de host através da VPN e para a instância local do Apache.

Por exemplo:

Client requests google.com -> google.com
Client requests server -> vpn -> server:80

Sei que posso enviar comandos de rota para os clientes quando eles se conectarem à VPN. Agora, só preciso descobrir qual rota devo fazer para que isso aconteça. Pelo menos, qual é a sintaxe route / comando para o cliente adicionar essa rota?

    
por n0pe 10.02.2013 / 01:28

1 resposta

2

Primeiro de tudo: você não poderá direcionar o tráfego para 127.xyz em qualquer lugar que não seja a máquina local (ok, pode até ser possível, mas você certamente quebraria outra coisa no processo ...) então eu recomendo atualizar a configuração do apache para também ouvir o IP da VPN (por exemplo, 10.8.0.1). Se isso não for uma opção, você pode tentar uma das opções no final da minha resposta.

Clientes OpenVPN já devem ter uma rota para o servidor, no meu exemplo algo como isto:

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
10.8.0.1        10.8.0.53       255.255.255.255 UGH   0      0        0 tun0
10.8.0.53       0.0.0.0         255.255.255.255 UH    0      0        0 tun0

Se você quiser rotas adicionais enviadas aos clientes, use:

push "route 192.168.10.0 255.255.255.0"

(mude o IP / netmask de acordo).

Se você deseja que sua instância do apache seja acessível pelo nome do host (e não apenas em http://10.8.0.1/ ), coloque isso no arquivo /etc/hosts de todos os clientes

10.8.0.1    servername.domain.example

ou configure um servidor DNS (como dnsmasq < - certifique-se de desativar o servidor dhcp) e envie-o para os clientes (no seu ovpn-conf):

push "dhcp-option DNS 10.8.0.1"

Isso deve fazer o truque.

Outras opções

Se você não conseguir alterar a audição do apache de IPs, as seguintes abordagens vêm à minha mente (mas somente usá-las como último recurso):

  • Encaminhamento de porta SSH: Em vez de usar o OpenVPN (ou qualquer outro servidor VPN), conecte-se ao seu servidor usando o SSH:

    ssh -L1234:localhost:80 user@servername
    

    Dessa forma, a instância do apache no servidor (ouvindo apenas em 127.0.0.1:80 ) estará disponível no seu cliente em http://localhost:1234/ . Você teria que fazer isso em todos os clientes, portanto, provavelmente não é adequado se você tiver muitos deles.
    Mas mesmo assim você poderia configurar um usuário ssh dedicado sem acesso ao shell e uma chave pública para cada cliente em ~/.ssh/authorized_keys . Tenha em mente que os clientes podem usar isso como um proxy para a internet ou fazer outras coisas que você talvez não queira. Por isso, é importante configurar o sshd corretamente.

  • alguma mágica iptables (você teria que NAT o tráfego)
  • algum outro encaminhamento de porta de espaço do usuário ou um proxy reverso
por 11.02.2013 / 02:21