我創建了一個 Ubuntu 實例Oracle 雲端基礎架構 (OCI)。我能夠使用 SSH (TCP 22) 連接到此實例。我在此實例上建立了一些服務,例如白天(TCP 13)、郵件(TCP 25)、http(TCP 80)、dns(TCP/UDP 53)。我加入了類似的規則預設安全列表在這個實例的OCI管理網頁上,類似預設的SSH規則。但是,當我嘗試連接到任何來自互聯網的這些服務我收到No route to host
錯誤。唯一的例外是 SSH 服務,它運作沒有問題。
一旦我安裝ufw
到這個實例;但是,後來我禁用並刪除了ufw
.之後,我iptables
也刪除了包裹。所以,現在Linux根本就沒有防火牆了。但是,我仍然有這個問題。
這似乎是一個與 OCI 相關的問題。我在其他雲端平台(AWS、GCP等)上做過類似的配置,沒有任何問題。
我還可以在哪裡尋找來隔離這個問題?
更新:刪除 iptables並重新啟動解決了問題。現在我將嘗試重新安裝 iptables。
答案1
ufw
該問題似乎與 OCI 不希望您在 Ubuntu 中使用有關:https://docs.cloud.oracle.com/iaas/Content/knownissues.htm#ufw
我必須按照上面給出的連結中的說明禁用或刪除ufw
並編輯該文件。/etc/iptables/rules.v4
之後,要啟用新規則,我需要運行:
# iptables-restore </etc/iptables/rules.v4
看來ufw
規則在這樣的配置中沒有任何效果,我有使用iptables
.然而,這並不是一種非常用戶友好的 OCI 平台 Ubuntu 伺服器上的防火牆規則管理方式。
答案2
我在 Oracle 雲端中發現了 Oracle Linux 的這個問題。它具有預先定義的阻止規則集。因此,我成功連接了 22 連接埠 (ssh),但在嘗試連接其他連接埠時收到「沒有到主機的路由」。
您需要單獨開啟連接埠:
例如,對於 Docker:
firewall-cmd --permanent --zone=public --add-port=2377/tcp
firewall-cmd --reload
此外,您還需要為虛擬雲端網路設定安全性清單。
答案3
這些是對我有用的確切步驟,基於 FedKad 對他原始帖子的回答...
在 Oracle 雲端上需要執行以下額外步驟,才能在 Ubuntu 20 上開啟連接埠:
sudo vim /etc/iptables/rules.v4
(或您使用的任何編輯器)在該行之後
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
,插入:
-A INPUT -p tcp -m state --state NEW -m tcp --dport 1234 -j ACCEPT
(更改需要開放的連接埠號碼!)
- 在 shell 提示字元處:
sudo su -
iptables-restore < /etc/iptables/rules.v4
exit
- 新開放的連接埠可以透過繼續進行測試其他Linux 機器,並下達命令:
nc -zvw100 THE_IP_ADDRESS_OF_MACHINE_WHOSE_PORT_WE_OPENED THE_PORT_NUMBER
答案4
它可以位於網路中,也可以位於 Linux 實例中。如果是在 Linux 中,則可以是 iptables 或服務。
要從最後一個開始,並且因為您有郵件,請嘗試在 Linux 機器上:
telnet 127.0.0.1 smtp
helo there
quit
您看到 220、250 和 221 訊息了嗎?然後您的郵件服務就可以工作了。如果您收到Connection refused
,則您的服務尚未啟動並執行。
接下來,iptables -nvL
應該告訴您連接埠是否對外界開放。如果你的輸出沒有正面或反面,
service iptables stop
應該停止 iptables,這對於測試來說可能是可以接受的。你說你已經擺脫了ufw
,所以我認為sudo ufw disable
不再需要了。
如果 iptables 關閉後,您仍然無法連接,這可能是亞馬遜雲端中的設置,我對此沒有經驗。