Para conseguir fazer com que o openvpn e o pf funcionassem mesmo com balanceamento de link, tivemos vários problemas.
Tudo indicava que era problema com o pf:
1- Conseguíamos pingar máquinas da rede local através de um servidor remoto. Porém não pingávamos nem o servidor nem máquinas remotas usando máquinas locais. Assim, deduzimos que o problema não era com rota.
2- Descartamos também ser problema com firewall do outro servidor (iptables), porque conseguíamos atingir a rede remota se déssemos um flush no pf (pfctl -Fa).
3- Um outro teste que realizamos para tentar descobrir aonde estava o problema foi o tcpdump na interface tun0. Nenhum pacote estava passando por ele ,por mais que tenhamos definido uma rota no sistema.
4- Quando subíamos as regras do pf, os pacotes do ping se perdiam, aparentemente estavam tentando sair pelo nosso gw, visto que a resposta do icmp era como se algum servidor remoto estivesse filtrando o nosso ping. Era como se pacotes de uma rede falsa (por exemplo 192.168.x.x) estivesse saindo pelo nosso gw e tentando atingir o outro host da mesma rede falsa. [Leia mais]
Archive for the ‘pf’ Category
PF (com balanceamento de link) e OpenVPN
Posted by makoto on October 1, 2009
Posted in BSD, pf | Leave a Comment »
Balanceamento de links (“resolvido” problemas de sites seguros e conexões estabelecidas)
Posted by makoto on September 22, 2009
Finalmente chegamos à um consenso quanto ao esquema de balanceamento.
O problema que estávamos tentando resolver era relativo à sites seguros e/ou sites que davam problema com conexão estabelecida. Para resolver o problema, tentamos usar iptables, iproute2 e o pf. Com o iptables e o iproute2, vimos que eles balanceavam links ou serviços, não tratando os problemas de site seguro e/ou os de conexão estabelecida.
Os testes com o iptables e iproute2 foram :
http://www.dicas-l.com.br/dicas-l/20070327.php
http://lartc.org/howto/lartc.rpdb.multiple-links.html#AEN298
ip route add default scope global nexthop via $P1 dev $IF1 weight 1 nexthop via $P2 dev $IF2 weight 1
Com o pf, descobrimos o sticky-address. Funcionou para conexões estabelecidas, funcionou com donwloads e funcionou o balanceamento. O único problema, foi que para que isso fosse possível, tivemos que criar uma regra que liberasse as conexões apenas dos hosts que não estivessem nenhuma estabelecida.
A script faria mais ou menos o seguinte: [Leia mais]
Posted in BSD, iptables, Linux, pf | 2 Comments »
pf e o pfsense
Posted by makoto on September 16, 2009
Hoje estava testando o pfsense. Por ele, conseguimos fazer balanceamento de links permitindo acesso à sites seguros e àqueles que davam problemas de conexão estabelecida. O único problema foi quanto ao download e failover. Se algum link caía, não tinha como continuar o download.
Visto que o pfsense conseguia fazer o balanceamento da forma que desejamos, para que pudéssemos criar nosso firewall personalizado, resolvemos tentar descobrir as regras usadas pelo mesmo. Logamos no shell do sistema e fomos atrás dos conf.
Começamos buscando o rc.conf. Não o encontramos nos locais padrões, nem por find. Então, resolvemos procurar em sistes de busca por referências em fóruns e/ou documentações e descobrimos que o pfsense não guarda um rc.conf. Aparentemente, ele gerencia tudo pelo php em um arquivo chamado config.xml.
Então, o próximo passo foi descobrir sobre o pf.conf. Novamente, não conseguimos encontrá-lo. Recorremos aos buscadores e dessa vez, resolvi usar o irc também. Utilizando o canal do pf, descobri que o pf não guarda um conf. Ele cria as regras e redireciona direto para o pfctl.
Para que pudéssemos ver as regras e tentar entender como o pfsense foi capaz de fazer o load balance, utilizamos os seguintes comandos:
Listar regras nat [Leia mais]
Posted in BSD, pf | Leave a Comment »