第一步定义“服务器”和“数字基础设施”的边界:是否包含云托管实例、虚拟机、边缘设备、路由器、交换机、数据中心机架等。
将统计口径写成文档(例如:将“对公网IP的主机”定义为可见服务器;“私有网络内主机”通过问卷和采购数据获取)。
列出可自动化获取的公共数据源:ARIN(IP分配)、BGP数据(RouteViews、BGPStream)、云厂商IP段(AWS/Google/Azure ip-ranges.json)、Shodan/Censys(可见主机扫描)、Uptime Institute/Datacenters地图与电力许可数据。
列出需人工/法律途径获取的数据源:各州/县政府IT资产清单(通过内部系统或FOIA请求)、机房建设许可、采购合同。
使用ARIN统计:调用ARIN REST或下载ftp分配表(示例:curl https://ftp.arin.net/pub/stats/arin/delegated-arin-extended-latest),筛选country=US的ipv4/ipv6记录并统计地址总数。
使用BGP数据:在本地运行BGPStream或使用RouteViews数据,统计当前被广播的IPv4/IPv6前缀和对应AS数量。命令示例:使用pybgpstream脚本抓取前缀列表并汇总。
调用Shodan/Censys API统计“country:US”的主机数量(示例:curl "https://api.shodan.io/shodan/host/search?key=YOURKEY&query=country:US")。记录端口、banner、证书信息以便去重与分类。
注意合规:避免自行大规模主动扫描公网地址(可能违法或被封)。优先使用Shodan/Censys等已授权的被动数据。
下载云供应商的公网IP段(例如:https://ip-ranges.amazonaws.com/ip-ranges.json),将Shodan/Censys得到的IP与这些段进行匹配来标记云托管实例。
对未命中云段的IP,结合WHOIS/ARIN的NetRange和BGP ASN信息,按运营商或组织归属进行分类(例如:ISP、数据中心、教育网、政府网)。
向州/县IT部门发起标准化问卷或资产导出请求,字段应包括IP、主机名、用途、是否对公网开放、所在机房与供电信息。
如果对方拒绝或数据不完整,使用采购合同、服务商账单、机房租赁合同、楼宇建设许可作为佐证,建立局部校正系数。
步骤:1) 合并所有IP来源;2) 按IP去重;3) 将IP映射到前缀与ASN;4) 对同一IP但不同端口的多条记录合并为一台主机;5) 标记云段与本地段。
使用工具:Python pandas处理表格、ipaddress库进行IP前缀归属、pybgpstream或bgpq3做ASN映射,示例脚本结构在附录中实现。
将经整理的IP/机房坐标导入GIS(QGIS或Leaflet),按县/州汇总服务器密度、数据中心位置和带宽上行分布。
生成报告指标:每州公网IP数量、每万居民服务器数、云托管比重、本地自有机房数量。
提醒:公网可见性不足以覆盖所有服务器(私网、NAT后主机不可见);云弹性实例易变,统计时需标注采样时间窗口。
法律合规:避免未授权的主动扫描。在请求外部数据或对第三方系统进行探测前先咨询法务和安全团队。
答:可以得到合理估计但难以绝对精确。通过ARIN+BGP+被动扫描+云IP匹配+地方资产清单的组合,可构建覆盖公网与可验证私网的估算模型,并给出置信区间。
答:推荐优先部署ARIN/WHOIS抓取脚本、pybgpstream、Shodan/Censys API和云厂商ip-ranges自动更新,配合pandas做ETL;这些能快速产出可用的基础数据。
答:建立定期(例如每月)自动化采集管道、版本化数据仓库、与州/县IT形成数据共享机制,并指定专人负责数据质量校验与合规审查。