iptables tráfego de retorno SNAT não atingindo o cliente

2

Eu tenho o seguinte design:

client                     linuxserver              destination
192.168.160.34             192.168.163.196           192.168.18.1

Eu posso pingar o servidor do cliente e cliente do servidor, eles estão na mesma sub-rede, 192.168.160/22 , eu também posso pingar o destino do servidor

lista de roteamento IP dos clientes:

default via 192.168.163.196 dev ens192 
192.168.160.0/22 dev ens192 proto kernel scope link src 192.168.160.34
A política do iptables do cliente é aceita em todas as cadeias e já liberada. O iptables do servidor é aceito em todas as cadeias, tem algumas regras docker + kvm e etc.

Eu prossigo para adicionar o seguinte no servidor:

iptables -t nat -A POSTROUTING -s 192.168.160.34 -j SNAT --to 192.168.163.196

Também adicionei net.ipv4.ip_forward=1 e apliquei-o aos parâmetros do kernel.

Eu ainda não consigo pingar o destino do cliente.

tcpdump:

 00:00:00.000000 IP (tos 0x0, ttl 64, id 3182, offset 0, flags [DF], proto ICMP (1), length 84)
    192.168.160.34 > 192.168.18.1: ICMP echo request, id 4442, seq 1, length 64
 00:00:00.000052 IP (tos 0x0, ttl 63, id 3182, offset 0, flags [DF], proto ICMP (1), length 84)
    192.168.163.196 > 192.168.18.1: ICMP echo request, id 4442, seq 1, length 64
 00:00:00.000680 IP (tos 0x0, ttl 125, id 32481, offset 0, flags [none], proto ICMP (1), length 84)
    192.168.18.1 > 192.168.163.196: ICMP echo reply, id 4442, seq 1, length 64
 00:00:01.028150 IP (tos 0x0, ttl 64, id 3405, offset 0, flags [DF], proto ICMP (1), length 84)
    192.168.160.34 > 192.168.18.1: ICMP echo request, id 4442, seq 2, length 64
 00:00:00.000042 IP (tos 0x0, ttl 63, id 3405, offset 0, flags [DF], proto ICMP (1), length 84)
    192.168.163.196 > 192.168.18.1: ICMP echo request, id 4442, seq 2, length 64
 00:00:00.000489 IP (tos 0x0, ttl 125, id 32749, offset 0, flags [none], proto ICMP (1), length 84)
    192.168.18.1 > 192.168.163.196: ICMP echo reply, id 4442, seq 2, length 64
 00:00:01.023522 IP (tos 0x0, ttl 64, id 3641, offset 0, flags [DF], proto ICMP (1), length 84)
    192.168.160.34 > 192.168.18.1: ICMP echo request, id 4442, seq 3, length 64

Meus pacotes icmp chegam ao destino e voltam ao servidor linux, mas não conseguem acessar o cliente. Qualquer ajuda seria apreciada.

Coisas que tentei:

Teste a regra nat em uma caixa limpa instalada, com as mesmas informações, e funcionou (apenas alterou o gateway padrão no cliente para este teste para o novo servidor)

Liberando todas as correntes no servidor linux, adicione a regra novamente e tente novamente (não ajuda)

adicione os seguintes parâmetros do kernel no servidor linux (não ajuda):

net.ipv4.conf.all.send_redirects = 1
net.ipv4.conf.all.accept_source_route = 1
    
por Farhad Farahi 08.10.2017 / 15:11

1 resposta

0

Eu acredito que você precisa:

iptables -t nat -A POSTROUTING -d 192.168.18.1 -j SNAT --to <some_ip_here>

onde é o endereço IP da interface linuxserver conectada à mesma rede que o destino. Eu acho que provavelmente será 192.168.18.

    
por 24.10.2017 / 21:58