在做与服务器相关的访问控制或流量路由时,精准维护一份香港原生IP段列表非常关键。最佳方案通常是以RIR权威数据(如APNIC的分配表)为来源,结合商业GeoIP做二次验证;最便宜且实用的做法是编写定时脚本直接解析APNIC或whois数据并用自动化更新到本地的ipset/防火墙中;而对于高可用或合规场景,可采购商业数据库并同步到CI/CD流水线中。
常见数据源包括APNIC分配文件、各ISP的whois记录、MaxMind/商用GeoIP服务和第三方汇总清单。APNIC分配文件(ftp://ftp.apnic.net/pub/stats/apnic/delegated-apnic-latest)权威且免费,但需要解析与合并;商用GeoIP精度与服务质量较高但需付费;第三方清单便捷但可信度不可完全保证。
推荐使用命令行或脚本抓取并过滤:从APNIC下载delegated文件,筛选country字段为“HK”且类型为“ipv4/ipv6”。示例逻辑:下载→grep "apnic|HK|ipv4"→提取起始与数目→转换为CIDR。可用的工具有 ipcalc、cidrmerge 或 Python 的 netaddr 库来合并与标准化网段。
解析时要注意:APNIC文件给出的是起始IP和数量,需要转换为CIDR;同一ISP分配可能产生可汇总的连续网段,建议用CIDR合并算法进行最小化。对IPv6同样适用,但注意前缀长度与展示格式。
推荐架构:抓取→解析→校验→生成名单文件(例如 /etc/ips/hk_cidrs.txt)→推送到防火墙/ipset→持久化并记录变更。用cron或systemd-timer定期触发,变更通过git或内部artifact仓库保存,配合CI完成下发。脚本可用Bash+awk或Python实现,关键是幂等和差异检测。
对于Linux服务器,最常见做法是把网段导入到ipset,然后在iptables中引用set来做快速匹配(性能优于大量单条规则)。Web层可把CIDR导出为nginx的geo或map配置,用于反向代理与限流;注意更新时使用ipset restore或临时swap以实现原子替换。
任何自动更新必须有变更检测(基于checksum或git diff)、操作日志与回滚路径。建议:仅当文件实际变化时才下发;下发成功后在监控中验证流量/连接无异常,如出现问题自动回滚上一个版本并告警。
对新加入的网段可采用whois核验所有者、反向DNS抽样检查以及对若干IP做ping/traceroute和HTTP请求以确认地域与服务提供商一致性。对于关键场景再用商业GeoIP进行二次校验。
更新频率建议视业务而定:普通业务可每日或每周一次,高风险或对黑白名单敏感的场景可缩短至小时级。同时要考虑下发性能:大量IP段频繁写入会影响防火墙性能,必须测试ipset容量与iptables规则的影响。
抓取和使用IP段时注意合法合规,避免把未授权或黑名单误判的IP固定为白名单。对外公开名单时需脱敏或限定访问,避免被滥用。维护仓库与脚本需设访问控制与审计。
可用工具:curl/wget, awk/sed, Python(netaddr/requests), ipset/ipset-save, iptables/nftables, git, CI(Jenkins/GitLab CI),监控(Prometheus)。最佳实践是用APNIC为主源、商用GeoIP为补充、自动化脚本做差异检测并通过CI下发实现可追溯的变更。
为服务器构建并维护一套稳定的香港原生IP段列表,最稳妥的做法是以APNIC等权威源为基础,结合自动化脚本、ipset原子下发、变更管理与监控告警。最便宜的方案是自建抓取解析+ipset下发;最可靠的则是RIR+商业GeoIP结合并纳入CI/CD与审计流程。做好校验与回滚,能在运维实践中既保证精度又控制成本。