同网段下无法远程访问Ubuntu主机上的Web服务求助
同网段下无法远程访问Ubuntu主机上的Web服务求助
看起来你这问题确实折腾人——同网段里明明能SSH到Ubuntu机器,但Nginx、Express这些服务死活远程访问不了,搜遍谷歌、问过GPT都没解决,太闹心了!先帮你梳理下你给出的信息,再给几个具体的排查方向:
先看你提供的关键信息:
1. 端口监听状态(netstat输出)
udp UNCONN 0 0 127.0.0.53%lo:53 0.0.0.0:* udp UNCONN 0 0 0.0.0.0:123 0.0.0.0:* udp UNCONN 0 0 127.0.0.1:323 0.0.0.0:* udp UNCONN 0 0 0.0.0.0:631 0.0.0.0:* udp UNCONN 0 0 0.0.0.0:5353 0.0.0.0:* udp UNCONN 0 0 0.0.0.0:56376 0.0.0.0:* tcp LISTEN 0 511 0.0.0.0:8080 0.0.0.0:* users:(("node",pid=90596,fd=20)) tcp LISTEN 0 511 0.0.0.0:8000 0.0.0.0:* tcp LISTEN 0 4096 127.0.0.53%lo:53 0.0.0.0:* tcp LISTEN 0 4096 127.0.0.1:2947 0.0.0.0:* tcp LISTEN 0 128 127.0.0.1:631 0.0.0.0:* tcp LISTEN 0 1 0.0.0.0:5000 0.0.0.0:* tcp LISTEN 0 511 0.0.0.0:80 0.0.0.0:* tcp LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
这里能看到你的80、8080、5000这些服务都是监听在0.0.0.0上的,说明服务本身没有绑定到本地回环,这部分是正常的;SSH的22端口同样监听0.0.0.0且能正常连接,证明同网段的基础网络连通性没问题。
2. 端口8080的抓包结果(tcpdump输出)
16:32:08.115917 IP (tos 0x0, ttl 128, id 58161, offset 0, flags [DF], proto TCP (6), length 52) 192.168.1.103.62897 > sipl-NUC7PJYH.http-alt: Flags [S], cksum 0x92cf (correct), seq 887362367, win 64240, options [mss 1460,nop,wscale 8,nop,nop,sackOK], length 0 16:32:08.116189 IP (tos 0x0, ttl 128, id 58162, offset 0, flags [DF], proto TCP (6), length 52) 192.168.1.103.62898 > sipl-NUC7PJYH.http-alt: Flags [S], cksum 0xf4d8 (correct), seq 1565558984, win 64240, options [mss 1460,nop,wscale 8,nop,nop,sackOK], length 0
这里明显看到客户端(192.168.1.103)已经发了SYN包请求连接8080端口,但Ubuntu机器没有返回SYN-ACK包——这说明问题出在Ubuntu这边没有处理或者丢弃了这些SYN请求。
接下来可以试试这些排查步骤:
- 检查路由表是否异常:跑
ip route show看看同网段的路由配置,正常情况下192.168.1.0/24(或者你的实际网段)应该直接指向本地网卡(比如eth0、wlan0),而不是被导向网关或者其他奇怪的路由。如果路由不对,手动添加正确的静态路由试试。 - 排查隐藏的防火墙规则:哪怕你关了ufw,说不定还有遗留的iptables/nftables规则在搞事情。分别跑
iptables -L -n -v和nft list ruleset,看看有没有针对入站TCP流量的DROP/REJECT规则,尤其是针对80、8080这些端口的。如果有,手动清空规则试试(iptables -F+iptables -X)。 - 检查网络管理器的防火墙设置:桌面版Ubuntu有时候会通过网络管理器自带防火墙规则,哪怕ufw关闭也会生效。可以去系统设置的「网络」选项里,看看对应网卡的防火墙有没有限制入站端口。
- 验证本地局域网IP访问:在Ubuntu本地用
curl http://<你的局域网IP>:8080试试,如果本地用局域网IP也访问不了,那可能是服务本身的配置问题(虽然netstat显示监听0.0.0.0,但有些框架可能有额外的绑定限制);如果本地能访问,那问题肯定在网络层面。 - 绕开路由器测试:把两台设备直接用网线连接,跳过路由器,看看能不能访问服务。如果能,那大概率是路由器的问题(比如AP隔离、端口过滤),虽然SSH能通,但有些路由器会对特定端口做限制。
- 检查网卡的混杂模式和NAT规则:跑
ip link show看看网卡有没有开启混杂模式(如果开启了可能会影响),再用iptables -t nat -L -n看看有没有把目标端口的流量做了DNAT转发,导致请求被导到别的地方。
先试试这些步骤,有新的输出或者结果可以补充上来,应该能定位到问题所在!
备注:内容来源于stack exchange,提问作者roXx
相关产品推荐
相关产品推荐

