網路 Public IP 位址更動之後,連不上 CentOS Linux 機器了,怎麼回事?

自己不止一次被問到這個問題了,這問題常發生在使用浮動 IP 的朋友身上,本來好好的可以連上自己在雲端建立的 CentOS Linux 實例,不知怎麼地就不能連了,搞不清楚是甚麼原因,當然就無法自助處理,得要向外求援。

問題描述

通常這些朋友本來可以使用自建的 CentOS Linux 雲端實例,可以使用 SSH 、 Git 、 Redmine 等常見的自架服務。某天突然就發現這些服務的連接埠 22 、 80/443 都無法存取,只看到 connection refused 的訊息,也不知道到底甚麼情況。

有些朋友知道有 iptables 的存在,但是檢查之後不是 iptables 相關工具根本就沒安裝,不然就是根本就沒啟動,這下就更懷疑系統遭入侵被綁架了。

可能的解決方案

碰到朋友來問我這問題,我透過雲端的管理介面啟動 terminal shell 之後,第一個會做的指令就是檢查 FirewallD 是否有在作用中:

$ sudo firewall-cmd --state
running

如果有在作用中,那麼接下來我會檢查有哪些 zone 正在運行:

$ sudo firewall-cmd –get-active-zones
public
interfaces: eth0
trusted
sources: 114.120.113.192/32

如果有看到這個咚咚,那麼我接下來就會問朋友目前使用的 Public IP 是多少,有 9 成 99 是跟 114.120.113.192 不一樣的 IP 。

接下來只要把 114.120.113.192 換成新的 Public IP (譬如: 125.120.234.29) 就可以解決問題:

$ sudo firewall-cmd --zone=trusted --remove-source=114.120.113.192/32
success
$ sudo firewall-cmd --zone=trusted --add-source=125.120.234.29/32
success
$ sudo firewall-cmd --runtime-to-permanent
success

然後,朋友就會發現世界又恢復像以前那樣美好,只是通常我還會再把釣竿給他們,避免下次我又得再幫忙一次。

參考資料

發佈留言

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料