2017-07-22 229 views
0

我在通過我的路由器將我在Centos7家庭服務器上安裝的Mosquitto暴露給外部互聯網而苦苦掙扎。在家用服務器上安裝Mosquitto

Mosquitto在我的本地主機上運行良好,並在家用服務器上發佈1883。我能夠pub/sub,它正在監聽端口127.0.0.1:1883(tcp)

我家的路由器有一個動態IP(現在),比如說76.43.150.206。在路由器I端口轉發1883作爲我的家庭服務器的內部/外部端口,比如192.168.1.100。

在mosquitto.conf文件中,我只有一行「listener 1883 76.43.150.206」。

當我然後嘗試在外部計算機上使用python客戶端作爲mqttc.connect(「76.43.150.206」,1883)發佈/訂閱時,它說連接被拒絕。

任何提示我做錯了什麼或如何讓它工作?順便說一句,我對這個設置的理解是非常基本的,我幾乎已經開始關注博客。

回答

1

這裏交鋒是它如何工作:

1)設置mosquitto.conf作爲

listener 1883 0.0.0.0 
#cafile <path to ca file> 
#certfile <path to server cert> 
#keyfile <path to server key> 
#require_certificate false 

0.0.0.0將服務器綁定到所有存在的接口。

您可以取消註釋代碼以啓用TLS以獲得更好的安全性。但你必須配置客戶端使用相同的。

2.)端口轉發路由器的1883端口號到運行代理的機器的IP端口1883。

3.)啓動代理並測試您的客戶端!

+0

好的,所以我設置.conf文件,就像你說的第一行。我設置我的路由器轉發1883年至1883年我的家庭服務器。但它仍然不起作用。當我檢查家庭服務器時,它顯示我正在監聽0.0.0.0:1883,但是當我檢查一個開放端口檢查工具時,它說它無法看到端口1883.要hardillb的評論,我也嘗試了1884年,仍然是相同的結果。有進一步的見解? –

+0

如果您可以在您的cmd中嘗試> netstat -an並且驗證,可能會有所幫助。 –

+0

我做了,它顯示爲聆聽。然後我發現我需要在CentOS上使用這個命令打開1883「sudo firewall-cmd --permanent --add-port = 1883/tcp」。現在它工作了! –

1

你不應該把外部地址放入mosquitto配置文件。

你甚至可能根本沒有listen行,因爲mosquitto會綁定到它運行默認端口(1883)的機器上的所有可用IP地址。

如果你真的必須使用listen指令(例如爲了設置SSL),那麼它應該配置運行代理的機器的內部IP地址,在這種情況下爲192.168.1.100,並且使用不同的端口號,不使用默認

listen 1884 192.168.1.100