我在 ubuntu 20.04 上安装了 Oracle Cloud 实例,并设置了 apache2 服务器。它可以从我的实例公共 IP 运行,curl localhost
但无法从我的实例公共 IP 运行。我的 ufw 状态:
Status: active
To Action From
-- ------ ----
22/tcp ALLOW Anywhere
Apache ALLOW Anywhere
80/tcp ALLOW Anywhere
OpenSSH ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
22/tcp (v6) ALLOW Anywhere (v6)
Apache (v6) ALLOW Anywhere (v6)
80/tcp (v6) ALLOW Anywhere (v6)
如果我这么做但sudo ufw disable
它仍然无法连接。
仅当我执行以下操作时它才会连接:
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -F
但我显然不想这么做。
如果我向 iptables 添加一些规则:
sudo iptables -A INPUT -p tcp --dport 80 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
sudo iptables -A OUTPUT -p tcp --sport 80 -m conntrack --ctstate ESTABLISHED -j ACCEPT
sudo netfilter-persistent save
它没有改变任何东西
编辑
sudo iptables -S OUTPUT
:
-P OUTPUT ACCEPT
-A OUTPUT -d 169.254.0.0/16 -j InstanceServices
-A OUTPUT -j ufw-before-logging-output
-A OUTPUT -j ufw-before-output
-A OUTPUT -j ufw-after-output
-A OUTPUT -j ufw-after-logging-output
-A OUTPUT -j ufw-reject-output
-A OUTPUT -j ufw-track-output
-A OUTPUT -p tcp -m tcp --dport 80 -m conntrack --ctstate ESTABLISHED -j ACCEPT
-A OUTPUT -p tcp -m tcp --dport 443 -m conntrack --ctstate ESTABLISHED -j ACCEPT
-A OUTPUT -p tcp -m tcp --sport 80 -m conntrack --ctstate ESTABLISHED -j ACCEPT
答案1
您似乎正在混合使用原始 iptables 和 ufw(iptables 的前端)
我认为要做的第一件事是删除所有 ufw 规则,然后刷新 iptables。然后选择一个(原始 iptables 或前端)。然后就使用它。两者之间的混合和匹配会导致各种问题