簡體   English   中英

在公共 IP Oracle 計算雲上無法訪問 VPS NodeJS 服務器

[英]VPS NodeJS server not accessible on public IP Oracle Compute Cloud

我正在嘗試使用 Ubuntu 18.04 在 Oracle 雲計算 VPS(永遠免費)上啟動我的 nodejs 網站。 (在這種情況下,它是 Oracle 服務器似乎非常重要)。 我可以 curl 本地主機(然后它返回 HTML),但我無法通過我的電腦上的公共 ip 訪問它。

為了解決端口 80 的 sudo 問題,我申請了:

sudo apt-get install libcap2-bin
sudo setcap 'cap_net_bind_service=+ep' `which node`

它確實在內部運行:

pm2 start bin/www

│ id │ name               │ mode     │ ↺    │ status    │ cpu      │ memory   │
├────┼────────────────────┼──────────┼──────┼───────────┼──────────┼──────────┤
│ 0  │ www                │ fork     │ 496  │ online    │ 0%       │ 15.5mb   |

pm2 log沒有返回錯誤。

sudo netstat -tulpn | grep 80 sudo netstat -tulpn | grep 80返回:

tcp6       0      0 :::80                   :::*                    LISTEN      26444/node /opt/por

如果你在想“哦,不,它在 ipv6 上運行,你應該在 nodejs 中添加listen(port, "0.0.0.0")”,我試過了,然后它在下面返回這個,但仍然有同樣的問題:

tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      26487/node /opt/por

curl localhost返回我的主頁 html。 通過我的計算機瀏覽器中的公共 ip 訪問它是問題所在,因此問題出在 Oracle 制作的防火牆中。

我發現 Oracle 已經設置了一些 iptables 規則。 有些人只是說:禁用所有這些,但我發現這對安全性有點冒險。 因此,我只想打開我需要的端口(端口 80)。 所以我嘗試了幾乎所有我能找到的命令(下面的命令以及更多我不記得的命令)。

sudo iptables -I INPUT -p tcp -m tcp --dport 80 -j ACCEPT
sudo iptables -A OUTPUT -p tcp  --sport 80 -j ACCEPT
iptables -I INPUT 5 -i ens3 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT

sudo netfilter-persistent save

我當前的 iptables 可見於:sudo iptables -L -n -v https://pastebin.com/ibqWUqjA

NAT iptables 可見於:sudo iptables -t nat -L -n -v https://pastebin.com/QGxdTsJ1

我必須說,我不是網絡專家。 我只知道如何在非 Oracle 雲服務器(我在家的樹莓派,在我的調制解調器中配置)上設置基本的 NodeJs 服務器。 所以我還沒有處理到這種程度的 iptables 和高級雲環境。 I tried to read in on the iptables topic by watching videos, and the oracle environment on: https://docs.oracle.com/en-us/iaas/Content/Network/Tasks/managingpublicIPs.htm However, I must say it是相當的信息過載。 在鏈接上它說:

  • 實例必須位於公有子網中。 (查看)
  • 實例必須具有公共 IP 地址。 (也檢查)
  • 實例的 VCN 必須有一個互聯網網關。(什么?我不知道如何檢查或執行此操作。即使經過更多閱讀。)
  • 公共子網必須具有相應配置的路由表和安全列表。 (我想我試過了??)

我發現有完全相同的問題的一篇 stackoverflow 帖子說:“我正在使用 oracle 雲。我將查看服務器外部的防火牆設置......謝謝。問題是 oracle 服務器本身的防火牆設置。問題已解決”( linux 上的 Nodejs 無法在服務器外部訪問)但他沒有說在哪里:(。我搜索了很多,但找不到選項。

有人可以指出我正確的方向嗎?

確實還有一個地方需要在終端外打開防火牆。

  • Go 計算 > 實例
  • 單擊您的實例名稱。 您將看到描述許多屬性的詳細頁面。
  • 單擊子網。
  • 單擊 vcn-的默認安全列表...
  • 添加入口規則

添加以下規則: HTTP 和 HTTPS 規則

嘗試在您的網站運行時再次瀏覽您的公共 IP,它可以正常工作!

要閱讀有關此內容的更多信息,並查看我在哪里找到它,請參閱:

https://docs.oracle.com/en-us/iaas/Content/Network/Concepts/securitylists.htm#Default

https://docs.oracle.com/en-us/iaas/Content/Network/Concepts/securityrules.htm#stateful

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM