我在 Raspberry P 上运行着一个 Apache 服务器,它在本地网络中运行良好。在转发端口 80 并尝试使用公共 IP 进行连接后,Chrome 显示 ERR_CONNECTION_REFUSED。但奇怪的是,当我使用 VPN 并使用相同的 IP 时,我可以访问服务器。我该怎么办?
-telnet 80.***.***.78 80
Trying 80.***.***.78...
telnet: connect to address 80.***.***.78: Connection refused
telnet: Unable to connect to remote host
-route -n
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.0.1 0.0.0.0 UG 0 0 0 eth0
192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
-sudo netstat -lapute:
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State User Inode PID/Program name
tcp 0 0 *:http *:* LISTEN root 6137 2051/apache2
tcp 0 0 *:ssh *:* LISTEN root 6367 2249/sshd
tcp 0 0 pi.local:ssh nmb.local:65535 ESTABLISHED root 8669 2565/sshd: pi [priv
udp 0 0 *:9949 *:* root 5918 1809/dhclient
udp 0 0 *:mdns *:* avahi 6293 2184/avahi-daemon:
udp 0 0 *:54070 *:* avahi 6295 2184/avahi-daemon:
udp 0 0 *:bootpc *:* root 5946 1809/dhclient
udp 0 0 pi.local:ntp *:* root 6310 2200/ntpd
udp 0 0 localhost:ntp *:* root 6309 2200/ntpd
udp 0 0 *:ntp *:* root 6304 2200/ntpd
答案1
这是正常的。端口转发仅适用于从外部向内进行的连接。端口转发不允许 LAN 上的服务器使用路由器的公共 IP 地址连接到同一 LAN 上的机器。这需要一种称为发夹式的双 NAT(路由前和路由后均进行 NAT)。
某些路由器会在您配置端口转发时进行发夹式处理,这会让一些人误以为端口转发会这样做。但事实并非如此。
我更详细地解释了一下这里。