Separação de entrada / saída para VPN

7

Minha situação é que eu quero todas as minhas conexões de saída do meu servidor Debian para passar por um serviço de VPN comercial no qual eu me inscrevi, mas ainda quero executar serviços públicos acessíveis neste servidor , e não tê-los passar pela VPN.

Ou seja, tenho BIND9 (autoritativo), SMTP, Apache, SSH, etc em execução neste servidor e quero que as conexões recebidas consigam alcançar esses serviços sem usar a VPN.

Para esclarecer, só quero usar a VPN para ocultar minhas conexões de saída , mas ainda ser capaz de responder solicitações no meu IP real para qualquer coisa que tenha entrado dessa maneira.

Para tornar as coisas ainda mais complicadas - eu uso o BIND como um servidor autoritativo para meu domínio (na Internet pública), e também tenho a recursão ativada para que eu possa usá-lo como resolvedor para minha rede local alcance). É possível VPN as conexões DNS de saída do BIND, mas ainda permitir que as solicitações de entrada atinjam o bit autoritativo?

Eu entendo que isso tem algo a ver com iproute2 , mas não consigo descobrir a configuração correta.

Estou no Debian 6.0.7. A VPN é o OpenVPN.

    
por lloydsmart 28.02.2013 / 17:28

1 resposta

5

Você deve usar o roteamento de políticas para implementar isso. As regras não serão muito complicadas.

Sua rota padrão (principal) deve apontar para a interface VPN. Você provavelmente usará a opção --redirect-gateway def1 do OpenVPN para que isso seja gerenciado automaticamente para você quando a VPN for ativada. Isso faz com que o OpenVPN substitua a rota padrão do sistema por um par de /1 rotas que têm o mesmo efeito e garante que o próprio OpenVPN ainda possa alcançar seu ponto remoto da maneira normal sem o óbvio loop de roteamento.

Esta rota padrão fará com que o tráfego originado localmente saia pela VPN e também fará com que as respostas ao tráfego que chega através da VPN saiam da VPN.

Agora, você deseja substituir isso por uma regra de política para pacotes associados a conexões que vieram na interface não-VPN. Você quer fazer esses pacotes saírem pela interface não-VPN.

O seguinte deve fazer isso (1) combinando pacotes que tenham o endereço IP público não-VPN como endereço de origem e solicitando que eles sejam roteados através de uma tabela de roteamento diferente, (2) nessa tabela de roteamento, enviando tudo para sua rota padrão original (não VPN).

ip route add table 42 default via X.Y.Z.W
ip rule add from A.B.C.D/32 table 42

A.B.C.D deve ser o seu endereço IP público (não VPN) e X.Y.Z.W deve ser a sua rota original do sistema (através do seu ISP, não através da sua VPN).

A configuração similar para o tráfego IPv6 é deixada como um exercício para você: -)

    
por 28.02.2013 / 18:44