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. : (