Как определить геолокацию своих пиров

С помощью нижеследующих команд можно определить, в каких странах находятся узлы, к которым вы подключены (или которые подключены к вам).

Примечание: в конфигурационном файле Yggdrasil должен быть задан параметр AdminListen, отличный от none.

Примечание: не обрабатываются IPv6-адреса пиров.

С помощью geoiplookup

sudo apt install geoip-bin

Вывод IP-адресов всех пиров с кодами стран:

sudo yggdrasilctl getPeers | grep -Eo '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' | while read ip; do printf "%-16s" "$ip "; geoiplookup $ip | sed 's/GeoIP Country Edition: \([A-Z ]\{2\}\).*/\1/';done;

Подсчет количества пиров по странам:

sudo yggdrasilctl getPeers | grep -Eo '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' | while read ip; do geoiplookup $ip | sed 's/GeoIP Country Edition: \([A-Z ]\{2\}\).*/\1/'; done | sort | uniq -c

С помощью whois

sudo apt install whois
sudo yggdrasilctl getPeers|grep -Eo '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' | while read ip; do printf "%-16s" "$ip "; whois $ip |grep country;done;

С помощью сервиса ipinfo.io

sudo apt install curl jq
sudo yggdrasilctl getPeers|grep -Eo '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' | while read ip; do printf "%-16s" "$ip "; echo $(curl --silent "ipinfo.io/$ip") |jq '.country';done;

Ссылки

API для администрирования: yggdrasil:admin_api

Коды названий стран: https://ru.wikipedia.org/wiki/ISO_3166-1

Обсуждение

Олег, 2023/05/31 19:08
geoip-bin не стоит сильно доверять, он информацию дёргает, скорее всего, из whois. Вот форум linux-ru.ru, хостинг его (по whois) timeweb (.ru), но физически он и его IP - это их хостинг Казахстан, Алматы (и 2ip.ru это именно так легко и определяет).

Revertron, 2023/05/31 19:33
Так а каким ещё способом можно узнавать геопозицию? Разве что делать трейс, и смотреть куда подключен тот айпишник, к какому IX.

Олег, 2023/05/31 19:41
но скрипты для грубого оценивания - результативные и полезные!
Fyodor Ustinov, 2023/05/31 22:31
Геолокация, по сегодняшним меркам, нужна только для определения к какой стране относится тот или иной адрес. Определить где физически "сидит" этот адрес не всегда возможно. Даже если смотреть трейс.

Олег, 2023/11/12 19:28, 2023/11/13 01:58
Там с этими скриптами не всё так просто: они разрешают когда пир задан IPv4, но не задан когда он определянтся URL - по странице https://publicpeers.neilalexander.dev/v0.5 они многие определяются как раз так:
tls://fi1.servers.devices.cwinfo.net:61995
tcp://s2.i2pd.xyz:39565
и т.д.
Вам может yggdrasilctl getPeers выбрасывать, скажем, 8 пиров, а эти скрипты геолокации будут показывать только 5 ...

Олег, 2023/11/12 19:31
Тогда лучше в скриптах сделать не выделение IPv4 регуляркой, а выделать просто поле URL, типа такого:
olej@nvme:~/2023/Yggdrasil$ sudo yggdrasilctl getPeers | grep -v ^' ' | cut -sf1 | cut -d':' -f2 | cut -c3- | \
> while read url; do printf "%-16s" "$url "; geoiplookup $url | sed 's/GeoIP Country Edition: \([A-Z ]\{2\}\).*/\1/';done;
[sudo] пароль для olej:
87.251.77.39 DE
y.zbin.eu SK
mima.localghost.org PH
sin.yuetau.net SG
193.93.119.42 UA
178.132.161.124 MD
88.210.3.30 NL

Или, по-хорошему, прямо в скритах сделать разрешения URL в IP, типа:
olej@nvme:~/2023/Yggdrasil$ dig +short -t A y.zbin.eu
77.247.225.234

newbie, 2023/11/13 14:41
Просто комментарий: с одним доменным именем может быть связано несколько IP-адресов и они могут располагаться в разных локациях...

Олег, 2023/11/13 13:38
2-й способ, с whois - вообще не годится для этих целей: whois сейчас для разных географических групп даёт разные форматы вывода! Вот для нескольких актуальных пиров версии 0.5:
olej@R420:~$ whois 87.251.77.39 | grep country
country: DE
country: GB
olej@R420:~$ whois y.zbin.eu | grep country
olej@R420:~$ whois sin.yuetau.net | grep country
olej@R420:~$ whois 178.132.161.124 | grep country
country: MD
Этот способ даст просто дезинформацию.

Только авторизованные участники могут оставлять комментарии.
yggdrasil/peers_countries.txt · Последнее изменение: 2023/10/10 18:06 — 127.0.0.1
 
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki