Issue Interface privada do servidor NAT para loopback (para o MySQL)

2

Estou tentando o tráfego NAT enviado para a interface privada do servidor para o loopback (porque o MySQL bind-address está no 127.0.0.1 e não pode ser alterado, mas ainda preciso alcançá-lo através da interface privada).

Configuração
-mysql bind-address = 127.0.0.1
de IP habilitado para Windows com sysctl -w net.ipv4.ip_forward=1
-setup iptables da seguinte forma ( eth0 é a interface privada)

-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-A INPUT -i eth0 -p tcp --dport 3306 -j ACCEPT
-A INPUT -i lo --jump ACCEPT
-A INPUT --match state --state ESTABLISHED,RELATED --jump ACCEPT
-t nat -A PREROUTING -i eth0 -p tcp --port 3306 -j DNAT --to-destination 127.0.0.1
-t nat -A POSTROUTING -o lo -j SNAT --to-source 127.0.0.1

Verificações
-o link mysql está OK ( telnet 127.0.0.1 3306 funciona bem)
-ip encaminhamento está habilitado corretamente ( sysctl net.ipv4.ip_forward gives 1)
-conectividade para eth0 on 3306 é bom porque quando eu defino o bind-address para o IP possuído por eth0 eu posso conectar.

Problema em Com o bind-address no host local e as regras do iptables acima, não consigo me conectar ao IP de propriedade de eth0 on 3306 : se eu executar tcpdump -ni any port 3306 , posso ver o SYN seguido por um RST , mas Agora tenho idéia de onde vem o RST , pois esperaria que o SYN fosse encaminhado para lo com ip 127.0.0.1 como origem e destino.

P: O que estou perdendo para o NAT eth0 para lo na porta 3306 ?

informações adicionais: executando ubuntu server 10.04 com iptables v1.4.4

Pergunta atualizada com caso de uso

Requisitos:
-Nós temos várias caixas com muitos serviços (jetty, tomcat, ldap, mysql) rodando em localhost

-Esses serviços precisam ser executados somente no host local e não precisam ser acessados na interface pública.

- No entanto, gostaríamos que o nosso servidor Nagios externo os verificasse através da interface privada

- Não não queremos configurar esses serviços para ouvir na interface pública por motivos de segurança ( embora pudéssemos bloqueá-los na interface pública, acreditamos que é melhor (ou seja, Defense in depth ) que esses serviços não escutem o IP público caso algo dê errado com o firewall)

-Configurar esses serviços para escutar no loopback E na interface privada não é possível ou mais difícil de implementar.

Benefícios

Usar um NAT da interface privada para a interna ofereceria os seguintes benefícios:

- implementação mais fácil: não precisamos reconfigurar os serviços existentes

- menos manutenção: se novos serviços forem adicionados para escutar no loopback, só precisamos adicionar regras de iptable e não precisaremos reconfigurar esses serviços

- mais seguro: pior cenário se nosso FW cair é que perdemos nosso monitoramento para esses serviços, mas eles não são expostos à interface pública.

    
por Max 08.12.2011 / 17:37

2 respostas

1

você não pode 127.0.0.1 nat é uma rede reservada super-especial. Provavelmente seria melhor definir o endereço de ligação como 0.0.0.0 e, em seguida, usar o iptables para filtrar os IPs / Interfaces dos quais você não deseja permitir o tráfego.

    
por 08.12.2011 / 17:49
0

Tente excluir esta regra:

-t nat -A POSTROUTING -o lo -j SNAT --to-source 127.0.0.1

Eu tenho que retirar totalmente a minha resposta; pacotes de fora de uma caixa Linux não podem ir para 127.0.0.1. Veja o seguinte email (e os anteriores):

link

    
por 09.12.2011 / 18:50