Heim  >  Artikel  >  Datenbank  >  Was ist die wahre Rolle von Bind in Redis?

Was ist die wahre Rolle von Bind in Redis?

王林
王林nach vorne
2021-03-10 09:36:206516Durchsuche

Was ist die wahre Rolle von Bind in Redis?

Ich dachte immer, dass die Rolle von Bind in der Redis-Konfigurationsdatei darin besteht, die Server (IP-Adressen) einzuschränken, die der Redis-Server zum Empfangen von Redis-Verbindungsanfragen verwendet. Nur Computer mit den in Bind angegebenen IP-Adressen können auf diesen Redis-Server zugreifen . .

Fakten haben bewiesen, dass die obige Schlussfolgerung völlig falsch ist.

Als ich heute einen Redis-Servicecluster aufbaute, entdeckte ich ein Missverständnis über Bind in Redis.

Zum Beispiel:

bind 127.0.0.1 wird verwendet, um zu begrenzen, dass nur der lokale Computer eine Verbindung zur Redis-Dienstverbindung herstellen kann.

bind 0.0.0.0 wird verwendet, um jedem Computer die Verbindung mit der Redis-Dienstverbindung zu ermöglichen.

Hinweis: Die obigen Auffassungen sind alle falsch. Sie sind Sonderfälle und erzeugen eine Illusion über uns.

Wenn Sie es nicht glauben, können Sie es versuchen: (Probieren Sie es am besten aus)

binden Sie 10.0.0.1 (oder eine beliebige IP-Adresse außer 127.0.0.1 und 0.0.0.0)

Dann neu starten redis und Sie werden feststellen, dass Can't start nicht möglich ist.

Was ist die wahre Rolle von Bind in Redis?

Was den Grund betrifft, warum es nicht gestartet werden kann: Nachdem Sie die wahre Bedeutung von Bind kennen, werden Sie den Grund verstehen, warum es nicht gestartet werden kann.

Das korrekte Verständnis von bind in Redis lautet:

bind: ist die IP-Adresse, die an den lokalen Computer gebunden ist (genau: die IP-Adresse, die der lokalen Netzwerkkarte entspricht, jede Netzwerkkarte hat eine IP-Adresse) und nicht Redis erlaubt IP-Adressen von anderen Computern.

Wenn bind angegeben ist, bedeutet dies, dass nur Redis-Anfragen von der angegebenen Netzwerkkarte zulässig sind. Wenn nicht angegeben, bedeutet dies, dass Redis-Anfragen von jeder Netzwerkkarte akzeptiert werden können.

Zum Beispiel: Wenn auf dem Redis-Server (lokaler Computer) zwei Netzwerkkarten vorhanden sind, entspricht jede Netzwerkkarte einer IP-Adresse, z. B. IP1 und IP2. (Beachten Sie, dass IP1 und IP2 beide die IP-Adressen dieses Geräts sind).

Unsere Konfigurationsdatei: IP1 binden. Nur wenn wir über IP1 auf den Redis-Server zugreifen, können wir eine Verbindung zum Redis-Server herstellen. Wenn wir über IP2 auf den Redis-Server zugreifen, können wir keine Verbindung zu Redis herstellen.

Zeigen Sie die IP-Adresse an, die der lokalen Netzwerkkarte entspricht: Verwenden Sie den Befehl ifconfig.

Was ist die wahre Rolle von Bind in Redis?

(Lernvideo-Sharing: Redis-Video-Tutorial)

Aus dem Obigen ist ersichtlich, dass wir zwei Netzwerkkarten haben, das heißt, wir können nur 127.0.0.1 und 172.18.235.206 als Bindung verwenden Adressen, sonst startet Redis Kann nicht aufstehen.

Dies erklärt, warum das obige Beispiel (Bind 10.0.0.1) nicht gestartet werden kann, weil wir nicht über die entsprechende IP-Adresse der Netzwerkkarte verfügen. Dies zeigt, dass bind nicht die IP-Adressen angibt, von denen Serveranfragen in Redis akzeptiert werden können.

