Comprendre F5 BIG-IP

Comprendre le SNAT sur F5 : None, Automap et SNAT Pool

Suivre le chemin retour, choisir une traduction de source et comprendre les effets sur l’adresse client, les ports et la haute disponibilité.

Thomas SAUTIER · Publié le · Comprendre une architecture

Ce guide concerne BIG-IP sur TMOS. Les noms et options doivent être confrontés à la documentation de votre version.

Pourquoi traduire la source ?

Le SNAT, Secure Network Address Translation dans la terminologie F5, remplace l’adresse source présentée au serveur. Il est souvent utilisé pour faire revenir les réponses par BIG-IP, afin que l’équipement retrouve la connexion et restitue le trafic au client.

Imaginons un BIG-IP connecté au réseau des serveurs, dont la passerelle mène ailleurs. Si le serveur reçoit directement l’adresse client comme source, sa réponse peut emprunter cette autre passerelle. Traduire la source avec une adresse appropriée ramène le retour vers BIG-IP. La route du serveur vers cette adresse doit malgré tout être correcte.

Le SNAT n’est pas obligatoire sur chaque Virtual Server. Sans traduction, conserver l’adresse client fonctionne si le chemin retour traverse BIG-IP. La traduction de destination, de la VIP vers le membre du pool, est une décision distincte.

Sources F5 : NATs and SNATs ; K7820, bonnes pratiques SNAT ; K12141421, source préservée et chemin retour.

Suivre une connexion

Voici un exemple pédagogique avec des adresses réservées à la documentation. Le port source traduit est illustratif : ce n’est pas une prédiction de l’allocation effectuée par BIG-IP.

Deux côtés d’une même connexionJSON · exemple de flux
{
  "cote_client": {
    "source": "192.0.2.20:51514",
    "destination": "198.51.100.10:443"
  },
  "cote_serveur": {
    "source_apres_snat": "203.0.113.10:60001",
    "membre_du_pool": "203.0.113.20:8443"
  }
}

Le serveur répond à 203.0.113.10:60001. BIG-IP associe cette réponse au flux client, puis répond au client avec la VIP comme source. Le serveur voit donc l’adresse SNAT, tandis que le client dialogue avec la VIP. Les captures sur les deux côtés ne doivent pas être comparées en supposant des adresses et ports identiques.

None, Automap ou SNAT Pool

Trois options de source address translation sur un Virtual Server.
OptionAdresse vue par le serveurConséquence
NoneAdresse du client, en l’absence d’une autre règle de traduction.Il faut assurer le retour via BIG-IP.
AutomapUne self IP choisie par BIG-IP.Pratique, mais l’adresse utilisée dépend des self IP et de la topologie.
SNAT PoolUne adresse du pool de traduction explicitement configuré.Permet de maîtriser les adresses de sortie, leur capacité et les règles réseau associées.

Automap privilégie les self IP flottantes du VLAN de sortie. S’il n’en trouve pas, d’autres adresses peuvent être sélectionnées : n’en déduisez pas une adresse stable sans vérifier la configuration. Les adresses d’un SNAT Pool sont des adresses de traduction ; elles n’ont pas à être créées comme self IP pour remplir ce rôle.

Un objet SNAT autonome peut également traduire des flux d’après leurs adresses d’origine, notamment pour des sorties de serveurs. Il ne faut donc pas limiter la lecture de la configuration au seul champ du Virtual Server.

Sources F5 : K7336, sélection Automap ; ltm snatpool ; objets SNAT et traduction sur Virtual Server.

Conserver l’information client

Avec SNAT, les journaux réseau du serveur voient l’adresse traduite. Pour HTTP, BIG-IP peut transmettre l’adresse client dans un en-tête tel que X-Forwarded-For, si le trafic HTTP est accessible au traitement applicatif. Un tunnel TLS opaque ne permet pas d’injecter cet en-tête.

Définissez aussi une frontière de confiance : l’application ne doit pas accepter aveuglément un en-tête fourni par Internet. Les proxys de confiance et la règle de suppression ou de remplacement des valeurs entrantes doivent être cohérents. Cet en-tête ne rétablit pas l’adresse source réseau et n’aide pas un protocole non HTTP.

Source F5 : prévenir l’usurpation de X-Forwarded-For. Pour le traitement TLS, voir le guide des Virtual Servers.

Ports et haute disponibilité

Une traduction doit disposer de ports pour distinguer les connexions. Une forte concentration vers une même destination peut provoquer une exhaustion des ports SNAT. Le chiffre « une adresse = 65 000 connexions » ne constitue pas une limite universelle : destinations, protocole et allocation des ports interviennent.

Ajouter des adresses de traduction peut augmenter les possibilités d’allocation, mais exige de vérifier routage, retour et règles de filtrage. Recherchez les messages d’exhaustion dans /var/log/ltm et les statistiques avant de conclure à un problème de serveur.

En haute disponibilité, les adresses qui doivent suivre le service doivent flotter avec le traffic group approprié. Pour Automap, F5 recommande une self IP flottante sur les VLANs de sortie concernés et une association cohérente avec le traffic group de la VIP.

Sources F5 : K8246, allocation des ports SNAT ; K33355231, messages d’exhaustion ; K86026120, Automap et traffic groups.

Contrôler les objets

Afficher le VS et son pool de traductionShell · commandes TMSH
tmsh list ltm virtual /Common/vs_application all-properties
tmsh list ltm snatpool /Common/snat_application all-properties
tmsh show ltm snatpool /Common/snat_application

Adaptez les noms : un VS en Automap n’a pas forcément de SNAT Pool associé. Contrôlez ensuite les routes aller et retour, les self IP, les traffic groups et les journaux. Une connexion qui échoue après le SYN peut révéler un retour asymétrique ; ce symptôme seul ne suffit pas au diagnostic.

Références F5 consultées le . La référence TMSH affiche v17.0.0.

Continuer la série F5

Explorer tous les guides du parcours F5 LTM

Découvrir l’expertise F5 de Samhan

Échange

Besoin d’éclaircir votre architecture F5 ?

Échangeons sur vos flux, vos contraintes de disponibilité et votre configuration BIG-IP.