Estou com a seguinte configuração:
client:192.168.103.55"router"
192.168.103.30 (eth3), 192.168.102.30 (eth2)
server-1 server-2
192.168.102.21 (eth2) 192.168.102.22 (eth2)
O roteador é na verdade uma pequena máquina linux, rodando o iptables.
O objetivo é configurar o iptables de tal forma que eu possa pingar dos servidores (192.168.102.21 e .22) para o cliente (192.168.103.55), através do roteador (192.168.102.30 no lado do servidor e 192.168 .103.30 no lado do cliente)
Os servidores têm uma rota configurada como:
192.168.103.55 via 192.168.102.30 dev eth2
No roteador eu configurei as seguintes regras em tabelas IP:
*filter
:INPUT ACCEPT [1610193:248234329]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [1945999:238163662]
-A FORWARD -i eth3 -j ACCEPT
-A FORWARD -o eth3 -j ACCEPT
-A FORWARD -i eth2 -j ACCEPT
-A FORWARD -o eth2 -j ACCEPT
COMMIT
# Completed on Wed May 2 08:26:55 2018
# Generated by iptables-save v1.4.21 on Wed May 2 08:26:55 2018
*nat
:PREROUTING ACCEPT [5610:715368]
:INPUT ACCEPT [2029:121740]
:OUTPUT ACCEPT [326029:19788110]
:POSTROUTING ACCEPT [326029:19788110]
-A POSTROUTING -d 192.168.103.55/32 -o eth3 -j SNAT --to-source 192.168.103.30
COMMIT
O ping de 192.168.102.21 está chegando ao cliente (192.168.103.55), e o cliente envia a resposta para 192.168.103.30. Mas a resposta não é encaminhada para o cliente (.55). Ele fica preso no roteador
O que estou perdendo aqui?
Agradecemos antecipadamente pelo seu tempo!
=================== UPDATE ===================
Sugestão de Guntbert em O encaminhamento já foi feito.
A regra SNAT é necessária para que o roteador saiba a qual servidor encaminhar a resposta ICMP.
Na minha primeira explicação, deixei de fora o segundo servidor. Atualizei a pergunta agora para obter uma visão geral completa.
O SNAT parece funcionar de alguma forma, desde que eu posso ver o pacote de resposta ICMP indo para o servidor correto:
[router ~]# tcpdump -ni eth2 icmp
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth2, link-type EN10MB (Ethernet), capture size 65535 bytes
08:38:26.110245 IP 192.168.102.21 > 192.168.103.55: ICMP echo request, id 4471, seq 1, length 64
08:38:26.112722 IP 192.168.103.55 > 192.168.102.21: ICMP echo reply, id 4471, seq 1, length 64
08:39:53.238281 IP 192.168.102.22 > 192.168.103.55: ICMP echo request, id 8285, seq 1, length 64
08:39:53.239110 IP 192.168.103.55 > 192.168.102.22: ICMP echo reply, id 8285, seq 1, length 64
O que realmente deve acontecer a seguir, eu acho, é que o IP de origem (192.168.103.55) na resposta precisa ser substituído pelo IP do roteador (192.168.102.30).
Ou estou errado?