JohnnySun / Clash_GlobalAccelerator_Autogen

Clash Global Accelerator, Clash全球网络加速服务, 按IP地址自动选择最优路由配置,无需各种规则分流,自动选择最优路由。
Apache License 2.0
21 stars 15 forks source link

Repo - GeoIP 的问题 #2

Open MaurUppi opened 9 months ago

MaurUppi commented 9 months ago

由于你的GeoIP repo没有开放issues,老是hijacking别人的issue来讨论好像也不是很好。

关于你的geoip repo有些问题请教一下

{
  "input": [
    {
      "type": "maxmindGeoLite2CountryCSV",
      "action": "add",
      "args": {
        "country": "./geolite2/GeoLite2-Country-Locations-en.csv",
        "ipv4": "./geolite2/GeoLite2-Country-Blocks-IPv4.csv",
        "ipv6": "./geolite2/GeoLite2-Country-Blocks-IPv6.csv",
        "ipinfo": "./geolite2/ipinfo/country.csv"
      }
    },
    {
      "type": "private",
      "action": "add"
    }
  ],

IP to Country Database - IPinfo.io

FIELD NAME EXAMPLE DATA TYPE DESCRIPTION
start_ip 217.220.0.0 TEXT Starting IP address of an IP address range
end_ip 217.223.255.255 TEXT Ending IP address of an IP address range
country IT TEXT ISO 3166 country code of the location
country_name Italy TEXT Name of the country
continent EU TEXT Continent code of the country
continent_name Europe TEXT Name of the continent

Action - build.yml 配置

感觉你的这段 steps,是没有意义的,,,

- name: Download GeoLite2
  env:
    LICENSE_KEY: ${{ secrets.MAXMIND_GEOLITE2_LICENSE }}
  run: |
    curl -L "[https://download.maxmind.com/app/geoip_download?edition_id=GeoLite2-ASN&license_key=${LICENSE_KEY}&suffix=tar.gz](https://download.maxmind.com/app/geoip_download?edition_id=GeoLite2-ASN&license_key=$%7BLICENSE_KEY%7D&suffix=tar.gz)" -o GeoLite2-ASN.tar.gz
    curl -L "[https://download.maxmind.com/app/geoip_download?edition_id=GeoLite2-ASN-CSV&license_key=${LICENSE_KEY}&suffix=zip](https://download.maxmind.com/app/geoip_download?edition_id=GeoLite2-ASN-CSV&license_key=$%7BLICENSE_KEY%7D&suffix=zip)" -o GeoLite2-ASN-CSV.zip
    curl -L "[https://download.maxmind.com/app/geoip_download?edition_id=GeoLite2-Country&license_key=${LICENSE_KEY}&suffix=tar.gz](https://download.maxmind.com/app/geoip_download?edition_id=GeoLite2-Country&license_key=$%7BLICENSE_KEY%7D&suffix=tar.gz)" -o GeoLite2-Country.tar.gz
    curl -L "[https://download.maxmind.com/app/geoip_download?edition_id=GeoLite2-Country-CSV&license_key=${LICENSE_KEY}&suffix=zip](https://download.maxmind.com/app/geoip_download?edition_id=GeoLite2-Country-CSV&license_key=$%7BLICENSE_KEY%7D&suffix=zip)" -o GeoLite2-Country-CSV.zip
JohnnySun commented 9 months ago

@MaurUppi

  1. 其实不是叠加在上面,目前只是我在处理的时候做了判断,如果有" ipinfo": "./geolite2/ipinfo/country.csv" 的csv,那我就不再去处理 maxmind的csv文件了
  2. 关于 start_ip,end_ip 与 IPRange的问题,其实是我在 plugin/maxmind/country_csv.go 文件中 新增了 func (g *geoLite2CountryCSV) IpRangeToCIDR(start, end string) ([]string, error)这个方法。做了一次转换。
  3. 没有添加 国内 IPv4, IP v6的原因? 这是因为之前之前Maxmind的数据不准,所以上游他之前是cut了maxmind关于CN的数据,转而使用了China-ip-list 和 ipip.net 的数据。 而Ipinfo的数据,本身也是通过bgp统计出来的。可能在省份上面不一定准确,但是在CN这个大的范围内,还是没有什么问题的(或者说我目前没遇到什么统计错误的问题)所以也就没有必要再去添加ipip的数据了
  4. build.yml 最后你贴的那段yaml,理论上是没有什么意义了,我没有删除的原因是,我没有处理这部分逻辑,如果我直接删除掉,以前的代码如果没处理好可能会有问题。 所以暂时也并没有删除他,只是处理的时候给他bypass掉了
MaurUppi commented 9 months ago

@MaurUppi

  1. 其实不是叠加在上面,目前只是我在处理的时候做了判断,如果有" ipinfo": "./geolite2/ipinfo/country.csv" 的csv,那我就不再去处理 maxmind的csv文件了

OK , 了解了,我回头在看看代码。 我当前在Surge/Clash的使用目的,主要是 GeoIP:CN 的方式,因此CN的准确比较重要。 而你的country.mmdb 更在意的是CN之外的准确度,所以我也很好奇、但也还没开始去研究你的 Clash_GlobalAccelerator_Autogen 玩出的花样。

  1. 关于 start_ip,end_ip 与 IPRange的问题,其实是我在 plugin/maxmind/country_csv.go 文件中 新增了 func (g *geoLite2CountryCSV) IpRangeToCIDR(start, end string) ([]string, error)这个方法。做了一次转换。

了解,晚点去看看代码。 我想这里还不仅仅是 IpRangeToCIDR 的问题,是不是还得有CIDR的合并。

JohnnySun commented 9 months ago

@MaurUppi

  1. 其实不是叠加在上面,目前只是我在处理的时候做了判断,如果有" ipinfo": "./geolite2/ipinfo/country.csv" 的csv,那我就不再去处理 maxmind的csv文件了

OK , 了解了,我回头在看看代码。 我当前在Surge/Clash的使用目的,主要是 GeoIP:CN 的方式,因此CN的准确比较重要。 而你的country.mmdb 更在意的是CN之外的准确度,所以我也很好奇、但也还没开始去研究你的 Clash_GlobalAccelerator_Autogen 玩出的花样。

  1. 关于 start_ip,end_ip 与 IPRange的问题,其实是我在 plugin/maxmind/country_csv.go 文件中 新增了 func (g *geoLite2CountryCSV) IpRangeToCIDR(start, end string) ([]string, error)这个方法。做了一次转换。

了解,晚点去看看代码。 我想这里还不仅仅是 IpRangeToCIDR 的问题,是不是还得有CIDR的合并。

我理解,如果要把多个不同来源的source整合到一起,可能是要有CIDR合并的问题,因为可能同一个IP被标记在了不同的国家