VPN iptables Encaminhamento: Net-to-net

2

Eu tentei procurar em outro lugar neste site, mas não consegui encontrar nada que correspondesse a esse problema. Neste momento, tenho um túnel ipsec aberto entre a nossa rede local e uma rede remota.

Atualmente, a caixa local que executa o Openswan ipsec com o túnel aberto pode executar ping na caixa ipsec remota e em qualquer um dos outros computadores na rede remota. Quando conectado aos computadores remotos, posso fazer ping em qualquer caixa em nossa rede local. Isso é o que funciona, isso é o que não funciona:

Não consigo pingar nenhum dos computadores remotos por meio de uma máquina local que não seja a caixa ipsec.

Aqui está um diagrama da nossa rede:

[local ipsec box] ----------\
                             \
[arbitrary local computer] --[local gateway/router] -- [internet] -- [remote ipsec box] -- [arbitrary remote computer]

A caixa ipsec local e o computador local arbitrário não têm contato direto, ao invés disso, eles se comunicam através do gateway / roteador. O roteador foi configurado para encaminhar solicitações de computadores locais da sub-rede remota para a caixa ipsec. Isso funciona.

O problema é que a caixa ipsec não encaminha nada.

Sempre que um computador local arbitrário insere algo na sub-rede remota, esta é a resposta:

[user@localhost ~]# ping 172.16.53.12
PING 172.16.53.12 (172.16.53.12) 56(84) bytes of data.
From 10.31.14.16 icmp_seq=1 Destination Host Prohibited
From 10.31.14.16 icmp_seq=2 Destination Host Prohibited
From 10.31.14.16 icmp_seq=3 Destination Host Prohibited

Aqui está o traceroute:

[root@localhost ~]# traceroute 172.16.53.12
traceroute to 172.16.53.12 (172.16.53.12), 30 hops max, 60 byte packets
 1  router.address.net (10.31.14.1)  0.374 ms  0.566 ms  0.651 ms
 2  10.31.14.16 (10.31.14.16)  2.068 ms  2.081 ms  2.100 ms
 3  10.31.14.16 (10.31.14.16)  2.132 ms !X  2.272 ms !X  2.312 ms !X

Esse é o IP para a nossa caixa ipsec que está alcançando, mas não está sendo encaminhado.

Na caixa IPSec, eu habilitei o IP Forwarding em /etc/sysctl.conf net.ipv4.ip_forward = 1

E eu tentei configurar o IPTables para encaminhar:

*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [759:71213]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 25 -j ACCEPT
-A INPUT -p udp -m state --state NEW -m udp --dport 500 -j ACCEPT
-A INPUT -p udp -m state --state NEW -m udp --dport 4500 -j ACCEPT
-A INPUT -m policy --dir in --pol ipsec -j ACCEPT
-A INPUT -p esp -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -s 10.31.14.0/24 -d 172.16.53.0/24 -j ACCEPT
-A FORWARD -m policy --dir in --pol ipsec -j ACCEPT
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

Eu estou perdendo uma regra no IPTables? Existe algo que eu esqueci?

NOTA: Todas as máquinas estão executando o CentOS 6.x Edit: Nota 2: eth1 é a única interface de rede na caixa ipsec local.

    
por Mike Holler 23.03.2012 / 16:25

1 resposta

1

Depois de olhar em volta e seguir as suas sugestões, decidi repensar minha abordagem por um minuto e notei um erro muito doloroso. 172.16.53.0/24 é suposto ser 172.16.53.0/28 . Funciona perfeitamente agora. Moral da história: certifique-se de ter seus endereços de sub-rede certos, pessoal!

    
por 28.03.2012 / 06:28