Cette rubrique explique comment identifier l'adresse IP publique d'origine d'un serveur externe ou d'un client connecté à une instance ApsaraDB RDS for SQL Server lorsque cette adresse change dynamiquement. L'adresse IP enregistrée par la base de données correspond à l'IP de sortie publique, et non à celle affichée par un outil de recherche local. Par conséquent, l'ajout de l'IP obtenue localement à la liste d'autorisation entraîne systématiquement des échecs de connexion.
Cette rubrique couvre deux scénarios :
Identifier l'IP de sortie de votre client et l'ajouter à la liste d'autorisation
Lister toutes les adresses IP actuellement connectées à l'instance
Notes d'utilisation
Si votre client ou serveur externe dispose d'une adresse IP publique dynamique en production, privilégiez une connexion via le réseau interne ou ajoutez un bloc CIDR approprié à la liste d'autorisation des adresses IP. Cette approche prévient les déconnexions provoquées par les changements d'adresse IP.
Scénario 1 : Identifier l'IP de sortie de votre client
Recourez à cette méthode si vous ne parvenez pas à vous connecter à l'instance RDS parce que l'adresse IP ajoutée à la liste d'autorisation ne correspond pas à l'IP de sortie réelle détectée par l'instance.
Procédure
-
Ajoutez le bloc CIDR
0.0.0.0/0à la liste d'autorisation des adresses IP de votre instance RDS. Pour plus d'informations, consultez Configurer une liste d'autorisation d'adresses IP.ImportantLe bloc
0.0.0.0/0autorise l'accès à l'instance depuis toutes les adresses IP. Supprimez cette entrée dès la fin du test. Connectez-vous à l'instance RDS à l'aide d'un client. Pour plus d'informations, consultez Se connecter à une instance ApsaraDB RDS for SQL Server.
-
Exécutez la requête suivante pour récupérer le type de protocole (
PROTOCOL_TYPE) et l'adresse IP publique du client telle qu'elle est vue par l'instance (CLIENT_NET_ADDRESS) :SELECT CONNECTIONPROPERTY('PROTOCOL_TYPE') AS PROTOCOL_TYPE, CONNECTIONPROPERTY('CLIENT_NET_ADDRESS') AS CLIENT_NET_ADDRESSDans le résultat de la requête, la colonne
CLIENT_NET_ADDRESScontient l'adresse IP de sortie réelle du client à ajouter à la liste d'autorisation. Supprimez le bloc CIDR
0.0.0.0/0ajouté à l'étape 1, puis ajoutez l'adresse IP renvoyée parCLIENT_NET_ADDRESSà la liste d'autorisation.
Scénario 2 : Lister toutes les adresses IP connectées
Utilisez cette approche pour auditer toutes les connexions actives vers l'instance RDS ou pour investiguer d'éventuelles fuites de connexion.
Procédure
-
Ajoutez le bloc CIDR
0.0.0.0/0à la liste d'autorisation des adresses IP de votre instance RDS. Pour plus d'informations, consultez Configurer une liste d'autorisation d'adresses IP.ImportantLe bloc
0.0.0.0/0autorise l'accès à l'instance depuis toutes les adresses IP. Supprimez cette entrée dès la fin du test. Connectez-vous à l'instance RDS à l'aide d'un client. Pour plus d'informations, consultez Se connecter à une instance ApsaraDB RDS for SQL Server.
-
Exécutez la requête suivante pour lister toutes les connexions actives authentifiées via SQL. La requête renvoie l'ID de session (
SPID), le nom de connexion, l'heure de connexion, le nom d'hôte, le nom de l'application cliente, le port TCP et l'adresse IP du client :SELECT SP.SPID, SP.LOGINAME, SP.LOGIN_TIME, SP.HOSTNAME, SP.PROGRAM_NAME, DC.CLIENT_TCP_PORT, DC.CLIENT_NET_ADDRESS FROM SYS.SYSPROCESSES AS SP INNER JOIN SYS.DM_EXEC_CONNECTIONS AS DC ON SP.SPID = DC.SESSION_ID WHERE SP.SPID > 50 AND DC.AUTH_SCHEME='SQL'Le filtre
SP.SPID > 50exclut les processus système. La conditionDC.AUTH_SCHEME='SQL'limite les résultats aux connexions authentifiées via SQL. Supprimez le bloc CIDR
0.0.0.0/0(ou le bloc CIDR de votre entreprise) de la liste d'autorisation des adresses IP.
Consulter les paramètres de connexion
Après avoir exécuté la requête du scénario 2, utilisez la valeur SPID pour inspecter les paramètres complets d'une connexion spécifique :
SELECT * FROM SYS.DM_EXEC_SESSIONS WHERE SESSION_ID=<The obtained SPID>
Remplacez <The obtained SPID> par la valeur SPID issue des résultats de la requête du scénario 2.
La requête renvoie un jeu de résultats contenant les paramètres détaillés de la session.