Redis에서 바인드의 실제 역할은 무엇입니까

王林
풀어 주다: 2021-03-10 09:36:20
앞으로
6512명이 탐색했습니다.

Redis에서 바인드의 실제 역할은 무엇입니까

저는 항상 redis 구성 파일에서 바인딩의 역할이 redis 서버가 redis 연결 요청을 수신하는 데 사용하는 서버(IP 주소)를 제한하는 것이라고 생각했습니다. 바인딩에 지정된 IP 주소를 가진 컴퓨터만 이 Redis 서버에 액세스할 수 있습니다. .

위의 결론은 완전히 틀렸다는 것이 사실로 입증되었습니다.

오늘 Redis 서비스 클러스터를 구축하던 중 Redis의 바인딩에 대한 오해를 발견했습니다.

예:

bind 127.0.0.1은 로컬 시스템만 Redis 서비스 연결에 연결할 수 있도록 제한하는 데 사용됩니다.

bind 0.0.0.0은 모든 컴퓨터가 Redis 서비스 연결에 연결할 수 있도록 허용하는 데 사용됩니다.

참고: 위의 이해는 잘못되었습니다. 그것들은 우연히 특별한 경우이고 우리에 대한 환상을 만들어냅니다.

믿을 수 없다면 시도해 볼 수 있습니다. (한 번 시도해 보는 것이 가장 좋습니다)

bind 10.0.0.1(또는 127.0.0.1 및 0.0.0.0을 제외한 모든 IP 주소)

그런 다음 다시 시작하세요. redis를 실행하면 Can't start를 찾을 수 있습니다.

Redis에서 바인드의 실제 역할은 무엇입니까

시작할 수 없는 이유는 바인드의 진정한 의미를 알고 나면 시작할 수 없는 이유를 이해하게 될 것입니다.

Redis의 바인딩에 대한 올바른 이해는 다음과 같습니다.

bind: 로컬 시스템에 바인딩된 IP 주소입니다(정확히: 로컬 네트워크 카드에 해당하는 IP 주소, 각 네트워크 카드에는 IP 주소가 있음). Redis에서는 허용되지 않습니다. 다른 컴퓨터의 IP 주소.

바인드가 지정되면 지정된 네트워크 카드의 Redis 요청만 허용된다는 의미입니다. 지정하지 않으면 모든 네트워크 카드의 Redis 요청을 수락할 수 있음을 의미합니다.

예: Redis 서버(로컬 시스템)에 두 개의 네트워크 카드가 있는 경우 각 네트워크 카드는 IP1 및 IP2와 같은 IP 주소에 해당합니다. (IP1과 IP2는 모두 이 기기의 IP 주소입니다.)

구성 파일: IP1 바인딩. IP1을 통해 Redis 서버에 액세스하는 경우에만 Redis 서버에 연결할 수 있습니다. IP2를 통해 Redis 서버에 액세스하면 Redis에 연결할 수 없습니다.

로컬 네트워크 카드에 해당하는 IP 주소를 확인하려면 ifconfig 명령을 사용하세요.

Redis에서 바인드의 실제 역할은 무엇입니까

(동영상 공유 학습: redis 동영상 튜토리얼)

위에서 볼 수 있듯이 두 개의 네트워크 카드가 있습니다. 즉, 127.0.0.1 및 172.18.235.206만 바인딩으로 사용할 수 있습니다. 그렇지 않으면 redis가 시작됩니다. 일어날 수 없습니다.

해당 네트워크 카드 IP 주소가 없기 때문에 위의 예(바인드 10.0.0.1)를 시작할 수 없는 이유를 설명합니다. 이는 바인드가 Redis에서 서버 요청을 수락할 수 있는 IP 주소를 지정하지 않음을 보여줍니다.

대신: 바인딩은 로컬 네트워크 카드에 해당하는 IP 주소를 지정하는 데 사용됩니다.

참고:

