
我有一個免費套餐上的 Oracle 雲端基礎架構運算節點,配置了 Ubuntu 22.04 作為作業系統。我成功安裝了 Nginx 並向子網路添加了入口規則,以允許連接埠 80 上的網路連線。
但是,我遇到了一個問題,即我無法透過在瀏覽器中輸入公共 IP 來存取伺服器。經過一番研究,我發現我需要添加 iptables 規則以允許連接埠 80 上的 HTTP 流量。我找到了方法來做到這一點:
透過新增此規則:
sudo iptables -I INPUT 6 -m state --state NEW -p tcp --dport 80 -j 接受 sudo netfilter-persistent save
或加入這兩個規則:$
sudo iptables -I 輸入 -p tcp --dport 80 -m conntrack --ctstate 新,已建立 -j 接受
$ sudo iptables -I 輸出 -p tcp --sport 80 -m conntrack --ctstate 已建立 -j 接受
我很困惑的是,即使預設的 INPUT 策略設定為 ACCEPT 並且我找不到任何專門阻止連接埠 80 的拒絕規則,我也無法在不添加規則的情況下從外部存取伺服器。
在新增規則之前,我使用了指令:sudo iptables -S,得到了以下結果:
-P 輸入接受
-P 轉發接受
-P 輸出接受
-N 實例服務
-A 輸入 -m 狀態 --state 相關,已建立 -j 接受
-A 輸入 -p icmp -j 接受
-A 輸入 -i lo -j 接受
-A 輸入 -p udp -m udp --sport 123 -j 接受
-A 輸入 -p tcp -m 狀態 --state 新 -m tcp --dport 22 -j 接受
-A 輸入 -j 拒絕 --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
-A 輸出 -d 169.254.0.0/16 -j 實例服務
-A InstanceServices -d 169.254.0.2/32 -p tcp -mowner --uid-owner 0 -m tcp --dport 3260 -m comment --comment "請參閱 Oracle 雲端基礎架構文件中的 Oracle 提供的映像部分修改或刪除此規則的安全影響」-j ACCEPT
-A InstanceServices -d 169.254.2.0/24 -p tcp -mowner --uid-owner 0 -m tcp --dport 3260 -m comment --comment "請參閱 Oracle 雲端基礎架構文件中的 Oracle 提供的映像部分修改或刪除此規則的安全影響」-j ACCEPT
-A InstanceServices -d 169.254.4.0/24 -p tcp -mowner --uid-owner 0 -m tcp --dport 3260 -m comment --comment "請參閱 Oracle 雲端基礎架構文件中的 Oracle 提供的映像部分修改或刪除此規則的安全影響」-j ACCEPT
-A InstanceServices -d 169.254.5.0/24 -p tcp -mowner --uid-owner 0 -m tcp --dport 3260 -m comment --comment "請參閱 Oracle 雲端基礎架構文件中的 Oracle 提供的映像部分修改或刪除此規則的安全影響」-j ACCEPT
-A InstanceServices -d 169.254.0.2/32 -p tcp -m tcp --dport 80 -m comment --comment 「請參閱Oracle 雲端基礎架構文件中的Oracle 提供的映像部分,了解修改或刪除此規則的安全影響” -j 接受
-A InstanceServices -d 169.254.169.254/32 -p udp -m udp --dport 53 -m comment --comment 「請參閱Oracle 雲端基礎架構文件中的Oracle 提供的映像部分,了解修改或刪除此規則的安全影響” -j 接受
-A InstanceServices -d 169.254.169.254/32 -p tcp -m tcp --dport 53 -m comment --comment 「請參閱Oracle 雲端基礎架構文件中的Oracle 提供的映像部分,以了解修改或刪除此規則的安全影響” -j 接受
-A InstanceServices -d 169.254.0.3/32 -p tcp -mowner --uid-owner 0 -m tcp --dport 80 -m comment --comment "請參閱 Oracle 雲端基礎架構文件中的 Oracle 提供的映像部分修改或刪除此規則的安全影響”-j ACCEPT
-A InstanceServices -d 169.254.0.4/32 -p tcp -m tcp --dport 80 -m comment --comment 「請參閱Oracle 雲端基礎架構文件中的Oracle 提供的映像部分,了解修改或刪除此規則的安全影響” -j 接受
-A InstanceServices -d 169.254.169.254/32 -p tcp -m tcp --dport 80 -m comment --comment 「請參閱Oracle 雲端基礎架構文件中的Oracle 提供的映像部分,以了解修改或刪除此規則的安全影響” -j 接受
-A InstanceServices -d 169.254.169.254/32 -p udp -m udp --dport 67 -m comment --comment 「請參閱Oracle 雲端基礎架構文件中的Oracle 提供的映像部分,了解修改或刪除此規則的安全影響” -j 接受
-A InstanceServices -d 169.254.169.254/32 -p udp -m udp --dport 69 -m comment --comment 「請參閱Oracle 雲端基礎架構文件中的Oracle 提供的映像部分,了解修改或刪除此規則的安全影響” -j 接受
-A InstanceServices -d 169.254.169.254/32 -p udp -m udp --dport 123 -m comment --comment 「請參閱Oracle 雲端基礎架構文件中的Oracle 提供的映像部分,了解修改或刪除此規則的安全影響” -j 接受
-A InstanceServices -d 169.254.0.0/16 -p tcp -m tcp -m comment --comment “請參閱Oracle 雲端基礎設施文件中的Oracle 提供的映像部分,了解修改或刪除此規則的安全影響” -j REJECT - -拒絕-帶有 TCP 重置
-A InstanceServices -d 169.254.0.0/16 -p udp -m udp -m comment --comment “請參閱Oracle 雲端基礎設施文件中的Oracle 提供的映像部分,了解修改或刪除此規則的安全影響” -j REJECT - -拒絕 icmp 連接埠不可達
INPUT、FORWARD 和 OUTPUT 鏈的預設策略設定為 ACCEPT。指向特定 IP 的連接埠 80 的唯一規則也設定為活動。
問題:這對於伺服器的可訪問性來說還不夠嗎?我缺什麼?
由於我是初學者,請用簡單的方式解釋原因和方法。萬分感謝!