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