Configurando IPtables para se comportar como um roteador na borda de uma VPN

2

Eu gostaria de configurar o IPtables em uma única máquina linux que permite que os pacotes entrem e saiam de uma VPN.

Aqui está uma rede de pequena escala de 3 nós:

  1. v1: Uma máquina linux dentro da VPN. A sub-rede da VPN é 10.10.100.0/22
  2. out1: Uma máquina linux fora da VPN. Tem informações de quantos nós existem dentro da VPN e seus IPs VPN, mas em si não está na VPN
  3. r: Uma máquina linux que possui o iptables configurado para o requisito de roteamento. Está na VPN e out1 também pode enviar pacotes para ela. Daí está no limite. r, portanto, tem eth0 que está na mesma rede que out1 e tun0, que é sua interface vpn

Eu consegui r ser o "próximo salto" para todos os pacotes que saem do out1, com destino 10.10.100.0/22. Então os pacotes estão entrando em r. As seguintes duas regras iptables em r me permitiram ter out1, comunicar com v1 sobre netcat

   iptables -t nat -A POSTROUTING --out-interface tun0 -j MASQUERADE
   iptables -A FORWARD --in-interface eth0 -j ACCEPT

Talvez essas regras estejam incorretas porque eu precisaria da função MASQUERADE?

Quando v1 tenta ACK os pacotes de out1, eles atingem r e são descartados. Eu confirmei usando tcpdump, que v1 envia pacotes destinados a out1 e eles atingem r, mas eles nunca saem1.

Como fecho o ciclo? Eu não preciso fazer NAT, já que out1 já conhece o IP de destino, eu simplesmente gostaria que r movesse pacotes de eth0 para tun0 e tun0 para eth0.

    
por 7hacker 29.06.2017 / 06:16

1 resposta

1

Veja como eu fiz isso

#Forward connections coming in from eth0 to tun0
iptables -A FORWARD -i eth0 -o tun0 -j ACCEPT

#Masquerade packets leaving tun0
iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE

#Forward Stateful connections coming in from tun0 to eth0
iptables -A FORWARD -i tun0 -o eth0 -m state --state ESTABLISHED,RELATED \
             -j ACCEPT
    
por 30.06.2017 / 06:08