如何设置 iptables 以从公共 IP 访问我的 apache2 服务器

如何设置 iptables 以从公共 IP 访问我的 apache2 服务器

我在 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 或前端)。然后就使用它。两者之间的混合和匹配会导致各种问题

相关内容