J'ai eu des difficultés avec la configuration du VPN entre on-prem et GCP pendant plus d'une semaine. Je suis complètement à court d'idées à ce stade, et j'aimerais obtenir de l'aide de spécialistes réseau.
Objectif
L'objectif final est simple : faire en sorte qu'une instance de VM sur GCP communique de manière transparente avec une VM on-prem - mais avec 2 routeurs en jeu.
La configuration est quelque chose comme ci-dessous :
GCP_VM OP_VM
10.0.0.25 10.100.0.200
| |
| (Passerelle du routeur DC)
| 10.100.0.80
| |
-- HA_VPN (AS65001) <==========> Routeur (AS65002) --
IP publique : xx.xx.xx.xx yy.yy.yy.yy
Annonce : 10.0.0.0/24 BGP 10.100.0.0/24 BGP
Plage IP VPN : 169.254.0.1/30 169.254.0.2 (en tant que pair)
IP privée : NA 10.100.0.50
La complication ici est que le Routeur
n'est pas directement connecté à OP_VM
. C'est la configuration on-prem sur laquelle nous n'avons aucun contrôle. OP_VM
obtient son IP 10.100.0.200
d'un autre routeur, et notre Routeur
est connecté au même LAN. Nous n'avons qu'une seule baie dans le centre de données, et nous devons atteindre OP_VM
hébergé par une autre partie (dans une autre baie). Notre baie est associée à 10.100.0.50
.
Et avec cela, je veux être capable de faire fonctionner ce qui suit :
me@GCP_VM:10.0.0.25:~$ ping 10.100.0.200
État actuel
Avec la configuration ci-dessus, le VPN et le BGP semblent sains d'après les journaux des deux côtés.
Depuis GCP_VM
, je peux pinguer 10.100.0.50
(Routeur
) avec succès.
me@GCP_VM:10.0.0.25:~$ ping 10.100.0.50
PING 10.100.0.50 (10.100.0.50) 56(84) octets de données.
64 octets de 10.100.0.50 : icmp_seq=1 ttl=254 temps=24.9 ms
...
Aussi, depuis Routeur
, j'ai pu confirmer que je peux pinguer 10.100.0.200
(OP_VM
).
# Avec la configuration du Routeur quelque chose comme
#
# ip route 10.100.0.0/24 passerelle 10.100.0.80
root@Routeur:10.100.0.50:~$ ping 10.100.0.200
ping 10.100.0.200
provenant de 10.100.0.200 : icmp_seq=0 ttl=63 temps=0,583ms
provenant de 10.100.0.200 : icmp_seq=1 ttl=63 temps=0,571ms
2 paquets transmis, 2 reçus, perte 0 %, durée 0 ms
Depuis GCP_VM
, cependant, le ping vers 10.100.0.200
(OP_VM
) est manquant.
# Avec la configuration du Routeur quelque chose comme
#
# ip route 10.100.0.0/24 passerelle 10.100.0.80
me@GCP_VM:10.0.0.25:~$ ping 10.100.0.200
PING 10.100.0.200 (10.100.0.200) 56(84) octets de données.
^C
--- 10.100.0.200 statistiques ping ---
4 paquets transmis, 0 reçus, perte 100 %, temps 3051ms
Je comprends probablement mal la configuration de la passerelle, mais en changeant la route comme ci-dessous me donne un résultat différent :
# Avec la configuration du Routeur quelque chose comme
#
# ip route 10.100.0.0/24 passerelle 10.100.0.50
# ~~ <- Routeur lui-même
me@GCP_VM:10.0.0.25:~$ ping 10.100.0.200
PING 10.100.0.200 (10.100.0.200) 56(84) octets de données.
De 169.254.0.2 icmp_seq=7 Hôte de destination injoignable
De 169.254.0.2 icmp_seq=6 Hôte de destination injoignable
De 169.254.0.2 icmp_seq=5 Hôte de destination injoignable
De 169.254.0.2 icmp_seq=4 Hôte de destination injoignable
De 169.254.0.2 icmp_seq=3 Hôte de destination injoignable
De 169.254.0.2 icmp_seq=2 Hôte de destination injoignable
De 169.254.0.2 icmp_seq=1 Hôte de destination injoignable
^C
--- 10.100.0.200 statistiques ping ---
9 paquets transmis, 0 reçus, +7 erreurs, perte 100 %, temps 8141ms
pipe 7
Avec cette configuration de passerelle, Routeur
ne peut plus pinguer OP_VM
. Il semble au moins que le VPN soit établi et l'IP soit diffusée correctement. Mais cela ne semble pas correct du point de vue du réseau réel.
Questions
Je ne pense pas qu'il y ait beaucoup plus à faire du côté de GCP, et le problème semble être purement du côté de l'on-prem.
Y a-t-il des problèmes de configuration ou des préoccupations qui pourraient causer un dysfonctionnement du VPN, du BGP, de l'ARP, etc.? Qu'est-ce qui pourrait causer un cas où les routes semblent être partagées, mais ne peuvent pas y accéder réellement?
Autres notes
- J'ai confirmé que la table ARP sur
Routeur
inclut10.100.0.200
- Je vois les routes propagées dans GCP
- J'ai testé la configuration du pare-feu de la VPC GCP pour autoriser
169.254.0.0/30
et10.100.0.0/24
- J'aurai besoin d'accès depuis GKE à la fin, mais j'ai confirmé que GKE obtient exactement le même comportement que
GCP_VM
Routeur
est de marque Yamaha- J'ai essayé TCPdump (
packetdump
dans les routeurs Yamaha), mais je n'ai pas vu10.0.0.25
dans le journal -
TCPdump a montré la trace de
10.0.0.25
lorsque j'ai exécuténmap -Pn 10.100.0.200
depuisGCP_VM
, mais avec une seule ligne comme celle-ci :2019/12/21 16:35:40: LAN1 OUT:IP TCP 10.100.0.227:50516 > 10.103.24.1:80
Mise à jour (24 décembre)
J'ai réalisé tcpdump
pour un simple ping entre GCP_VM
et Routeur
.
De GCP_VM
à Routeur
(journaux de GCP_VM
)
$ ping 10.100.0.50 > /dev/null &
$ sudo tcpdump -i eth0 | grep 10.100
...
18:49:18.696178 IP GCP_VM.(snip) > 10.100.0.50: ICMP demande d'écho
, id 32396, seq 0, longueur 64
18:49:18.700395 IP 10.100.0.50 > GCP_VM.(snip): Réponse d'écho ICMP,
id 32396, seq 0, longueur 64
De Routeur
à GCP_VM
(journaux de GCP_VM
)
# ping depuis le Routeur, avec `ping 10.0.0.25`
$ sudo tcpdump -i eth0 | grep 169.254
...
18:40:18.554555 IP 169.254.0.2 > GCP_VM.(snip): Demande d'écho ICMP,
id 3369, seq 0, longueur 72
18:40:18.554586 IP GCP_VM.(snip) > 169.254.0.2: Réponse d'écho ICMP, i
d 3369, seq 0, longueur 72
Bien que tcpdump
montre que la réponse est envoyée ici, elle n'est jamais reçue par le Routeur
.
En outre, le ping vers 169.254.0.2
depuis GCP_VM
n'a pas de réponse.
$ ping 169.254.0.2 > /dev/null &
$ sudo tcpdump -i eth0 | grep 169.254
...
18:59:07.113101 IP GCP_VM.(snip) > 169.254.0.2: Demande d'écho ICMP, i
d 32531, seq 0, longueur 64
18:59:08.137103 IP GCP_VM.(snip) > 169.254.0.2: Demande d'écho ICMP, i
d 32531, seq 1, longueur 64
...
Mise à jour (27 décembre)
Le ping depuis le Routeur
a été réussi après avoir défini son adresse source sur 10.100.0.50
, car il essayait d'utiliser 169.254.0.2
par défaut.
Le ping n'atteint toujours pas OP_VM
, et je suis toujours confronté à un problème de configuration NAT pour assurer que la traduction se déroule correctement.
Mise à jour (31 décembre)
La connexion a finalement été établie. Je vais résumer les étapes prises dans une réponse distincte pour désembouteiller la question.
0 votes
Veuillez ajouter votre solution comme vous l'avez mentionné dans votre dernière mise à jour.
0 votes
J'ai ajouté des éclaircissements supplémentaires et la solution que j'ai dû mettre en place dans une réponse ci-dessous.