【问题标题】:Can't access Oracle Cloud Always Free Compute http port无法访问 Oracle Cloud Always Free Compute http 端口
【发布时间】:2020-10-01 06:00:47
【问题描述】:

昨天,我设置了我的第一个始终免费的计算 VM。我在我的虚拟机上安装了 ubuntu 18.04 minimum。为了我的网络服务需要,我安装了 Nginx。我很困惑,因为当我尝试通过网络浏览器访问我的公共 IP 时,Nginx 欢迎页面没有加载。我认为那是因为端口 80 没有打开。因此,我尝试在安全列表详细信息菜单中设置入口规则来打开它,如下图所示。 Ingress Rule for port 80

但是现在,我仍然无法访问我的 VM 中的 Web 服务器。甲骨文云中可能有更多有经验的人可以帮助我解决这个问题。谢谢

【问题讨论】:

  • nginx 启动了吗?你能看到 access.log 吗?
  • yes Nginx 启动,错误日志为空

标签: ubuntu nginx ubuntu-18.04 oracle-cloud-infrastructure


【解决方案1】:

如果您有 Internet 网关并且还配置了路由表,您可能仍需要检查操作系统级别的防火墙。如果未配置,您可能需要执行以下命令: sudo ufw allow http 更多详情请查看:How to Open/Allow incoming firewall port on Ubuntu

【讨论】:

  • 按照上面教程配置ufw后,80端口仍然关闭
  • 您是否已将 Internet 网关添加到 VCN 并将路由表规则添加到特定流量的子网?
【解决方案2】:

我在这上面浪费了很多时间。 我希望我首先找到了这个: https://docs.cloud.oracle.com/en-us/iaas/developer-tutorials/tutorials/apache-on-ubuntu/01oci-ubuntu-apache-summary.htm

  1. 为端口 80 配置入口路由

  2. 安装 ubuntu。

  3. 安装 apache/nginx

  4. curl localhost 应该以文本格式返回网页,但无法通过互联网。

  5. 忘记 ufw 防火墙 - 这可能会导致 Oracle 防火墙出现问题

  6. 使用

$ sudo iptables -I INPUT 6 -m state --state NEW -p tcp --dport 80 -j ACCEPT
$ sudo netfilter-persistent save

g) 通过互联网测试您的网页

【讨论】:

  • 好点!我使用了 ufw,但它从来没有用过,而且浪费了很多时间。
  • 第 6 步救了我!是否进行了一些文档挖掘以及任何对 iptables 命令感兴趣的人:“INPUT”是传入数据包的数据包过滤规则的“表/链”。 “-I”和“6”在此表的第 6 个插槽中插入一个新规则,该规则当前具有针对 SSH 和其他一些东西以外的任何东西的全局拒绝规则。 “-m state --state NEW” 匹配新连接。 “-p tcp” 匹配 TCP 协议。 “--dport 80”匹配目标端口 80 (HTTP)。而“-j ACCEPT”表示直接“跳​​转”到接受数据包的动作
  • 谢谢。从昨天开始,我就一直在为此头疼。它现已启动并运行。
  • 它解决了我在安装在 oracle 云实例上的 ubuntu 20.04(Canonical-Ubuntu-20.04-Minimal-2021.06.14-0) 的问题。 ufw 可能会导致问题。我已禁用并卸载 ufw,第 6 步已使端口 80 nginx 在互联网上可用。
  • @JohnC 这终于解决了我的问题!!我以为我禁用了本地防火墙。知道为什么 sudo ufw disable 不起作用吗?
【解决方案3】:

这就是我在不直接干预iptables的情况下做到的。

首先在 Oracle Cloud vps 的仪表板/Networking/Virtual Cloud Networks 中创建一个Ingress Rule,例如端口范围为 23-90

接下来,在ubuntu中安装firewalld(我认为firewalld在centos中可用)

sudo apt-get install firewalld
sudo systemctl enable firewalld
sudo systemctl start firewalld

您只需要这样做一次。重启后它仍然存在。

然后,打开80端口:

sudo firewall-cmd --zone=public --add-port=80/tcp --permanent  #  or --add-service=http 
sudo firewall-cmd --reload

验证:

sudo firewall-cmd --list-all

输出:

public
  target: default
  icmp-block-inversion: no
  interfaces:
  sources:
  services: dhcpv6-client ssh
  ports: 80/tcp
  ...

同样适用于打开其他端口。您可以轻松删除端口(@98​​7654331@ + --reload),请参阅firewalld 文档。

从远程计算机进行测试

  1. 在 Oracle Cloud vps 的端口 80 上运行一个 Web 服务器(如果尚未运行),例如:
    python3 -m http.server 80
    
  2. 在远程计算机中
    curl ip-of-oc-vps:80
    

我还在 Oracle Cloud Always Free vps 的防火墙上浪费了很多时间。我希望这可以为其他人节省一些时间。

【讨论】:

  • 找到入口规则(我会说相当晦涩,即使是在一段时间后我的第二次运行也花了我一段时间。我在这里详细说明以供将来参考):来自 Oracle Cloud vps 的仪表板/网络/ Virtual Cloud Networks/,单击 NCN 的名称(例如 VirtualCloudNetwork-2019),单击安全列表,单击列表的名称(例如 VirtualCloudNetwork-2019 的默认安全列表)。将显示两个入口规则。 (默认的 Ingress 规则非常严格。)这些可以修改。
  • 我在运行 Ubuntu 20.04.3 的“几乎免费”的 Oracle ARM 实例上按照这些说明进行操作。 sudo apt-get install firewalld 启用并启动firewalld,无需告诉systemctl 这样做。 OTOH 我只能使用“长命令”启用 HTTP(S),例如sudo firewall-cmd --zone=public --add-port=80/tcp --permanent,简短的sudo firewall-cmd --add-service=http 似乎没有效果。当然是 YMMV。
【解决方案4】:

在我的情况下 - CentOS 8 Image,firewall-cmd 保存了规则,但端口不起作用。原因是系统使用 iptables 而不是 nftables。所以,改变这个 /etc/firewalld/firewalld.conf 文件

# FirewallBackend=nftables
FirewallBackend=iptables

#firewall-cmd restart

成功了。

【讨论】:

  • 澄清:nftables 确实部分工作,但我想它没有创建状态,我可以在打开端口后 tcpdump 入口流量,但绝对没有出口,netcat 无法建立连接跨度>
猜你喜欢
  • 2020-09-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-09
  • 1970-01-01
  • 1970-01-01
  • 2021-04-07
  • 2020-11-14
相关资源
最近更新 更多