Files
higress/plugins/wasm-go/extensions/geo-ip/README.md
2024-09-12 21:48:40 +08:00

2.2 KiB
Raw Blame History

title, keywords, description
title keywords description
IP 地理位置
higress
geo ip
IP 地理位置插件配置参考

功能说明

geo-ip本插件实现了通过用户ip查询出地理位置信息然后通过请求属性和新添加的请求头把地理位置信息传递给后续插件。

运行属性

插件执行阶段:认证阶段 插件执行优先级:440

配置字段

名称 数据类型 填写要求 默认值 描述
ip_protocol string ipv4 可选值1. ipv4只对ipv4用户请求查找地理位置信息传递给后续插件。而ipv6用户的请求会跳过该插件继续由后续插件处理。 2. ipv6(未来实现后)只对ipv6用户查找地理位置信息传递给后续插件。而ipv4用户的请求会跳过该插件继续由后续插件处理。目前是跳过插件请求由后续插件处理。
ip_source_type string origin-source 可选值1. 对端socket iporigin-source; 2. 通过header获取header
ip_header_name string x-forwarded-for ip_source_typeheader指定自定义IP来源头

配置示例

ip_protocol: ipv4
ip_source_type: header
ip_header_name: X-Real-Ip

生成geoCidr.txt的说明

在generateCidr目录里包含的ip.merge.txt文件是github上ip2region项目的全世界的ip网段库。 ipRange2Cidr.go 是把ip网段转换成多个cidr的程序。转换出的cidr 和地理位置信息存在 /data/geoCidr.txt文件里。geo-ip插件会在Higress启动读配置阶段读取geoCidr.txt文件并且解析到radixtree数据结构的内存里以便以后查询用户ip对应的地理位置信息。转换程序运行命令如下

go run generateCidr/ipRange2Cidr.go

property 的使用方式

在geo-ip插件里调用proxywasm.SetProperty() 分别把country、city、province、isp设置进请求属性里以便后续插件可以调用proxywasm.GetProperty()获取该请求的用户ip对应的地理信息。