60

这是一个基本问题,但我似乎无法通过阅读 Oracle 云基础设施文档来解决这个问题。我创建了一个基于 Ubuntu 的计算节点,它连接到一个子网。在那个子网中,我创建了一个有状态的规则,源为 0.0.0.0/0,IP 协议:TCP,源端口范围:全部,目标端口范围:80。

服务器上没有配置防火墙。

尽管有这种配置,但我无法访问计算节点的公共 IP。有任何想法吗?

4

7 回答 7

105

我想到了。连接问题是由于 Oracle 在所有 Oracle 提供的映像上默认使用 iptables。从字面上看,我在启动这个实例时做的第一件事就是 check ufw,假设有一些防火墙限制。ufw状态是非活动的,所以我断定防火墙在本地是全开的。因为据我了解ufwiptables查看 netfilter 内核防火墙,并且因为ufw它是 Ubuntu 上事实上的(标准?)防火墙解决方案,我不知道他们为什么认为以这种方式使用 iptables 是有意义的。也许只是为了标准化所有图像?

我通过运行了解了规则:

$ sudo iptables -L

然后我将规则保存到一个文件中,以便以后可以添加相关的规则:

$ sudo iptables-save > ~/iptables-rules

iptables然后,我通过允许所有流量通过,运行这些规则以有效禁用:

$ iptables -P INPUT ACCEPT
$ iptables -P OUTPUT ACCEPT
$ iptables -P FORWARD ACCEPT
$ iptables -F

要一次清除所有 iptables 规则,请运行以下命令:

$ iptables --flush

无论如何,希望这对其他人有所帮助,因为不存在有关此事的文档。

于 2019-02-21T15:01:51.120 回答
87

在 Oracle Cloud Infrastructure 上部署计算实例时,您需要考虑以下几点:

  1. 创建互联网网关 (IGW)。
  2. 定义指向 IGW 的路由。
  3. 在与 IGW 关联的安全列表中允许端口 80。默认情况下,您只能访问 SSH 和 ICMP 3,4 类型。
  4. 允许在 Compute 的实例防火墙上连接(默认启用)。

在您的示例中,如果您使用的是 OEL 形状:

$ sudo firewall-cmd --zone=public --permanent --add-port=80/tcp

$ sudo firewall-cmd --reload
于 2019-02-22T22:11:50.917 回答
49

始终参考官方指南:https ://docs.cloud.oracle.com/en-us/iaas/developer-tutorials/tutorials/apache-on-ubuntu/01oci-ubuntu-apache-summary.htm

$ sudo iptables -I INPUT 6 -m state --state NEW -p tcp --dport 80 -j ACCEPT
$ sudo netfilter-persistent save
$ sudo systemctl restart apache2
于 2020-08-29T14:29:09.960 回答
16

归功于https://medium.com/@fathi.ria/oracle-database-cloud-open-ports-on-oci-1af24f4eb9f2

电脑实例(如Ubuntu)->虚拟云网络->安全列表->入口规则->请添加规则允许从任何地方访问80端口

于 2019-10-04T14:54:54.767 回答
9

我想如果您将以下规则添加到您的中iptables,它应该可以工作;否则,您将扰乱与这些 Oracle 映像上预配置的块卷附件相关的其他规则。

iptables -I INPUT 5 -i ens3 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
于 2019-08-16T10:02:11.200 回答
9

先决条件

  1. 虚拟机实例应该已经创建并运行
  2. 访问创建 VM 实例期间使用的公钥和私钥

使用 SSH 登录虚拟机并运行以下命令

$ sudo iptables --list --line-numbers

它将显示有关 Chain INPUT (policy ACCEPT) 的详细信息。从删除 IPTABLES 中的所有规则所需的列表中。

$ sudo iptables -D INPUT <Reject Line number>
e.g.
$ sudo iptables -D INPUT 6

检查 REJECT 规则是否被删除

sudo iptables --list --line-numbers 

访问默认安全列表并编辑入口规则以允许端口上的 Internet 流量

编辑 INGRES 规则添加 CIDR 0.0.0.0/0 TCP 目标 9999 (N):网络 > 虚拟云网络 > 虚拟云网络详细信息 > 安全列表 > 安全列表详细信息

通过网络浏览器访问您的应用程序

Type http://<public IP address of the VM>:port
于 2019-10-08T09:58:15.960 回答
0

如果您还没有创建 Internet 网关,这可能就是原因。为了将 VCN 与公共互联网连接,您需要有一个互联网网关和一个路由表来引导流量通过网关。

于 2019-02-21T08:08:53.887 回答