這篇文章給大家分享的是有關(guān)redis中bind有什么用的內(nèi)容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。
創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),嵊州企業(yè)網(wǎng)站建設(shè),嵊州品牌網(wǎng)站建設(shè),網(wǎng)站定制,嵊州網(wǎng)站建設(shè)報價,網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,嵊州網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強企業(yè)競爭力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學習、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實用型網(wǎng)站。我一直以為redis配置文件中的bind的作用是:限制redis服務(wù)器用來接收來自哪些服務(wù)器(IP地址)的redis連接請求,只有在bind指定的IP地址的計算機才可以訪問這個redis服務(wù)器。
事實證明,上面的結(jié)論大錯特錯。
今天在搭建Redis服務(wù)集群的時候,發(fā)現(xiàn)自己一直以來對Redis中bind的理解的一個誤區(qū)。
例如:
bind 127.0.0.1 就是用來限制只有本機可以連接redis服務(wù)連接
bind 0.0.0.0 就是用來允許任意計算機都可以連接redis服務(wù)連接。
注意:以上的理解都是錯誤的。他們正好是特例,對我們產(chǎn)生了一種錯覺。
不信的的話你們可以試一試:(好試一試)
bind 10.0.0.1(或者除了127.0.0.1和0.0.0.0之外的任何IP地址)
然后重啟redis,就會發(fā)現(xiàn)啟動不起來。
對于為什么啟動不起來,你們知道了bind的真正意思之后,就會明白啟動不起來的原因。
對于Redis中bind的正確的理解是:
bind:是綁定本機的IP地址,(準確的是:本機的網(wǎng)卡對應的IP地址,每一個網(wǎng)卡都有一個IP地址),而不是redis允許來自其他計算機的IP地址。
如果指定了bind,則說明只允許來自指定網(wǎng)卡的Redis請求。如果沒有指定,就說明可以接受來自任意一個網(wǎng)卡的Redis請求。
舉個例子:如果redis服務(wù)器(本機)上有兩個網(wǎng)卡,每一個網(wǎng)卡對應一個IP地址,例如IP1和IP2。(注意這個IP1和IP2都是本機的IP地址)。
我們的配置文件:bind IP1。 只有我們通過IP1來訪問redis服務(wù)器,才允許連接Redis服務(wù)器,如果我們通過IP2來訪問Redis服務(wù)器,就會連不上Redis。
查看本地的網(wǎng)卡對應的IP地址:使用ifconfig命令。
從上面看出我們有兩個網(wǎng)卡,也就是我們只能使用:127.0.0.1和172.18.235.206最為bind的地址,不然redis啟動不起來。
這就說明了上面例子(bind 10.0.0.1)為什么啟動不起來,因為我們沒有對應的網(wǎng)卡IP地址。這就說明了bind并不是指定redis中可以接受來自哪些服務(wù)器請求的IP地址。
而是:bind用于指定本機網(wǎng)卡對應的IP地址。
附注:
bind 127.0.0.1的解釋:(為什么只有本機可以連接,而其他不可以連接)
我們從ifconfig可以看出:lo網(wǎng)卡(對應127.0.0.1IP地址):是一個回環(huán)地址(Local Loopback),也就是只有本地才能訪問到這個回環(huán)地址,而其他的計算機也只能訪問他們自己的回環(huán)地址。
那么來自這個lo網(wǎng)卡的計算機只有本機,所以只有本機可以訪問,而其他計算機不能訪問。
bind 172.18.235.206的話,只要通過這個網(wǎng)卡地址(172.18.235.206)來的Redis請求,都可以訪問redis。我使用的阿里云的服務(wù)器。我在另一個服務(wù)器上去請求 redis-cli 阿里云公網(wǎng)IP地址 就會連接到redis服務(wù)器。
因為公網(wǎng)地址的請求:都是經(jīng)過這個eth0的網(wǎng)卡地址(172.18.235.206),從而接收到這個redis請求。
當你們不使用那個回環(huán)地址,基本上外部的計算機都可以訪問本機的Redis服務(wù)器。
如果我們想限制只有指定的主機可以連接到redis中,我們只能通過防火墻來控制,而不能通過redis中的bind參數(shù)來限制。
使用阿里云的安全組,來限制指定的主機連接6379端口。
redis中的【protected-mode】的理解:
redis本身無法限制【只有指定主機】連接到redis中,就像我上面說的一樣,bind指定只是用來設(shè)置接口地址(interfaces)。
1、如果你的bind設(shè)置為:bind 127.0.0.1,這是非常安全的,因為只有本臺主機可以連接到redis,就算不設(shè)置密碼,也是安全的,除非有人登入到你的服務(wù)器上。
2、如果你的bind設(shè)置為:bind 0.0.0.0,表示所有主機都可以連接到redis。(前提:你的服務(wù)器必須開放redis的端口)。這時設(shè)置密碼,就會多一層保護,只有知道密碼的才可以訪問。也就是任何知道密碼的主機都可以訪問到你的redis。
protected-mode是redis本身的一個安全層,這個安全層的作用:就是只有【本機】可以訪問redis,其他任何都不可以訪問redis。這個安全層開啟必須滿足三個條件,不然安全層處于關(guān)閉狀態(tài):
(1)protected-mode yes(處于開啟)
(2)沒有bind指令。原文:The server is not binding explicitly to a set of addresses using the "bind" directive.
(3)沒有設(shè)置密碼。原文:No password is configured。
這時redis的保護機制就會開啟。開啟之后,只有本機才可以訪問redis。 如果上面三個條件任何一個不滿足,就不會開啟保護機制。
感謝各位的閱讀!關(guān)于“redis中bind有什么用”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!