Redis預設並不允許遠端裝置的連線,而為了要能夠讓它允許遠端連線,就必須要進行一些額外的設定。
執行以下指令,可以查看目前Redis所監聽的連接埠。
ss
指令可以顯示出Socket相關的資訊。-l
參數可以只顯示正在監聽中的連線。若使用ss
指令時都沒給任何參數的話,會忽略掉監聽中的連線。-t
參數可以只顯示TCP連線。-n
參數可以讓連接埠數字直接被輸出,而不是用一個名稱代替。-p
參數可以顯示佔用連線的行程。
如上圖,可以看到Redis目前只有監聽127.0.0.1
和::1
也就是「loopback」這個網路介面。所以目前的Redis是無法直接透過遠端的方式連入的。
讓Redis監聽其它網路介面
在Redis的設定檔/etc/redis/redis.conf
內,可以找到bind
這個設定命令,它可以用來設定Redis要監聽的網路介面,如果有多個的話可以用空格
隔開。
以下設定,可以讓Redis監聽192.168.100.108
。
bind 192.168.100.108
如果要綁定所有網路介面,那就設成0.0.0.0 ::
吧!
bind 0.0.0.0 ::
記得還要去使用requirepass
命令,讓Redis伺服器需要密碼才能夠被存取。不然會非常地不安全。
requirepass mypasssword
設定完成之後,使用以下指令重新執行Redis的服務,新設定就會套用了。
當然,防火牆也記得要設定才行。Redis預設的連接埠是6379
,iptables規則可以這樣設定:
以上指令會對所有網路介面允許連接埠6379的TCP連入,如果要限定網路介面的話,可以再加上-i
參數,後面接上要限定的網路介面名稱。
另外還可以參考這篇文章來永久保存iptables的設定。
如此一來在遠端,要使用URI存取這個在192.168.100.108
主機上的Redis伺服器時,若requirepass
設定的密碼為mypasssword
,則URI可以寫作: