本地网络检查
浏览器无法回答的问题,以及你自己获得答案的确切命令。
为什么会有这个页面
网站看不到你网络内部的情况,这是有意为之的。服务器只收到一样东西:你网关的公网地址。你的内网地址、子网、路由器以及连接在上面的设备,从来就不是 HTTP 请求的一部分,因此这里写再多代码也无法揭示它们。
MyIPKit 能做的,是准确告诉你哪条命令能在你自己的机器上回答每个问题 — 在那里不存在浏览器沙箱。这就是本页面的用途。
已根据浏览器自动识别。如果不对请自行更换。
运行之前
- 本页面的所有命令都是只读的,不会更改你的配置。
- 标注需要管理员权限的命令会提示输入密码。运行前请先读懂它们。
- 只扫描或探测你拥有或已获授权检测的网络。在多数国家这是法律红线,而不只是礼节问题。
- 永远不要粘贴你看不懂的命令 — 包括本页面上的。下面每一条都写明了它做什么。
你自己的地址
MyIPKit 显示的是互联网看到的公网地址。下面这些显示的是你的设备在自己网络内部持有的内网地址 — 网站永远收不到的那部分。
活动网络接口上的内网 IPv4 地址
ipconfig getifaddr en0hostname -I | awk '{print $1}'ipconfig应该是 192.168.x.x、10.x.x.x 或 172.16–31.x.x 之一。在 macOS 上 en0 通常是 Wi-Fi,en1 是有线接口,两个都试试。
所有网络接口和地址,包括 IPv6
ifconfigip addr showipconfig /all查看
inet(IPv4)和inet6(IPv6)行。以 fe80: 开头的 IPv6 地址是链路本地地址,不会离开你的网络;全球地址通常以 2 或 3 开头。你是否真的有可用的 IPv6 连通性
curl -6 -s https://api64.ipify.org || echo "no IPv6"curl -6 -s https://api64.ipify.org || echo "no IPv6"curl.exe -6 -s https://api64.ipify.org如果打印出一个地址,说明你的连接具备端到端 IPv6。如果失败,说明你是纯 IPv4 — 这同样完全正常。
从命令行查看公网地址
curl -s https://api.ipify.orgcurl -s https://api.ipify.orgcurl.exe -s https://api.ipify.org这应该和 MyIPKit 显示的一致。不一致通常意味着使用了 VPN、代理,或浏览器走了和 curl 不同的路由。
你的网络结构
路由器、子网,以及连在上面的设备。这是人们最常期望网站展示、而浏览器最坚决拒绝暴露的信息。
你的路由器(默认网关)
route -n get defaultip route | grep defaultipconfig | findstr /i "Default Gateway"网关地址就是你的路由器。在浏览器中打开它,通常会进入管理页面。
完整的路由表
netstat -rnip route showroute print显示发往某个目的地的流量会从哪个接口出去。VPN 通常会添加一条接管默认路由的条目。
子网掩码 — 了解你的网络有多大
ipconfig getpacket en0 | grep subnet_maskip -o -f inet addr show | awk '{print $4}'ipconfig | findstr /i "Subnet Mask"把地址和掩码填进本站的子网计算器,就能看到精确的可用范围。
本机最近在局域网上通信过的设备
arp -aip neigh showarp -aARP 表只列出最近见过的邻居,并不是网络上的所有设备。开机后一直闲置的设备不会出现。
当前在线的网络主机
默认未安装nmap -sn 192.168.1.0/24nmap -sn 192.168.1.0/24nmap -sn 192.168.1.0/24nmap 默认未安装。macOS:
brew install nmap。Debian/Ubuntu:sudo apt install nmap。Windows:nmap.org。这是 ping 扫描,忽略 ICMP 的主机即使在线也不会出现。
请把范围换成你自己的 — 可以从上面的网关和掩码读出来。只扫描你拥有或管理的网络。扫描他人的网络在很多地方属于刑事犯罪,而且一定会被记录。
发现网络上主动广播自己的服务
默认未安装dns-sd -B _services._dns-sd._udp local.avahi-browse -a -tWindows 上没有直接对应的命令。
Linux:
sudo apt install avahi-utils。打印机、音箱、NAS 之类的设备会通过 mDNS 主动广播自己。这是基于同意的发现,不是扫描。
向外的路径
本站的网络报告只测量到 MyIPKit 边缘节点的 HTTP 延迟。下面这些逐跳测量真实路径。
真正的 ICMP ping — 浏览器做不到的事
ping -c 10 1.1.1.1ping -c 10 1.1.1.1ping -n 10 1.1.1.1可以和本站的网络报告对比。两者经常不同:很多网络会把 ICMP 的优先级排在普通网页流量之后。
你与目的地之间的每一跳
默认未安装traceroute 1.1.1.1traceroute 1.1.1.1tracert 1.1.1.1Debian/Ubuntu:
sudo apt install traceroute。第一跳是你的路由器。星号表示该跳拒绝回应,这很常见,本身不是故障。要关注延迟突然跳高的位置。
持续监测逐跳丢包与延迟
默认未安装mtr 1.1.1.1mtr 1.1.1.1pathping 1.1.1.1macOS:
brew install mtr。Debian/Ubuntu:sudo apt install mtr。排查间歇性问题最好的工具。如果某一跳有丢包但后面的跳没有,那是该路由器降低了 ICMP 的优先级,而不是真的丢包。
找出不被分片的最大数据包
ping -D -s 1472 -c 3 1.1.1.1ping -M do -s 1472 -c 3 1.1.1.1ping -f -l 1472 1.1.1.11472 + 28 字节头部 = 1500,即常见的以太网 MTU。如果这个大小失败而更小的成功,很可能是 MTU 问题 — 这是 VPN 和 PPPoE 线路上“有些网站能开、有些一直卡住”的经典原因。
本机视角的 DNS
本站的 DNS 查询工具查询的是公开解析器。下面这些查询的是你的网络实际分配给你的解析器 — 真正决定你的流量去向的正是它。
本机配置使用的解析器
scutil --dns | grep nameserverresolvectl status | grep "DNS Servers"ipconfig /all | findstr /i "DNS Servers"如果是你的路由器或运营商,你的查询对他们可见。如果是 1.1.1.1 或 8.8.8.8,说明你覆盖了默认设置。
用你自己的解析器解析一个名称
dig example.comdig example.comnslookup example.com和本站的 DNS 查询工具对比。结果不同说明你的解析器返回的是缓存、被过滤或被覆盖的答案。
把你的解析器和公开解析器做对比
dig example.com @1.1.1.1dig example.com @1.1.1.1nslookup example.com 1.1.1.1这是识别 DNS 层过滤、强制门户和陈旧缓存最清晰的方法。
从根服务器开始追踪一个名称
dig +trace example.comdig +trace example.comWindows 上没有直接对应的命令。
显示完整的委派链。当一个域名对某些人能解析、对另一些人不能时,就该用它。
清空本地 DNS 缓存
需要管理员权限sudo dscacheutil -flushcache; sudo killall -HUP mDNSRespondersudo resolvectl flush-cachesipconfig /flushdns修改 DNS 记录后,在断定改动没生效之前先运行这个。
本机的端口与连接
你自己的机器在监听什么、连接到了什么。完全是本地操作,也是“从互联网扫描自己”的正确替代方案。
所有正在监听入站连接的程序
需要管理员权限sudo lsof -nP -iTCP -sTCP:LISTENsudo ss -tulpnnetstat -ano | findstr LISTENING绑定到 0.0.0.0 或 :: 的会接受来自网络的连接;绑定到 127.0.0.1 的只能从本机访问。
当前已建立的连接
netstat -an | grep ESTABLISHEDss -tan state establishednetstat -an | findstr ESTABLISHED用来回答“这台机器现在到底在和什么通信?”很有用。
测试某台主机的某个端口是否可达
nc -vz example.com 443nc -vz example.com 443Test-NetConnection example.com -Port 443只检查你所管理主机上的单个端口。在你并不拥有的主机上大范围扫端口,那是端口扫描器做的事,也是 MyIPKit 永远不会提供的功能。
查看本机所见的 TLS 证书
openssl s_client -connect example.com:443 -servername example.com < /dev/null 2>/dev/null | openssl x509 -noout -subject -issuer -datesopenssl s_client -connect example.com:443 -servername example.com < /dev/null 2>/dev/null | openssl x509 -noout -subject -issuer -datesWindows 上没有直接对应的命令。
打印主体、签发者和有效期。如果签发者出乎意料,说明有东西在拦截这条连接 — 可能是企业代理,也可能是更糟的情况。
Wi-Fi 质量
如果问题出在设备和接入点之间,再怎么从互联网侧测量也找不到。
信号强度、噪声和协商速率
system_profiler SPAirPortDataType | grep -A 10 "Current Network"iwconfig 2>/dev/null || nmcli dev wifinetsh wlan show interfaces在 macOS 上,RSSI 高于 −60 dBm 算强,低于 −75 dBm 算弱。信号与噪声之间的差值比信号本身更重要。
周围网络正在使用的信道
system_profiler SPAirPortDataType | grep -i channelsudo iwlist scan | grep -E "ESSID|Channel|Quality"netsh wlan show networks mode=bssid在 2.4 GHz 上只有 1、6、11 三个信道互不重叠。邻居挤在你的信道上,是看起来像运营商故障的延迟的常见原因。
仅供参考 — 本页面不运行也不发送任何内容
浏览器会给网站什么,不会给什么
这一点值得说清楚,因为很多网站暗示的并非如此。
服务器真正收到的
- 你网关的公网 IP 地址 — 针对你发起的那一次连接的那一个地址。
- 你的浏览器选择发送的 HTTP 头,例如 User-Agent 和语言。
- 边缘网络根据该公网地址推算的大致位置,而且永远只是近似值。
服务器永远收不到的
- 你的内网地址、子网掩码或路由器地址。
- 你网络上的设备清单。
- 你的 MAC 地址、主机名或 ARP 表。
- 你的机器或网络上任何其他设备开放了哪些端口。
过去的两条泄露途径,以及它们为何被堵上
WebRTC 过去会在 ICE 候选中暴露内网地址。自 2020 年起,Chrome、Edge、Firefox、Opera 和 Brave 默认将其替换为以 .local 结尾的随机主机名,Safari 的做法也大致相同。那个地址已经不在那里可读了。
基于时序的扫描 — 向内网地址发请求,再根据失败的快慢推断存在什么 — 是另一条。Chrome 142 在 2025 年 10 月推出了 Local Network Access,把公开网站发往内网或回环地址的任何请求都置于权限提示之后。Google 给出的理由之一,就是减少网站对访客局域网做指纹识别的能力。
即使这两种技术仍然可用,MyIPKit 也不会去实现。一个探测访客网络的公开网站,就是在扫描那些从未同意过的人的网络,并会得到与之相称的名声。
这个网站为什么不能直接显示我的局域网?
这不是权限问题 — 浏览器在结构上就不会把这些信息交给网站。服务器只收到 NAT 网关的公网地址;内网地址、子网、路由器和连接的设备从来都不是请求的一部分。浏览器还会把 WebRTC 里的本地地址替换成随机的 .local 主机名,而自 Chrome 142 起,公开网站没有明确的权限提示就无法访问本地 IP — 目的正是阻止网站对你的网络做指纹识别。
运行这些命令安全吗?
这里列出的所有命令都是只读的,不会更改你的配置。少数几条需要管理员权限才能看到全部进程,我们已经标注出来。唯一真正需要谨慎的是网络扫描,它只应指向你拥有或管理的网络。
命令输出和 MyIPKit 显示的不一样,哪个是对的?
通常两个都对 — 它们测量的是不同的东西。MyIPKit 报告互联网看到的地址,你的机器报告它在本地持有的地址。在 NAT 之后两者总是不同。如果 curl 和本站显示的公网地址不同,通常是因为 VPN 或代理只对其中一方生效。