我在公开访问我在 Raspberry Pi 上设置的 MediaWiki 服务器时遇到了问题。尝试远程访问服务器时出现“连接超时”错误。但是,我的 LAN 上的所有计算机都可以访问它。
这似乎不是我的路由器或端口转发的问题,因为我可以将目标 IP 更改为我的 Macbook 的 IP,并公开访问在其上设置的 Apache 服务器。
我已确保 ufw 处于非活动状态,并使用 iptables 添加允许 HTTP 流量的规则。输出sudo iptables -L
如下。
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT tcp -- anywhere anywhere tcp dpt:http state NEW,ESTABLISHED
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
ACCEPT tcp -- anywhere anywhere tcp spt:http state ESTABLISHED
运行netstat -l
结果如下:
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 *:ssh *:* LISTEN
tcp 0 0 localhost:postgresql *:* LISTEN
tcp 0 0 localhost:4700 *:* LISTEN
tcp 0 0 *:microsoft-ds *:* LISTEN
tcp 0 0 *:afpovertcp *:* LISTEN
tcp 0 0 localhost:mysql *:* LISTEN
tcp 0 0 localhost:6379 *:* LISTEN
tcp 0 0 *:netbios-ssn *:* LISTEN
tcp 0 0 *:http *:* LISTEN
udp 0 0 *:26592 *:*
udp 0 0 *:mdns *:*
udp 0 0 *:42516 *:*
udp 0 0 *:bootpc *:*
udp 0 0 raspberrypi:ntp *:*
udp 0 0 localhost:ntp *:*
有没有办法记录 Pi 上这个请求的具体情况?
答案1
您可以尝试使用 -v 选项的 iptables - 它将显示迄今为止与特定规则匹配的数据包和字节数,或链的默认操作(作为您的 INPUT DROP 操作)。
另外,在 Raspberry Pi 上启动“tcpdump port 80”。它会显示端口 80 上的所有数据包,甚至在 iptables 丢弃它们之前。另一种可能是“tcpflow -c port 80”,它显示较少的数据包信息,更多的实际 HTTP 流信息。
tcpdump 和 tcpflow 通常都不是默认安装的,因此您必须先安装它们。