我在免费层级上有一个 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。
问题:这还不足以使服务器可访问吗?我遗漏了什么?
请用简单的方式解释原因和方法,因为我是初学者。非常感谢!