Stattdessen wird bind verwendet, um die IP-Adresse anzugeben, die der lokalen Netzwerkkarte entspricht.

... Adresse (lokaler Loopback), das heißt, nur der lokale Computer kann auf diese Loopback-Adresse zugreifen, und andere Computer können nur auf ihre eigenen Loopback-Adressen zugreifen.

Dann hat der Computer von dieser Lo-Netzwerkkarte nur diesen Computer, sodass nur dieser Computer darauf zugreifen kann, andere Computer jedoch nicht.

Binden Sie 172.18.235.206. Solange die Redis-Anfrage über diese Netzwerkkartenadresse (172.18.235.206) eingeht, können Sie auf Redis zugreifen. Ich verwende den Server von Alibaba Cloud. Ich fordere die öffentliche IP-Adresse von redis-cli Alibaba Cloud auf einem anderen Server an und es wird eine Verbindung zum Redis-Server hergestellt.

Weil die Anfragen nach der öffentlichen Netzwerkadresse alle über die Netzwerkkartenadresse eth0 (172.18.235.206) laufen und somit diese Redis-Anfrage erhalten.

Wenn Sie diese Loopback-Adresse nicht verwenden, kann grundsätzlich jeder externe Computer auf den lokalen Redis-Server zugreifen.

Wenn wir nur bestimmte Hosts auf die Verbindung mit Redis beschränken möchten, können wir dies nur über die Firewall steuern, nicht jedoch über den Bind-Parameter in Redis.

Verwenden Sie die Sicherheitsgruppe von Alibaba Cloud, um die Verbindung bestimmter Hosts mit Port 6379 zu verhindern.

Verständnis des [geschützten Modus] in Redis:

Redis selbst kann [nur angegebene Hosts] nicht daran hindern, eine Verbindung zu Redis herzustellen. Wie ich oben sagte, wird die Bindungsspezifikation nur zum Festlegen von Schnittstellenadressen (Schnittstellen) verwendet.

1. Wenn Ihre Bindung auf „Bind 127.0.0.1“ eingestellt ist, ist dies sehr sicher, da nur dieser Host eine Verbindung zu Redis herstellen kann. Auch wenn Sie kein Passwort festlegen, ist dies sicher, es sei denn, jemand meldet sich bei Ihrem Server an.

2. Wenn Ihre Bindung auf „Bind 0.0.0.0“ eingestellt ist, bedeutet dies, dass alle Hosts eine Verbindung zu Redis herstellen können. (Voraussetzung: Ihr Server muss den Redis-Port öffnen). Das Festlegen eines Passworts zu diesem Zeitpunkt stellt einen zusätzlichen Schutz dar, und nur diejenigen, die das Passwort kennen, können darauf zugreifen. Das heißt, jeder Host, der das Passwort kennt, kann auf Ihre Redis zugreifen.

Protected-Mode ist eine Sicherheitsschicht von Redis selbst. Die Funktion dieser Sicherheitsschicht besteht darin, dass nur [diese Maschine] auf Redis zugreifen kann und niemand sonst auf Redis zugreifen kann. Diese Sicherheitsschicht muss beim Öffnen drei Bedingungen erfüllen, andernfalls wird die Sicherheitsschicht geschlossen:

(1) Geschützter Modus ja (ist aktiviert)

(2) Es gibt keinen Bindungsbefehl. Originaltext: Der Server bindet mithilfe der „bind“-Direktive nicht explizit an eine Reihe von Adressen.

(3) Es ist kein Passwort festgelegt. Originaltext: Es ist kein Passwort konfiguriert.

Der Schutzmechanismus von Redis wird zu diesem Zeitpunkt aktiviert. Nach dem Einschalten kann nur der lokale Computer auf Redis zugreifen. Wenn eine der oben genannten drei Bedingungen nicht erfüllt ist, wird der Schutzmechanismus nicht aktiviert.

Verwandte Empfehlungen: Redis-Datenbank-Tutorial

Originallink: https://blog.csdn.net/cw_hello1/article/details/83444013

Das obige ist der detaillierte Inhalt vonWas ist die wahre Rolle von Bind in Redis?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:csdn.net. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen