跳到主要内容
MyIPKit— 读懂你的网络。

本地网络检查

浏览器无法回答的问题,以及你自己获得答案的确切命令。

仅供参考 — 本页面不运行也不发送任何内容
Information:

为什么会有这个页面

网站看不到你网络内部的情况,这是有意为之的。服务器只收到一样东西:你网关的公网地址。你的内网地址、子网、路由器以及连接在上面的设备,从来就不是 HTTP 请求的一部分,因此这里写再多代码也无法揭示它们。

MyIPKit 能做的,是准确告诉你哪条命令能在你自己的机器上回答每个问题 — 在那里不存在浏览器沙箱。这就是本页面的用途。

你的操作系统

已根据浏览器自动识别。如果不对请自行更换。

运行之前

  • 本页面的所有命令都是只读的,不会更改你的配置。
  • 标注需要管理员权限的命令会提示输入密码。运行前请先读懂它们。
  • 只扫描或探测你拥有或已获授权检测的网络。在多数国家这是法律红线,而不只是礼节问题。
  • 永远不要粘贴你看不懂的命令 — 包括本页面上的。下面每一条都写明了它做什么。

你自己的地址

MyIPKit 显示的是互联网看到的公网地址。下面这些显示的是你的设备在自己网络内部持有的内网地址 — 网站永远收不到的那部分。

  • 活动网络接口上的内网 IPv4 地址

    ipconfig getifaddr en0

    应该是 192.168.x.x、10.x.x.x 或 172.16–31.x.x 之一。在 macOS 上 en0 通常是 Wi-Fi,en1 是有线接口,两个都试试。

  • 所有网络接口和地址,包括 IPv6

    ifconfig

    查看 inet(IPv4)和 inet6(IPv6)行。以 fe80: 开头的 IPv6 地址是链路本地地址,不会离开你的网络;全球地址通常以 2 或 3 开头。

  • 你是否真的有可用的 IPv6 连通性

    curl -6 -s https://api64.ipify.org || echo "no IPv6"

    如果打印出一个地址,说明你的连接具备端到端 IPv6。如果失败,说明你是纯 IPv4 — 这同样完全正常。

  • 从命令行查看公网地址

    curl -s https://api.ipify.org

    这应该和 MyIPKit 显示的一致。不一致通常意味着使用了 VPN、代理,或浏览器走了和 curl 不同的路由。

你的网络结构

路由器、子网,以及连在上面的设备。这是人们最常期望网站展示、而浏览器最坚决拒绝暴露的信息。

  • 你的路由器(默认网关)

    route -n get default

    网关地址就是你的路由器。在浏览器中打开它,通常会进入管理页面。

  • 完整的路由表

    netstat -rn

    显示发往某个目的地的流量会从哪个接口出去。VPN 通常会添加一条接管默认路由的条目。

  • 子网掩码 — 了解你的网络有多大

    ipconfig getpacket en0 | grep subnet_mask

    把地址和掩码填进本站的子网计算器,就能看到精确的可用范围。

  • 本机最近在局域网上通信过的设备

    arp -a

    ARP 表只列出最近见过的邻居,并不是网络上的所有设备。开机后一直闲置的设备不会出现。

  • 当前在线的网络主机

    默认未安装
    nmap -sn 192.168.1.0/24

    nmap 默认未安装。macOS:brew install nmap。Debian/Ubuntu:sudo apt install nmap。Windows:nmap.org。

    这是 ping 扫描,忽略 ICMP 的主机即使在线也不会出现。

    请把范围换成你自己的 — 可以从上面的网关和掩码读出来。只扫描你拥有或管理的网络。扫描他人的网络在很多地方属于刑事犯罪,而且一定会被记录。

  • 发现网络上主动广播自己的服务

    默认未安装
    dns-sd -B _services._dns-sd._udp local.

    Linux:sudo apt install avahi-utils

    打印机、音箱、NAS 之类的设备会通过 mDNS 主动广播自己。这是基于同意的发现,不是扫描。

向外的路径

本站的网络报告只测量到 MyIPKit 边缘节点的 HTTP 延迟。下面这些逐跳测量真实路径。

  • 真正的 ICMP ping — 浏览器做不到的事

    ping -c 10 1.1.1.1

    可以和本站的网络报告对比。两者经常不同:很多网络会把 ICMP 的优先级排在普通网页流量之后。

  • 你与目的地之间的每一跳

    默认未安装
    traceroute 1.1.1.1

    Debian/Ubuntu:sudo apt install traceroute

    第一跳是你的路由器。星号表示该跳拒绝回应,这很常见,本身不是故障。要关注延迟突然跳高的位置。

  • 持续监测逐跳丢包与延迟

    默认未安装
    mtr 1.1.1.1

    macOS:brew install mtr。Debian/Ubuntu:sudo apt install mtr

    排查间歇性问题最好的工具。如果某一跳有丢包但后面的跳没有,那是该路由器降低了 ICMP 的优先级,而不是真的丢包。

  • 找出不被分片的最大数据包

    ping -D -s 1472 -c 3 1.1.1.1

    1472 + 28 字节头部 = 1500,即常见的以太网 MTU。如果这个大小失败而更小的成功,很可能是 MTU 问题 — 这是 VPN 和 PPPoE 线路上“有些网站能开、有些一直卡住”的经典原因。

本机视角的 DNS

本站的 DNS 查询工具查询的是公开解析器。下面这些查询的是你的网络实际分配给你的解析器 — 真正决定你的流量去向的正是它。

  • 本机配置使用的解析器

    scutil --dns | grep nameserver

    如果是你的路由器或运营商,你的查询对他们可见。如果是 1.1.1.1 或 8.8.8.8,说明你覆盖了默认设置。

  • 用你自己的解析器解析一个名称

    dig example.com

    和本站的 DNS 查询工具对比。结果不同说明你的解析器返回的是缓存、被过滤或被覆盖的答案。

  • 把你的解析器和公开解析器做对比

    dig example.com @1.1.1.1

    这是识别 DNS 层过滤、强制门户和陈旧缓存最清晰的方法。

  • 从根服务器开始追踪一个名称

    dig +trace example.com

    显示完整的委派链。当一个域名对某些人能解析、对另一些人不能时,就该用它。

  • 清空本地 DNS 缓存

    需要管理员权限
    sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder

    修改 DNS 记录后,在断定改动没生效之前先运行这个。

本机的端口与连接

你自己的机器在监听什么、连接到了什么。完全是本地操作,也是“从互联网扫描自己”的正确替代方案。

  • 所有正在监听入站连接的程序

    需要管理员权限
    sudo lsof -nP -iTCP -sTCP:LISTEN

    绑定到 0.0.0.0 或 :: 的会接受来自网络的连接;绑定到 127.0.0.1 的只能从本机访问。

  • 当前已建立的连接

    netstat -an | grep ESTABLISHED

    用来回答“这台机器现在到底在和什么通信?”很有用。

  • 测试某台主机的某个端口是否可达

    nc -vz example.com 443

    只检查你所管理主机上的单个端口。在你并不拥有的主机上大范围扫端口,那是端口扫描器做的事,也是 MyIPKit 永远不会提供的功能。

  • 查看本机所见的 TLS 证书

    openssl s_client -connect example.com:443 -servername example.com < /dev/null 2>/dev/null | openssl x509 -noout -subject -issuer -dates

    打印主体、签发者和有效期。如果签发者出乎意料,说明有东西在拦截这条连接 — 可能是企业代理,也可能是更糟的情况。

Wi-Fi 质量

如果问题出在设备和接入点之间,再怎么从互联网侧测量也找不到。

  • 信号强度、噪声和协商速率

    system_profiler SPAirPortDataType | grep -A 10 "Current Network"

    在 macOS 上,RSSI 高于 −60 dBm 算强,低于 −75 dBm 算弱。信号与噪声之间的差值比信号本身更重要。

  • 周围网络正在使用的信道

    system_profiler SPAirPortDataType | grep -i channel

    在 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 或代理只对其中一方生效。