Maison > Article > base de données > Quel est le véritable rôle de bind dans Redis
J'ai toujours pensé que le rôle de bind dans le fichier de configuration redis est de limiter le serveur redis à recevoir des demandes de connexion redis à partir de quels serveurs (adresses IP), seules les adresses IP spécifiées dans bind Seuls les ordinateurs peuvent accéder à ce serveur Redis.
Les faits ont prouvé que la conclusion ci-dessus est complètement fausse.
Lorsque je construisais un cluster de services Redis aujourd'hui, j'ai découvert un malentendu à propos de bind dans Redis.
Par exemple :
bind 127.0.0.1 est utilisé pour limiter le fait que seule la machine locale peut se connecter à la connexion du service Redis
bind 0.0.0.0 est utilisé pour autoriser tout ordinateur pour se connecter à la connexion du service Redis.
Remarque : les compréhensions ci-dessus sont toutes fausses. Il s’agit de cas particuliers qui créent une illusion sur nous.
Si vous n'y croyez pas, vous pouvez l'essayer : (Il vaut mieux essayer)
lier 10.0.0.1 (ou n'importe quelle adresse IP sauf 127.0.0.1 et 0.0.0.0)
Ensuite, redémarrez Redis et vous constaterez qu'il ne peut pas démarrer.
Quant à savoir pourquoi il ne peut pas être démarré, une fois que vous connaîtrez le vrai sens de bind, vous comprendrez la raison pour laquelle il ne peut pas être démarré.
La compréhension correcte de bind dans Redis est :
bind : est l'adresse IP liée à la machine locale, (avec précision : l'adresse IP correspondant à la carte réseau locale, chaque carte réseau a une adresse IP) au lieu de redis autorisant les adresses IP d'autres ordinateurs.
Si bind est spécifié, cela signifie que seules les requêtes Redis de la carte réseau spécifiée sont autorisées. S'il n'est pas spécifié, cela signifie que les requêtes Redis de n'importe quelle carte réseau peuvent être acceptées.
Par exemple : S'il y a deux cartes réseau sur le serveur redis (machine locale), chaque carte réseau correspond à une adresse IP, telle que IP1 et IP2. (Notez que IP1 et IP2 sont toutes deux les adresses IP de cette machine).
Notre fichier de configuration : bind IP1. Ce n'est que si nous accédons au serveur Redis via IP1 que nous sommes autorisés à nous connecter au serveur Redis. Si nous accédons au serveur Redis via IP2, nous ne pourrons pas nous connecter à Redis.
Afficher l'adresse IP correspondant à la carte réseau locale : utilisez la commande ifconfig.
(Partage vidéo d'apprentissage : tutoriel vidéo Redis)
Comme le montre ce qui précède, nous avons deux cartes réseau, c'est-à-dire que nous ne pouvons utiliser que : 127.0.0.1 et 172.18.235.206 sont les meilleures adresses de liaison, sinon redis ne démarrera pas.
Cela explique pourquoi l'exemple ci-dessus (bind 10.0.0.1) ne peut pas démarrer car nous n'avons pas l'adresse IP de la carte réseau correspondante. Cela montre que bind ne spécifie pas les adresses IP à partir desquelles les requêtes du serveur peuvent être acceptées dans Redis.
À la place : bind est utilisé pour spécifier l'adresse IP correspondant à la carte réseau locale.
Remarque :
Explication de bind 127.0.0.1 : (Pourquoi seule cette machine peut se connecter, mais pas les autres)
Nous pouvons voir à partir de ifconfig : lo carte réseau (Correspondant à l'adresse IP 127.0.0.1) : Il s'agit d'une adresse de bouclage (Local Loopback), c'est-à-dire que seul l'ordinateur local peut accéder à cette adresse de bouclage, et les autres ordinateurs ne peuvent accéder qu'à leurs propres adresses de bouclage.
Ensuite, l'ordinateur de cette carte réseau ne possède que cet ordinateur, donc seul cet ordinateur peut y accéder, mais les autres ordinateurs ne le peuvent pas.
lier 172.18.235.206, tant que la requête Redis passe par cette adresse de carte réseau (172.18.235.206), vous pouvez accéder à Redis. J'utilise le serveur d'Alibaba Cloud. Je demande l'adresse IP publique redis-cli Alibaba Cloud sur un autre serveur et il se connectera au serveur redis.
Parce que les demandes d'adresses de réseau public transitent toutes par l'adresse de la carte réseau eth0 (172.18.235.206), recevant ainsi cette requête redis.
Lorsque vous n'utilisez pas cette adresse de bouclage, les ordinateurs externes peuvent accéder au serveur Redis local.
Si nous voulons restreindre uniquement la connexion des hôtes spécifiés à Redis, nous ne pouvons le contrôler que via le pare-feu, mais pas via le paramètre bind dans Redis.
Utilisez le groupe de sécurité d'Alibaba Cloud pour empêcher les hôtes spécifiés de se connecter au port 6379.
Compréhension du [mode protégé] dans Redis :
redis lui-même ne peut pas empêcher [uniquement les hôtes spécifiés] de se connecter à Redis. Comme je l'ai dit ci-dessus, la spécification de liaison n'est utilisée que pour définir les adresses d'interface. (interfaces).
1. Si votre liaison est définie sur : bind 127.0.0.1, c'est très sûr, car seul cet hôte peut se connecter à Redis. Même si vous ne définissez pas de mot de passe, c'est sûr à moins que quelqu'un ne se connecte. à vous.
2. Si votre liaison est définie sur : bind 0.0.0.0, cela signifie que tous les hôtes peuvent se connecter à Redis. (Prérequis : votre serveur doit ouvrir le port redis). Définir un mot de passe à ce stade fournira une couche de protection supplémentaire, et seuls ceux qui connaissent le mot de passe pourront y accéder. Autrement dit, tout hôte connaissant le mot de passe peut accéder à votre redis.
Le mode protégé est une couche de sécurité de Redis lui-même. La fonction de cette couche de sécurité est que seule [cette machine] peut accéder à Redis, et personne d'autre ne peut accéder à Redis. Trois conditions doivent être remplies pour activer cette couche de sécurité, sinon la couche de sécurité sera fermée :
(1) mode protégé oui (activé)
(2) Il n'y a pas de commande de liaison. Texte original : Le serveur ne se lie pas explicitement à un ensemble d'adresses à l'aide de la directive "bind".
(3) Aucun mot de passe n'est défini. Texte original : Aucun mot de passe n'est configuré.
À ce moment, le mécanisme de protection Redis sera activé. Une fois allumé, seule la machine locale peut accéder à Redis. Si l'une des trois conditions ci-dessus n'est pas remplie, le mécanisme de protection ne sera pas activé.
Recommandations associées : Tutoriel sur la base de données Redis
Lien original : https://blog.csdn.net/cw_hello1/article/details/83444013
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!