Linux

無法從遠端位置訪問埠 80 但在本地工作?

  • March 6, 2021

我有一個使用 apache 配置的 linux 伺服器。但是我無法使用遠端電腦訪問它。

我可以正常 ssh 到伺服器。

我的IP表:

Chain INPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED
ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:22
REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination
REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited

netstat -ant

Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address               Foreign Address             State
tcp        0      0 0.0.0.0:3306                0.0.0.0:*                   LISTEN
tcp        0      0 0.0.0.0:111                 0.0.0.0:*                   LISTEN
tcp        0      0 SERVERIP:80                 0.0.0.0:*                   LISTEN
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN
tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN
tcp        0      0 0.0.0.0:45117               0.0.0.0:*                   LISTEN
tcp        0    196 SERVERIP:22                 MyIP:3149                   ESTABLISHED
tcp        0      0 :::111                      :::*                        LISTEN
tcp        0      0 :::22                       :::*                        LISTEN
tcp        0      0 :::47193                    :::*                        LISTEN

使用Curl SERVERIP:80and curl localhost:80,兩者都從 apache 返回預設頁面。

可能是什麼問題呢?

您需要在埠 80 上啟用對伺服器的訪問,因為它目前被 iptables 阻止。

sudo /sbin/iptables -I INPUT -p tcp -m tcp --dport 80 -j ACCEPT

這將在開始時將規則插入到您的 iptables 配置中。完成此操作並測試它是否有效後,您應該保存配置,以便下次服務啟動時使用它,

sudo /sbin/service iptables save

這會將目前配置寫入/etc/sysconfig/iptables.

如果您使用 CentOS 7,那麼 FirewallD 是正確的選擇:

防火牆-cmd –zone=public –add-port=80/tcp

使用您的瀏覽器驗證它是否有效,然後:

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

防火牆-cmd –reload

使更改永久化

引用自:https://serverfault.com/questions/301903