Conexões de entrada e saída com 2 links em um servidor [Artigo] - página 3
[ Hits: 75.069 ]
Marcando corretamente os pacotes com o iptables
Nesta parte é onde ocorre a maioria dos erros do pessoal.
SEMPRE vejo nos fóruns o pessoal mandando marcar os pacotes de determinada porta com a tabela mangle. Não deixa de estar certo, mas deixa muito a desejar quanto a funcionalidade do negócio!
Precisamos entender como as conexões no segundo link serão feitas. No caso, se conferir a tabela main do iproute2:
Podemos perceber que o gateway é o link 1. Se conferir agora a tabela postgres:
Percebemos que o gateway é o link 2. Mas temos que entender que todas as conexões por padrão, entram e saem pela tabela main, então precisamos desviar tudo que queremos que entre e saia para a tabela postgres, ou seja, para a tabela que criamos com o valor 200 no rt_tables.
Quando tentamos conectar pela internet em algum serviço pelo link 2, depois de criadas as tabelas de roteamento e efetivadas as regras, até conseguimos conexão, porém o serviço recebe a conexão pelo link 2, mas envia os dados pelo link 1! Por quê? Porque o padrão de roteamento é a tabela main, e não a tabela que criamos, pois ainda não mechemos em nenhum tráfego.
É aí onde se deve dar mais atenção, pois não devemos somente marcar os pacotes com a tabela PREROUTING do iptables. Dessa forma não vai funcionar! Depois de muito pesquisar, cheguei às seguintes regras:
Note que estou marcando o tráfego da porta 5432 de ORIGEM e DESTINO. Usando o --sport estou indicando que o tráfego da porta de origem 5432 deverá receber uma marca '1'. Analise bem as regras e veja que as regras valem tanto pra --sport quanto pra --dport. Por quê? Por que o meu Linux precisa saber que a porta de destino 5432 vai receber conexões pelo link 2 e a porta de origem 5432 vai SAIR pelo link 2, que está respondendo na tabela que criamos no rt_tables!
Marque tudo! Entrada, saída, pré-roteamento e pós-roteamento.
Pronto, agora todos os pacotes safadões do PostgreSQL estão dedurados!
Realmente preciso dessa solução se vc puder me ajudar, fique a vontade para mandar e-mails ou me adicionar no msn, [email protected]com