如何向世界开放本地 Apache 网站?

如何向世界开放本地 Apache 网站?

我正在尝试启用 HTTP 端口,以便从我的网络外部进行访问。我目前有一个来自 ISP 的公共 IP。

我需要使用 iptables 进行设置吗?

sudo iptables -vL -n

Chain INPUT (policy ACCEPT 91728 packets, 101M bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:443
    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:80

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 64927 packets, 5892K bytes)
 pkts bytes target     prot opt in     out     source               destination 

sudo ip 地址列表

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN group default qlen 1000
    link/ether f0:de:f1:11:03:95 brd ff:ff:ff:ff:ff:ff
3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether f0:7b:cb:9f:c6:f2 brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.101/24 brd 192.168.0.255 scope global wlan0
       valid_lft forever preferred_lft forever
    inet6 fe80::f27b:cbff:fe9f:c6f2/64 scope link 
       valid_lft forever preferred_lft forever

sudo ss-nptl 源:80

State       Recv-Q Send-Q                                                                      Local Address:Port                                                                        Peer Address:Port 
LISTEN      0      128                                                                                    :::80                                                                                    :::*      users:(("apache2",1267,4),("apache2",1266,4),("apache2",1265,4),("apache2",1264,4),("apache2",1263,4),("apache2",1249,4))

sudo ip 路由

default via 192.168.0.1 dev wlan0  proto static 
192.168.0.0/24 dev wlan0  proto kernel  scope link  src 192.168.0.101  metric 9

我还邀请你查看另一篇文章:-) https://askubuntu.com/questions/574726/problem-with-package-phpmyadmin-error-when-trying-to-create-table-in-phpmyadmi

答案1

您没有将公共 IP 绑定到运行 Web 服务器的机器的接口。它实际上是在您的路由器上配置的。由于它正在执行网络地址转换 (NAT),默认情况下,任何到此公共 IP 的新外部连接都不会到达您的内部机器。

为实现此目标,您需要做两件事:

  1. 允许传入 HTTP[S] 连接至运行 Web 服务器的计算机。

sudo iptables -I INPUT -p tcp --dport 80 -j ACCEPT
sudo iptables -I INPUT -p tcp --dport 443 -j ACCEPT

这将打开端口 80/tcp 和 443/tcp 以接收传入连接。从您的问题来看,您似乎根本没有运行防火墙 - 我建议您尽早检查一下。

  1. 您还需要将端口(如果您愿意,可以是 80 和 443)从路由器转发到运行 Web 服务器的机器(除了上面的 2 个 netfilter 规则)。

我不知道你有什么路由器,但这应该有帮助:

  • 外部 IP:你的公网 IP
  • 外部端口:80/tcp
  • 内部 IP:192.168.0.101
  • 内部端口:80/tcp

如果执行此操作后仍然遇到问题,请发布输出

sudo iptables -vL -n
sudo ss -nptl src :80
sudo ip addr list
sudo ip route

相关内容