CentOS 8的firewalld已經與iptables解綁

文章轉載自:CentOS 8的firewalld已經與iptables解綁

今天有人找上我,說之前用的一鍵安裝腳本不好使了,希望我能幫忙看看怎麼回事。

根據他的描述,初步斷定是系統多次安裝某個依賴導致。仔細詢問,他每次有問題都直接重建vps,不應該存在這個問題。接着猜測應該是腳本與當前系統不匹配,腳本太久沒更新所以安裝報錯。他說的腳本既不是我寫的也沒用過,讓他聯繫作者反饋估計很難也不能解決當下問題,於是幫忙找了另外一個一鍵安裝腳本讓其嘗試。

新的腳本很快就將所需軟件安裝成功,但是出現無法連接的問題。考慮到服務器有可能被屏蔽掉,於是用境外服務器連接,同樣不能連上。接着指導他排除服務未啓動、iptables端口和服務商防火牆未放行等因素,問題依舊。

很久沒碰到這麼奇怪的狀況,於是向他要了root密碼,親自登錄服務器查看問題。首先用ps aux | grep xxx查看進程,確認軟件正常運行;接着netstat -nltp查看端口監聽,確認端口一直且正在被監聽;iptables -nL查看系統內置防火牆,輸出爲空,說明iptables沒有屏蔽進程監聽的端口。然而在這樣的配置下,依然無法telnet遠程連接到這臺服務器。問題到底出現在哪裏?

會不會是因爲進程的問題?於是測試用ssh進程監聽端口,無法連接;換一個端口,還是連不上;改成常用的80和443端口,也telnet不過去。測試了多個進程和端口,除了ssh的22端口,不管哪個進程監聽的其他端口都不行。

走到這個地步,不是系統有問題便是我的水平有問題。於是用uname -a查看系統版本,輸出如下:Linux xxx 4.18.0-80.7.1.el8_0.x86_64 #1 SMP Sat Aug 3 10:14:00 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux。信息略顯雜亂,但還是能讓人一眼就看出問題所在:el8,系統竟然是CentOS 8

到此一切都明朗了:之前的一鍵安裝腳本報錯不好用了,因爲腳本只適用於6和7,CentOS 8剛出來沒多久沒有測試過;我找的一鍵安裝腳本能安裝和運行,無法連接是因爲CentOS 8中firewalld已經與iptables解綁,後端改用nftables,這便是iptables -nL輸出爲空還是無法連接的真正原因;要想連接上,只需要用nft或者firewall-cmd放行相應的端口即可:

firewall-cmd --permanent --add-port=xxxx/tcp
firewall-cmd --reload

向他解釋這些有點難度,於是讓他重建vps時選CentOS 7,一鍵安裝腳本好用了,也能遠程連接過去了。

CentOS 8打開了一個新世界。

參考

  1. https://www.zdnet.com/article...
  2. https://developers.redhat.com...
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章