当未设置拒绝规则且默认策略设置为接受时,为什么 Oracle CN 上需要 iptables 规则来允许端口 80 上的 HTTP 流量?

当未设置拒绝规则且默认策略设置为接受时,为什么 Oracle CN 上需要 iptables 规则来允许端口 80 上的 HTTP 流量?

我在免费层级上有一个 Oracle 云基础设施计算节点,配置了 Ubuntu 22.04 作为操作系统。我成功安装了 Nginx,并向子网添加了一条入口规则,以允许端口 80 上的互联网连接。

但是,我遇到一个问题,我无法通过在浏览器中输入公共 IP 来访问服务器。经过一番研究,我发现我需要添加 iptables 规则以允许端口 80 上的 HTTP 流量。添加规则后,服务器即可访问。我找到了两种方法:

通过添加此规则:

sudo iptables -I 输入 6 -m state --state NEW -p tcp --dport 80 -j 接受 sudo netfilter-persistent 保存

或者添加这两条规则:$

sudo iptables -I INPUT -p tcp --dport 80 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT

$ sudo iptables -I OUTPUT -p tcp --sport 80 -m conntrack --ctstate ESTABLISHED -j ACCEPT

令我感到困惑的是,如果不添加规则,我就无法从外部访问服务器,尽管默认的 INPUT 策略设置为 ACCEPT,而且我找不到任何专门阻止端口 80 的拒绝规则。

在添加规则之前,我已经使用过命令:sudo iptables -S,得到以下结果:

-P 输入接受

-P 转发接受

-P 输出接受

-N 实例服务

-A 输入 -m 状态 --状态相关,已建立 -j 接受

-A 输入-p icmp -j 接受

-A 输入-i lo -j 接受

-A 输入-p udp-m udp --sport 123-j 接受

-A 输入 -p tcp -m 状态 --状态新 -m tcp --dport 22 -j 接受

-A 输入 -j 拒绝 --拒绝 icmp 主机禁止

-A 转发 -j 拒绝 --拒绝与 icmp 主机禁止

-A 输出 -d 169.254.0.0/16 -j 实例服务

-A InstanceServices -d 169.254.0.2/32 -p tcp -m Owner --uid-owner 0 -m tcp --dport 3260 -m comment --comment “请参阅 Oracle 云基础设施文档中的 Oracle 提供的图像部分,了解修改或删除此规则对安全的影响” -j ACCEPT

-A InstanceServices -d 169.254.2.0/24 -p tcp -m Owner --uid-owner 0 -m tcp --dport 3260 -m comment --comment “请参阅 Oracle 云基础设施文档中的 Oracle 提供的图像部分,了解修改或删除此规则对安全的影响” -j ACCEPT

-A InstanceServices -d 169.254.4.0/24 -p tcp -m Owner --uid-owner 0 -m tcp --dport 3260 -m comment --comment “请参阅 Oracle 云基础设施文档中的 Oracle 提供的图像部分,了解修改或删除此规则对安全的影响” -j ACCEPT

-A InstanceServices -d 169.254.5.0/24 -p tcp -m Owner --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 ACCEPT

-A InstanceServices -d 169.254.169.254/32 -p udp -m udp --dport 53 -m comment --comment “请参阅 Oracle 云基础设施文档中的 Oracle 提供的图像部分,了解修改或删除此规则对安全的影响” -j ACCEPT

-A InstanceServices -d 169.254.169.254/32 -p tcp -m tcp --dport 53 -m comment --comment “请参阅 Oracle 云基础设施文档中的 Oracle 提供的图像部分,了解修改或删除此规则对安全的影响” -j ACCEPT

-A InstanceServices -d 169.254.0.3/32 -p tcp -m Owner --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 ACCEPT

-A InstanceServices -d 169.254.169.254/32 -p tcp -m tcp --dport 80 -m comment --comment “请参阅 Oracle 云基础设施文档中的 Oracle 提供的图像部分,了解修改或删除此规则对安全的影响” -j ACCEPT

-A InstanceServices -d 169.254.169.254/32 -p udp -m udp --dport 67 -m comment --comment “请参阅 Oracle 云基础设施文档中的 Oracle 提供的图像部分,了解修改或删除此规则对安全的影响” -j ACCEPT

-A InstanceServices -d 169.254.169.254/32 -p udp -m udp --dport 69 -m comment --comment “请参阅 Oracle 云基础设施文档中的 Oracle 提供的图像部分,了解修改或删除此规则对安全的影响” -j ACCEPT

-A InstanceServices -d 169.254.169.254/32 -p udp -m udp --dport 123 -m comment --comment “请参阅 Oracle 云基础设施文档中的 Oracle 提供的图像部分,了解修改或删除此规则对安全的影响” -j ACCEPT

-A InstanceServices -d 169.254.0.0/16 -p tcp -m tcp -m comment --comment “请参阅 Oracle 云基础设施文档中的 Oracle 提供的图像部分,了解修改或删除此规则对安全的影响” -j REJECT --reject-with tcp-reset

-A InstanceServices -d 169.254.0.0/16 -p udp -m udp -m comment --comment “请参阅 Oracle 云基础设施文档中的 Oracle 提供的图像部分,了解修改或删除此规则对安全的影响” -j REJECT --reject-with icmp-port-unreachable

INPUT、FORWARD 和 OUTPUT 链的默认策略设置为 ACCEPT。指向特定 IP 的端口 80 的唯一规则也设置为 active。

问题:这还不足以使服务器可访问吗?我遗漏了什么?

请用简单的方式解释原因和方法,因为我是初学者。非常感谢!

相关内容