Ubuntu
一個班輪檢查特定埠是否打開
Redis 快速入門狀態:
確保 Redis 用於偵聽連接的埠(預設情況下為 6379,如果在集群模式下執行 Redis,則為 16379,加上 Sentinel 的 26379)是防火牆,因此無法從外部聯繫 Redis。
是否有一個簡短的命令來檢查埠是否有防火牆?
通常,我在主機(幾乎總是 Ubuntu)上安裝了 ufw,但沒有安裝 nmap。
for port in 6379 16379 26379;do nc -zv 127.0.0.1 $port;done
因為,您應該使用另一台伺服器從外部而不是從本地主機檢查您的防火牆,以確保應用程序被阻止。
檢查埠是否有防火牆的簡短命令?
不
僅從提供服務的主機或客戶端都不能可靠或確鑿。請注意,除了基於主機的防火牆之外,客戶端和伺服器之間的網路路徑中還可能存在防火牆和訪問控制。
您可以從客戶端嘗試建立與提供服務的主機上正確埠的連接。(對於 TCP 服務
telnet host port
,通常是 anc -vz host port
或等。)openssl s_client -connect host:port
如果您可以成功建立連接:要麼確實沒有防火牆,要麼連接在防火牆中被列入白名單。後者是一個很大的區別,因為防火牆中可能有其他控制項可能會在以後影響您的性能,例如速率限制、入侵檢測等。
如果無法建立連接,幸運的是您會收到一條
connection refused
錯誤消息。我們的規範connection refused Q&A
詳細解釋瞭如何從那裡著手確定問題是提供服務的主機配置不正確,還是防火牆確實阻止了連接(或兩者兼而有之)。如果無法建立連接並且您得到一個
connection time-out
,那可能是防火牆通過放棄連接嘗試而不是禮貌地拒絕它來阻止連接,但這也可能是路由問題,主機名解析為不正確的 IP 地址或別的東西。