Tâche #36243
Scénario #36163: Les clients de scribe n'utilisent pas l'heure de l'AD
Étude (complémentaire)
100%
Historique
#1 Mis à jour par Benjamin Bohard il y a plus d'un an
- Statut changé de Nouveau à En cours
#2 Mis à jour par Benjamin Bohard il y a plus d'un an
Cas actuel¶
Dans le cas nominal (pas de routage des paquets), on observe avec tcpdump, pour une requête sur le port 123 :
sur l’amon
10:12:36.145559 enp5s0 In IP (tos 0xb8, ttl 64, id 8331, offset 0, flags [DF], proto UDP (17), length 76)
addc.dompedago.etb1.lan.ntp > ntp.altinea.fr.ntp: NTPv4, Client, length 48
Leap indicator: clock unsynchronized (192), Stratum 0 (unspecified), poll 6 (64s), precision -23
Root Delay: 0.000000, Root dispersion: 0.000000, Reference-ID: (unspec)
Reference Timestamp: 0.000000000
Originator Timestamp: 0.000000000
Receive Timestamp: 0.000000000
Transmit Timestamp: 3939354731.909824128 (2024-10-31T09:12:11Z)
Originator - Receive Timestamp: 0.000000000
Originator - Transmit Timestamp: 3939354731.909824128 (2024-10-31T09:12:11Z)
10:12:36.145644 enp2s0 Out IP (tos 0xb8, ttl 63, id 8331, offset 0, flags [DF], proto UDP (17), length 76)
addc.dompedago.etb1.lan.ntp > ntp.altinea.fr.ntp: NTPv4, Client, length 48
Leap indicator: clock unsynchronized (192), Stratum 0 (unspecified), poll 6 (64s), precision -23
Root Delay: 0.000000, Root dispersion: 0.000000, Reference-ID: (unspec)
Reference Timestamp: 0.000000000
Originator Timestamp: 0.000000000
Receive Timestamp: 0.000000000
Transmit Timestamp: 3939354731.909824128 (2024-10-31T09:12:11Z)
Originator - Receive Timestamp: 0.000000000
Originator - Transmit Timestamp: 3939354731.909824128 (2024-10-31T09:12:11Z)
sur le Scribe (hôte)
10:12:11.909876 enp2s0 Out IP (tos 0xb8, ttl 64, id 8331, offset 0, flags [DF], proto UDP (17), length 76)
addc.dompedago.etb1.lan.ntp > ntp.altinea.fr.ntp: NTPv4, Client, length 48
Leap indicator: clock unsynchronized (192), Stratum 0 (unspecified), poll 6 (64s), precision -23
Root Delay: 0.000000, Root dispersion: 0.000000, Reference-ID: (unspec)
Reference Timestamp: 0.000000000
Originator Timestamp: 0.000000000
Receive Timestamp: 0.000000000
Transmit Timestamp: 3939354731.909824128 (2024-10-31T09:12:11Z)
Originator - Receive Timestamp: 0.000000000
Originator - Transmit Timestamp: 3939354731.909824128 (2024-10-31T09:12:11Z)
sur le Scribe (conteneur addc)
10:12:11.909861 eth0 Out IP (tos 0xb8, ttl 64, id 8331, offset 0, flags [DF], proto UDP (17), length 76)
addc.dompedago.etb1.lan.ntp > ntp.altinea.fr.ntp: NTPv4, Client, length 48
Leap indicator: clock unsynchronized (192), Stratum 0 (unspecified), poll 6 (64s), precision -23
Root Delay: 0.000000, Root dispersion: 0.000000, Reference-ID: (unspec)
Reference Timestamp: 0.000000000
Originator Timestamp: 0.000000000
Receive Timestamp: 0.000000000
Transmit Timestamp: 3939354731.909824128 (2024-10-31T09:12:11Z)
Originator - Receive Timestamp: 0.000000000
Originator - Transmit Timestamp: 3939354731.909824128 (2024-10-31T09:12:11Z)
La réponse du serveur NTP ne revient même pas sur l’Amon.
SNAT dans le conteneur¶
Après installation du paquet iptables et ajout de la règle suivante :
iptables -t nat -A POSTROUTING --out eth0 -s 10.1.3.11/32 -p udp --dport 123 -j SNAT --to-source 10.1.3.5
Sur l’Amon
10:14:48.155857 enp5s0 In IP (tos 0xb8, ttl 64, id 64160, offset 0, flags [DF], proto UDP (17), length 76)
scribe.etb1.lan.ntp > mwc339.ftth.cust.milkywan.net.ntp: NTPv4, Client, length 48
Leap indicator: clock unsynchronized (192), Stratum 0 (unspecified), poll 6 (64s), precision -23
Root Delay: 0.000000, Root dispersion: 0.000000, Reference-ID: (unspec)
Reference Timestamp: 0.000000000
Originator Timestamp: 0.000000000
Receive Timestamp: 0.000000000
Transmit Timestamp: 3939354863.914959489 (2024-10-31T09:14:23Z)
Originator - Receive Timestamp: 0.000000000
Originator - Transmit Timestamp: 3939354863.914959489 (2024-10-31T09:14:23Z)
10:14:48.155912 enp2s0 Out IP (tos 0xb8, ttl 63, id 64160, offset 0, flags [DF], proto UDP (17), length 76)
amon.etb1.lan.ntp > mwc339.ftth.cust.milkywan.net.ntp: NTPv4, Client, length 48
Leap indicator: clock unsynchronized (192), Stratum 0 (unspecified), poll 6 (64s), precision -23
Root Delay: 0.000000, Root dispersion: 0.000000, Reference-ID: (unspec)
Reference Timestamp: 0.000000000
Originator Timestamp: 0.000000000
Receive Timestamp: 0.000000000
Transmit Timestamp: 3939354863.914959489 (2024-10-31T09:14:23Z)
Originator - Receive Timestamp: 0.000000000
Originator - Transmit Timestamp: 3939354863.914959489 (2024-10-31T09:14:23Z)
10:14:48.173175 enp2s0 In IP (tos 0x0, ttl 54, id 65380, offset 0, flags [DF], proto UDP (17), length 76)
mwc339.ftth.cust.milkywan.net.ntp > amon.etb1.lan.ntp: NTPv4, Server, length 48
Leap indicator: (0), Stratum 2 (secondary reference), poll 6 (64s), precision -25
Root Delay: 0.001419, Root dispersion: 0.000701, Reference-ID: 0xe6e245b4
Reference Timestamp: 3939354245.154001751 (2024-10-31T09:04:05Z)
Originator Timestamp: 3939354863.914959489 (2024-10-31T09:14:23Z)
Receive Timestamp: 3939354888.168305291 (2024-10-31T09:14:48Z)
Transmit Timestamp: 3939354888.168326480 (2024-10-31T09:14:48Z)
Originator - Receive Timestamp: +24.253345801
Originator - Transmit Timestamp: +24.253366991
10:14:48.173188 enp5s0 Out IP (tos 0x0, ttl 53, id 65380, offset 0, flags [DF], proto UDP (17), length 76)
mwc339.ftth.cust.milkywan.net.ntp > scribe.etb1.lan.ntp: NTPv4, Server, length 48
Leap indicator: (0), Stratum 2 (secondary reference), poll 6 (64s), precision -25
Root Delay: 0.001419, Root dispersion: 0.000701, Reference-ID: 0xe6e245b4
Reference Timestamp: 3939354245.154001751 (2024-10-31T09:04:05Z)
Originator Timestamp: 3939354863.914959489 (2024-10-31T09:14:23Z)
Receive Timestamp: 3939354888.168305291 (2024-10-31T09:14:48Z)
Transmit Timestamp: 3939354888.168326480 (2024-10-31T09:14:48Z)
Originator - Receive Timestamp: +24.253345801
Originator - Transmit Timestamp: +24.253366991
Sur le Scribe (hôte)
10:14:23.914985 enp2s0 Out IP (tos 0xb8, ttl 64, id 64160, offset 0, flags [DF], proto UDP (17), length 76)
scribe.dompedago.etb1.lan.ntp > mwc339.ftth.cust.milkywan.net.ntp: NTPv4, Client, length 48
Leap indicator: clock unsynchronized (192), Stratum 0 (unspecified), poll 6 (64s), precision -23
Root Delay: 0.000000, Root dispersion: 0.000000, Reference-ID: (unspec)
Reference Timestamp: 0.000000000
Originator Timestamp: 0.000000000
Receive Timestamp: 0.000000000
Transmit Timestamp: 3939354863.914959489 (2024-10-31T09:14:23Z)
Originator - Receive Timestamp: 0.000000000
Originator - Transmit Timestamp: 3939354863.914959489 (2024-10-31T09:14:23Z)
10:14:23.932572 enp2s0 In IP (tos 0x0, ttl 53, id 65380, offset 0, flags [DF], proto UDP (17), length 76)
mwc339.ftth.cust.milkywan.net.ntp > scribe.dompedago.etb1.lan.ntp: NTPv4, Server, length 48
Leap indicator: (0), Stratum 2 (secondary reference), poll 6 (64s), precision -25
Root Delay: 0.001419, Root dispersion: 0.000701, Reference-ID: 0xe6e245b4
Reference Timestamp: 3939354245.154001751 (2024-10-31T09:04:05Z)
Originator Timestamp: 3939354863.914959489 (2024-10-31T09:14:23Z)
Receive Timestamp: 3939354888.168305291 (2024-10-31T09:14:48Z)
Transmit Timestamp: 3939354888.168326480 (2024-10-31T09:14:48Z)
Originator - Receive Timestamp: +24.253345801
Originator - Transmit Timestamp: +24.253366991
Sur le Scribe (conteneur addc)
10:14:23.914982 eth0 Out IP (tos 0xb8, ttl 64, id 64160, offset 0, flags [DF], proto UDP (17), length 76)
10.1.3.5.ntp > mwc339.ftth.cust.milkywan.net.ntp: NTPv4, Client, length 48
Leap indicator: clock unsynchronized (192), Stratum 0 (unspecified), poll 6 (64s), precision -23
Root Delay: 0.000000, Root dispersion: 0.000000, Reference-ID: (unspec)
Reference Timestamp: 0.000000000
Originator Timestamp: 0.000000000
Receive Timestamp: 0.000000000
Transmit Timestamp: 3939354863.914959489 (2024-10-31T09:14:23Z)
Originator - Receive Timestamp: 0.000000000
Originator - Transmit Timestamp: 3939354863.914959489 (2024-10-31T09:14:23Z)
La réponse du serveur NTP revient bien au Scribe, le paquet d’origine étant bien associé à l’IP 10.1.3.5.
Par contre, elle ne parvient pas au conteneur addc.
#3 Mis à jour par Benjamin Bohard il y a plus d'un an
Mon hypothèse est que le paquet n’arrive pas sur la bonne interface sur le Scribe, pour que le paquet soit routé vers l’émetteur originel. D’après ce que je comprends du fonctionnement du réseau type macvlan utilisé pour le conteneur addc, c’est le comportement normal. L’interface réseau est divisée en deux sous-interfaces totalement indépendantes.
#4 Mis à jour par Benjamin Bohard il y a plus d'un an
SNAT dans le conteneur (mais avec d’autres règles)¶
Pour les deux règles suivantes (remplaçant celle précédemment testée), on retombe dans le cas 1 : pas de réponse reçue par l’Amon mais avec une différence dans l’IP source
iptables -t nat -A POSTROUTING --out eth0 -s 10.1.3.11/32 -p udp --dport 123 -j SNAT --to-source 192.0.2.2
La source est bien modifiée en 192.0.2.2
iptables -t nat -A POSTROUTING --out containers -s 10.1.3.11/32 -p udp --dport 123 -j SNAT --to-source 192.0.2.2
iptables -t nat -A POSTROUTING --out containers -p udp --dport 123 -j SNAT --to-source 192.0.2.2
La source n’est pas modifiée (et donc la route retour cherche 10.1.3.11, retour à la case départ).
Il semble que l’un des problèmes vient du fait que le client NTP envoie ses paquets sur l’interface eth0.
#5 Mis à jour par Benjamin Bohard il y a plus d'un an
L’idée serait donc de s’assurer que les paquets correspondants aux requêtes NTP s’orientent vers la bonne interface.
On peut les marquer et indiquer une route par défaut pour ces paquets marqués (via l’association à une table) :
iptables -t nat -A POSTROUTING --out containers -s 10.1.3.11/32 -p udp --dport 123 -j SNAT --to-source 192.0.2.2
iptables -t mangle -A OUTPUT -p udp --dport 123 -j MARK --set-mark <mark_number>
ip rule add fwmark <mark_number> table <table_number>
ip route add default via 192.0.2.1 table <table_number>
À voir si on ne peut pas obtenir un résultat semblable avec des règles iptables uniquement.
#6 Mis à jour par Benjamin Bohard il y a plus d'un an
- Statut changé de En cours à À valider
#7 Mis à jour par Benjamin Bohard il y a plus d'un an
- Statut changé de À valider à Résolu
#8 Mis à jour par Joël Cuissinat il y a plus d'un an
- Statut changé de Résolu à Fermé
- % réalisé changé de 0 à 100
- Restant à faire (heures) mis à 0.0