С помощью нижеследующих команд можно определить, в каких странах находятся узлы, к которым вы подключены (или которые подключены к вам).
Примечание: в конфигурационном файле Yggdrasil должен быть задан параметр AdminListen
, отличный от none.
Примечание: не обрабатываются IPv6-адреса пиров.
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
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;
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
Обсуждение
tls://fi1.servers.devices.cwinfo.net:61995
tcp://s2.i2pd.xyz:39565
и т.д.
Вам может yggdrasilctl getPeers выбрасывать, скажем, 8 пиров, а эти скрипты геолокации будут показывать только 5 ...
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
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
Этот способ даст просто дезинформацию.