日本原生IP(按段位判断)、核验方法与快速批量筛选实操指南,含命令、脚本、ipset/nginx/iptables 配置示例及常见问题解答。">
1.
目标与准备
说明:本文目标是教你如何判断一组IP是否为“日本原生IP”、如何批量快速筛选并在防火墙或服务器层面应用。准备:Linux(Debian/Ubuntu)、GeoLite2-City.mmdb、whois、geoiplookup或mmdblookup、ipset、iptables/nftables、curl/traceroute、Python环境。
2.
获取待检测IP列表
步骤:1)从访问日志(NGINX/Apache)导出IP(awk '{print $1}' access.log | sort | uniq)。2)从外部源批量扫描(masscan/nmap)或第三方导出CSV。3)存为ips.txt(每行一IP)。
3.
本地GeoIP快速判定(单条)
步骤:1)安装GeoIP工具并放置GeoLite2-City.mmdb;2)用命令 mmdblookup --file GeoLite2-City.mmdb --ip 203.0.113.5 查看country/ city;3)若country_iso_code为"JP"即为日本归属。可以脚本批量循环读取ips.txt。
4.
Whois/ASN与反向DNS核验(单条)
步骤:1)whois 203.0.113.5,查看NetRange/OrgName/descr,确认运营商是否为日本公司(NTT、KDDI、SoftBank、IIJ、Rakuten、OCN 等);2)dig -x 203.0.113.5 +short 查看PTR,若含vpn/cdn关键字需谨慎;3)查询ASN归属(可用ipinfo.io/TeamCymru)。
5.
路径与延迟验证(判定是否“原生”)
步骤:1)traceroute -n 203.0.113.5 或 mtr -r -c 5 203.0.113.5,观察最后跳点是否为日本骨干或交换点(JPN等);2)ping 测试延迟,若延迟与日本地域匹配(比如东京到东京 < 30ms)倾向原生。
6.
批量自动化筛选方法
步骤:1)用GeoIP库批量筛选(示例Python:使用geoip2库读取mmdb并筛选country=='JP',将结果写入jp_ips.txt);2)用在线国家CIDR源(如ipdeny.com/countries/jp.zone)下载日本CIDR列表;3)对ips.txt做CIDR匹配或用ipset加速匹配。
7.
把结果应用到防火墙/服务(实战命令)
步骤(ipset+iptables):wget http://www.ipdeny.com/ipblocks/data/countries/jp.zone -O jp.zone;ipset create japan hash:net; for cidr in $(cat jp.zone); do ipset add japan $cidr; done;iptables -I INPUT -m set --match-set japan src -j ACCEPT(或DROP)。Nginx可用geo模块 include jp.zone 生成allow/deny 列表。
8.
排除VPN/CDN与异常判定
步骤:1)检查PTR中是否含"vpn|proxy|cdn|akamai|cloudflare";2)whois/org名称若为Cloud/Hosting商则非原生;3)用Shodan/AbuseIPDB或ipqualityscore查询是否为已知代理;4)结合traceroute与延迟做最终判定。
9.
问:如何用Python批量判定并导出日本原生IP?
答:用geoip2库加载GeoLite2-City.mmdb,逐行读取ips.txt,若record.country.iso_code=='JP'再做whois核验(调用python-whois或subprocess whois),并将满足条件且whois显示日本运营商的IP写入jp_native.txt。定时任务可用cron自动运行。
10.
问:如何快速在服务器层面只允许日本IP访问某服务?
答:下载日本CIDR列表(ipdeny或其他),用ipset创建集合并在iptables/nftables中引用,或在NGINX用geo和include批量ACL。这样性能高、易更新,每周更新CIDR文件一次即可。
11.
问:误判如何减少?
答:结合三项判断:GeoIP归属、whois/ASN与反向DNS、traceroute/延迟。对存在冲突的IP做人工或二次验证(查询Shodan/证书信息)。把可疑IP列入观察名单而不是直接封禁以减少误判风险。