바인드 127.0.0.1에 대한 설명: (이 기계만 연결할 수 있고 다른 기계는 연결할 수 없는 이유)

ifconfig에서 볼 수 있습니다: lo 네트워크 카드(127.0.0.1 IP 주소에 해당): 루프백입니다. 주소(로컬 루프백), 즉 로컬 컴퓨터만 이 루프백 주소에 액세스할 수 있고 다른 컴퓨터는 자신의 루프백 주소에만 액세스할 수 있습니다.

그러면 이 lo 네트워크 카드의 컴퓨터에는 이 컴퓨터만 있으므로 이 컴퓨터만 접속할 수 있고 다른 컴퓨터는 접속할 수 없습니다.

bind 172.18.235.206, Redis 요청이 이 네트워크 카드 주소(172.18.235.206)를 통해 오는 한 Redis에 액세스할 수 있습니다. 저는 Alibaba Cloud의 서버를 사용합니다. 다른 서버에서 redis-cli Alibaba Cloud 공용 IP 주소를 요청하면 redis 서버에 연결됩니다.

공용 네트워크 주소에 대한 요청은 모두 eth0 네트워크 카드 주소(172.18.235.206)를 통과하므로 이 redis 요청을 받습니다.

해당 루프백 주소를 사용하지 않으면 기본적으로 모든 외부 컴퓨터가 로컬 Redis 서버에 액세스할 수 있습니다.

지정된 호스트만 Redis에 연결하도록 제한하려면 방화벽을 통해서만 제어할 수 있으며 Redis의 바인딩 매개변수를 통해서는 제어할 수 없습니다.

Alibaba Cloud의 보안 그룹을 사용하여 특정 호스트가 포트 6379에 연결하는 것을 제한합니다.

redis의 [보호 모드] 이해:

redis 자체는 [지정된 호스트만] Redis에 연결하는 것을 제한할 수 없습니다. 위에서 말했듯이 바인드 사양은 인터페이스 주소(인터페이스)를 설정하는 데만 사용됩니다.

1. 바인드가 127.0.0.1로 설정되어 있으면 이 호스트만 Redis에 연결할 수 있으므로 매우 안전합니다. 비밀번호를 설정하지 않아도 누군가가 서버에 로그인하지 않는 한 안전합니다.

2. 바인딩이 0.0.0.0으로 설정되어 있으면 모든 호스트가 Redis에 연결할 수 있음을 의미합니다. (전제조건: 서버가 Redis 포트를 열어야 합니다). 이때 비밀번호를 설정하면 추가 보호 계층이 제공되며 비밀번호를 아는 사람만 액세스할 수 있습니다. 즉, 비밀번호를 아는 모든 호스트가 Redis에 액세스할 수 있습니다.

protected-mode는 Redis 자체의 보안 계층입니다. 이 보안 계층의 기능은 [이 시스템]만 Redis에 액세스할 수 있고 다른 누구도 Redis에 액세스할 수 없다는 것입니다. 이 보안 계층은 열 때 세 가지 조건을 충족해야 합니다. 그렇지 않으면 보안 계층이 닫힙니다.

(1) 보호 모드 예(켜짐)

(2) 바인드 명령이 없습니다. 원본 텍스트: 서버는 "bind" 지시문을 사용하여 주소 집합에 명시적으로 바인딩되지 않습니다.

(3) 비밀번호가 설정되지 않았습니다. 원본 텍스트: 비밀번호가 구성되지 않았습니다.

이때 Redis의 보호 메커니즘이 켜집니다. 활성화된 후에는 로컬 머신만 Redis에 액세스할 수 있습니다. 위의 세 가지 조건 중 하나라도 충족되지 않으면 보호 메커니즘이 활성화되지 않습니다.

관련 권장사항: redis 데이터베이스 튜토리얼

원본 링크: https://blog.csdn.net/cw_hello1/article/details/83444013

위 내용은 Redis에서 바인드의 실제 역할은 무엇입니까의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:csdn.net
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