无法访问 Oracle Cloud Always Free Compute http 端口

irh*_* i. 10 ubuntu nginx oracle-cloud-infrastructure ubuntu-18.04

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

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

con*_* yu 50

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

首先在Oracle Cloud vps的仪表板/网络/虚拟云网络中创建一个Ingress Rule,例如端口范围23-90 入口规则端口范围 23-90

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

sudo apt-get install firewalld
sudo systemctl enable firewalld
sudo systemctl start firewalld
Run Code Online (Sandbox Code Playgroud)

您只需执行此操作一次。重启后它仍然存在。

然后,打开80端口:

sudo firewall-cmd --zone=public --add-port=80/tcp --permanent  #  or --add-service=http 
sudo firewall-cmd --reload
Run Code Online (Sandbox Code Playgroud)

核实:

sudo firewall-cmd --list-all
Run Code Online (Sandbox Code Playgroud)

输出:

public
  target: default
  icmp-block-inversion: no
  interfaces:
  sources:
  services: dhcpv6-client ssh
  ports: 80/tcp
  ...
Run Code Online (Sandbox Code Playgroud)

这同样适用于打开其他端口。您可以轻松删除端口 ( --remove-port=80/tcp+ a --reload),请参阅firewalld文档。

从远程计算机进行测试

  1. 如果尚未运行,请在 Oracle Cloud vps 中的端口 80 上运行 Web 服务器,例如:
    sudo apt-get install firewalld
    sudo systemctl enable firewalld
    sudo systemctl start firewalld
    
    Run Code Online (Sandbox Code Playgroud)
  2. 在远程计算机中
    sudo firewall-cmd --zone=public --add-port=80/tcp --permanent  #  or --add-service=http 
    sudo firewall-cmd --reload
    
    Run Code Online (Sandbox Code Playgroud)

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

  • 要找到入口规则(我想说,相当晦涩,即使在一段时间后第二次运行也花了我一段时间。我在这里详细介绍了它以供将来参考):从 Oracle Cloud vps 的仪表板/网络/虚拟云网络/,单击名称NCN 的(例如 VirtualCloudNetwork-2019),单击安全列表,单击列表名称(例如 VirtualCloudNetwork-2019 的默认安全列表)。将显示两个入口规则。(默认的入口规则非常严格。)这些可以修改。 (4认同)
  • 警告:如果您在firewalld之前安装了docker,**它将破坏Docker的网络**。您必须在firewalld之后重新安装docker才能为firewalld配置网络。 (4认同)
  • 另一个警告:当我将 OCI 上的 Ubuntu 20.04 实例更新到 22.04 后,“firewalld”在没有警告的情况下停止了。必须再次启用/启动它。还得重启Docker。 (2认同)

Joh*_*hnC 25

我在这上面浪费了很多时间。我希望我先找到了这个: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 防火墙出现问题

$ sudo iptables -I INPUT 6 -m state --state NEW -p tcp --dport 80 -j ACCEPT
$ sudo netfilter-persistent save
Run Code Online (Sandbox Code Playgroud)

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

  • 很棒的一点!我使用了 ufw,但它从来没有起作用并且浪费了很多时间。 (6认同)
  • 第 6 步救了我!做了一些文档挖掘,对于任何对 iptables 命令感兴趣的人:“INPUT”是传入数据包的数据包过滤规则的“表/链”。“-I”和“6”在此表的第 6 个槽中插入一条新规则,该规则当前对除 SSH 和其他一些事物之外的任何事物都有全局拒绝规则。“-m state --state NEW”匹配新连接。“-p tcp”匹配 TCP 协议。“--dport 80”匹配目标端口 80 (HTTP)。而“-j ACCEPT”表示“跳转”直接到接受数据包的动作 (3认同)

Hos*_*agh 6

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

$ sudo iptables -I INPUT 6 -m state --state NEW -p tcp --dport 443 -j ACCEPT

$ sudo netfilter-persistent save
Run Code Online (Sandbox Code Playgroud)


lsa*_*ecz 1

如果您有 Internet 网关并且还配置了路由表,您可能仍需要检查操作系统级别防火墙。如果未配置,您可能需要执行此命令: sudo ufw allow http 有关更多详细信息,请参阅:如何在 Ubuntu 上打开/允许传入防火墙端口