iptables regras para permitir L2TP / IPSEC VPN por trás do firewall

3

Eu perguntei sobre isso nos fóruns do Smoothwall Express, mas eles estão compreensivelmente relutantes em fornecer muita ajuda. Afinal, eles realmente querem vender a versão comercial.

Eu preciso fornecer uma VPN L2TP / IPSEC para suporte remoto de algumas novas máquinas que estamos recebendo em breve (não há escolha sobre essa parte). Como o usuário remoto também precisa ser autenticado no Active Directory, eu preciso executar a VPN em nosso servidor Windows (2003), em vez de diretamente no firewall.

Como o Smoothwall Express não tem provisão para protocolos de encaminhamento a partir de sua interface de gerenciamento normal, isso precisa ser feito editando as configurações do iptables em rc.firewall.up . Aqui está meu problema. Eu não sei iptables e sinto que, mesmo que eu tenha tempo para ler sobre isso, os riscos de eu estragar tudo são significativos.

A seção a seguir existe atualmente em rc.firewall.up :

# IPSEC
/sbin/iptables -N secin
/sbin/iptables -A secin -i ipsec0 -j ACCEPT
/sbin/iptables -A INPUT -j secin

/sbin/iptables -N secout
/sbin/iptables -A secout -i ipsec0 -j ACCEPT
/sbin/iptables -A FORWARD -j secout

[algumas coisas não relacionadas aqui]

# IPSEC
/sbin/iptables -N ipsec
/sbin/iptables -A ipsec -p udp --destination-port 500 -j ACCEPT
/sbin/iptables -A ipsec -p udp --destination-port 4500 -j ACCEPT
/sbin/iptables -A ipsec -p 50 -j ACCEPT
/sbin/iptables -A ipsec -p 51 -j ACCEPT
/sbin/iptables -A block -i ppp0 -j ipsec
/sbin/iptables -A block -i ippp0 -j ipsec
if [ "$RED_DEV" != "" ]; then
    /sbin/iptables -A block -i $RED_DEV -j ipsec
fi

A menos que eu esteja enganado, o segundo bock fará com que o tráfego que eu quero que seja encaminhado seja engolido. Eu tentei comentar esse segundo bloco e adicionar este, que é adaptado das linhas necessárias para o PPTP passthrough (que funciona) e o que eu consegui obter de várias fontes:

# L2TP/IPSEC
/sbin/iptables -N l2tp
/sbin/iptables -A l2tp -p udp --destination-port 500 --dst 192.169.0.7 -j ACCEPT
/sbin/iptables -A l2tp -p udp --destination-port 1701 --dst 192.169.0.7 -j ACCEPT
/sbin/iptables -A l2tp -p udp --destination-port 4500 --dst 192.169.0.7 -j ACCEPT
/sbin/iptables -A l2tp -p 50 --dst 192.169.0.7 -j ACCEPT
/sbin/iptables -A l2tp -p 51 --dst 192.169.0.7 -j ACCEPT
/sbin/iptables -I FORWARD -j l2tp
/sbin/iptables -t nat -N l2tp
/sbin/iptables -t nat -A l2tp -i $RED_DEV -p tcp --dport 500 -j DNAT --to 192.169.0.7:500
/sbin/iptables -t nat -A l2tp -i $RED_DEV -p tcp --dport 1701 -j DNAT --to 192.169.0.7:1701
/sbin/iptables -t nat -A l2tp -i $RED_DEV -p tcp --dport 4500 -j DNAT --to 192.169.0.7:4500
/sbin/iptables -t nat -A l2tp -i $RED_DEV -p 50 -j DNAT --to 192.169.0.7
/sbin/iptables -t nat -A l2tp -i $RED_DEV -p 51 -j DNAT --to 192.169.0.7
/sbin/iptables -t nat -A PREROUTING -j l2tp

.. mas isso não funciona. Onde eu entendi?

Por acaso, $RED_DEV é traduzido para a interface voltada ao público e, obviamente, 192.168.0.7 é o meu servidor VPN.

Atualização:

Acontece que as configurações acima funcionam - mais ou menos. Estou testando isso em casa, onde tenho um MacBook e várias máquinas com Windows XP. Eu posso conectar muito bem a partir do Mac, mas não pode se conectar usando qualquer uma das máquinas Windows. Infelizmente, a empresa de maquinário que requer essa VPN para suporte remoto usa apenas o Windows XP. : (

    
por John Gardeniers 07.03.2011 / 04:08

2 respostas

4

Como observado na atualização da pergunta, mesmo com o NAT duplo, a VPN está funcionando de um Mac para o Windows, mas não do Windows para o Windows. Parece que é apenas uma questão de encontrar o termo de pesquisa correto para encontrar uma solução.

De acordo com o artigo do KB , na máquina cliente do Windows XP, precisamos criar um novo valor DWORD chamado AssumeUDPEncapsulationContextOnSendRule em HKLM\System\CurrentControlSet\Services\IPSec . Para NAT duplo, precisa de um valor de 2.

Agora, preciso encontrar uma solução para o Windows 7, porque é inevitável que, mais cedo ou mais tarde, eu tenha que lidar com isso.

Atualizar

Para o benefício de qualquer pessoa com o mesmo problema, a correção para o Windows 7 é criar um novo valor DWORD chamado AssumeUDPEncapsulationContextOnSendRule in HKLM\SYSTEM\CurrentControlSet\services\PolicyAgent . Novamente, para NAT duplo, é necessário um valor de 2.

    
por 11.03.2011 / 04:57
-2

Aqui está um guia para garantir que as portas do cliente estejam abertas na própria máquina do Windows.

link

    
por 26.09.2017 / 03:24