J'ai essayé de chercher ailleurs sur ce site mais je n'ai rien trouvé correspondant à ce problème. En ce moment, j'ai un tunnel ipsec ouvert entre notre réseau local et un réseau distant.
Actuellement, la boîte locale exécutant Openswan ipsec avec le tunnel ouvert peut pinguer la boîte ipsec distante et n'importe lequel des autres ordinateurs du réseau distant. Lorsque je suis connecté à l'un des ordinateurs distants, je peux pinguer n'importe quelle boîte de notre réseau local. Ce qui fonctionne, voici ce qui ne fonctionne pas:
Je ne peux pas pinguer aucun des ordinateurs distants via un ordinateur local qui n'est pas la boîte ipsec.
Voici un diagramme de notre réseau:
[boîte ipsec locale] ----------\
\
[ordinateur local arbitraire] --[passerelle/routeur local] -- [internet] -- [boîte ipsec distante] -- [ordinateur distant arbitraire]
La boîte ipsec locale et l'ordinateur local arbitraire n'ont aucun contact direct, ils communiquent plutôt via la passerelle/routeur. Le routeur a été configuré pour rediriger les demandes des ordinateurs locaux pour le sous-réseau distant vers la boîte ipsec. Cela fonctionne.
Le problème est que la boîte ipsec ne fait pas de redirection.
Chaque fois qu'un ordinateur local arbitraire pingue quelque chose sur le sous-réseau distant, voici la réponse:
[utilisateur@localhost ~]# ping 172.16.53.12
PING 172.16.53.12 (172.16.53.12) 56(84) octets de données.
De 10.31.14.16 icmp_seq=1 Destinataire interdit
De 10.31.14.16 icmp_seq=2 Destinataire interdit
De 10.31.14.16 icmp_seq=3 Destinataire interdit
Voici la trace de routage:
[root@localhost ~]# traceroute 172.16.53.12
traceroute vers 172.16.53.12 (172.16.53.12), 30 sauts max, paquets de 60 octets
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
C'est l'adresse IP de notre boîte ipsec à laquelle il atteint, mais elle n'est pas redirigée.
Sur la boîte IPSec, j'ai activé le transfert IP dans /etc/sysctl.conf net.ipv4.ip_forward = 1
Et j'ai essayé de configurer IPTables pour rediriger:
*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
Est-ce que je manque une règle dans IPTables? Est-ce que j'ai oublié quelque chose?
REMARQUE : Toutes les machines fonctionnent sous CentOS 6.x Édition: Remarque 2: eth1 est la seule interface réseau sur la boîte ipsec locale.