Rota o tráfego sobre o túnel ipsec encaminhado

1

Talvez alguém possa me esclarecer ... Eu acho que tenho um problema no IPTables, mas não faço mais ideia ...

Eu tenho um túnel IPSEC site-2-site entre um servidor pfSense e uma máquina virtual com strongswan. Estou usando o iptables para encaminhar o tráfego do host em que a máquina virtual está sendo executada para a máquina virtual

regras de iptables:

iptables -t nat -A POSTROUTING -m policy --pol ipsec --dir out -j ACCEPT<br/>
iptables -t nat -A PREROUTING -i eno1 -p udp -d externalip --dport 500 -j DNAT --to-destination 10.49.10.35<br/>
iptables -t nat -A PREROUTING -i eno1 -p udp -d externalip --dport 4500 -j DNAT --to-destination 10.49.10.35<br/>
iptables -A FORWARD -p udp -d 10.49.10.35 --dport 500 -j ACCEPT<br/>
iptables -A FORWARD -p udp -d 10.49.10.35 --dport 4500 -j ACCEPT<br/>
iptables -t nat -A POSTROUTING -p udp -s 10.49.10.35 --sport 500 -j SNAT --to-source externalip<br/>
iptables -t nat -A POSTROUTING -p udp -s 10.49.10.35 --sport 4500 -j SNAT --to-source <externalip>

O túnel IPSEC está configurado corretamente (eu acho) porque quando ele está conectado eu posso pingar a máquina pfsense e a VM com o endpoint IPSec usando o ip interno de um lado para o outro.

Da máquina pfsense para a VM:

ping -S 10.130.20.1 10.49.30.35
PING 10.49.30.35 (10.49.30.35) from 10.130.20.1: 56 data bytes
64 bytes from 10.49.30.35: icmp_seq=0 ttl=64 time=12.248 ms
64 bytes from 10.49.30.35: icmp_seq=1 ttl=64 time=12.265 ms
64 bytes from 10.49.30.35: icmp_seq=2 ttl=64 time=12.327 ms
64 bytes from 10.49.30.35: icmp_seq=3 ttl=64 time=12.286 ms

Da VM IPSEC para o pfSense

PING 10.130.20.1 (10.130.20.1) 56(84) bytes of data.
64 bytes from 10.130.20.1: icmp_seq=1 ttl=64 time=12.2 ms
64 bytes from 10.130.20.1: icmp_seq=2 ttl=64 time=12.2 ms
64 bytes from 10.130.20.1: icmp_seq=3 ttl=64 time=12.1 ms
64 bytes from 10.130.20.1: icmp_seq=4 ttl=64 time=12.1 ms

Para que tudo pareça Ok, mas quando eu inserir uma máquina extra na configuração por trás do ping IPSecVM, etc. não será mais possível.
Eu configurei net.ipv4.ip_forward = 1 no IPSecVM.

Agora, quando faço um ping pfsense para minha nova máquina de teste (10.49.10.36)

ping -S 10.130.20.1 10.49.30.36
PING 10.49.30.36 (10.49.30.36) from 10.130.20.1: 56 data bytes
^C
--- 10.49.30.36 ping statistics ---
4 packets transmitted, 0 packets received, 100.0% packet loss

Quando executo tcpdump -i ens19 host 10.130.20.1 em minha máquina de teste, vejo o tráfego chegando, mas nenhuma resposta está sendo enviada

12:48:03.432489 IP 10.130.20.1 > 10.49.30.36: ICMP echo request, id 2145, seq 0, length 64
12:48:04.434735 IP 10.130.20.1 > 10.49.30.36: ICMP echo request, id 2145, seq 1, length 64
12:48:05.435699 IP 10.130.20.1 > 10.49.30.36: ICMP echo request, id 2145, seq 2, length 64
12:48:06.443736 IP 10.130.20.1 > 10.49.30.36: ICMP echo request, id 2145, seq 3, length 64
12:48:07.454943 IP 10.130.20.1 > 10.49.30.36: ICMP echo request, id 2145, seq 4, length 64

Do que pensar que era sobre roteamento Eu adicionei uma rota no testvm:

route add -net 10.130.20.0/24 gw 10.49.10.35

Mas, ainda assim, nenhum tráfego está sendo enviado de volta ...

A razão que eu acho que tem algo a ver com o iptables é que eu tenho configurações similares onde o strongswan é executado diretamente na máquina host em vez de uma VM e então tudo funciona.

Eu provavelmente estou esquecendo de algo estúpido, mas depois de alguns dias pensando, eu simplesmente não vejo mais isso.

Espero que alguém possa me ajudar.

    
por Rex de Koning 13.07.2018 / 12:56

1 resposta

0

Descobri que eu estava roteando o tráfego pela interface errada. Eu estava tentando fazer isso funcionar por um tempo e então você ignora a coisa mais estúpida. Depois de recuar um pouco, fiz um desenho da situação que descobri. Obrigado a ecda pelos comentários

    
por 18.07.2018 / 10:54