Рубрики
Uncategorized

Получение вашего IP из любого места

Есть несколько обстоятельств, когда вам нужно знать IP -адрес вашей текущей машины. Это также может быть … Tagged с DevOps, Tuperial, Tooling, IP.

Есть несколько обстоятельств, когда вам нужно знать IP -адрес вашей текущей машины. Это также может быть программно через сценарий или Ansible Playbook.

Для этого вы можете Curl сайт, как ifconfig.co , Icanhazip.com , или даже myip.com (Вы должны проанализировать JSON, хотя). Например:

curl ifconfig.co

В случае AWS вы можете надежно Curl http://169.254.169.254/latest/meta-data/ Чтобы получить IPS и другую информацию в вашем текущем экземпляре. Подробнее там https://docs.aws.amazon.com/awsec2/latest/userguide/instancepaata-data-retieval.html

Хотя эти API бесплатны, они являются третьими сторонами и могут иметь пределы ставки API. Однажды они также могут исчезнуть или не функционировать, верно? Чтобы избежать какого -либо инцидента, мы хотим найти надежное решение, которое длится. И если это также может работать во внутренней сети без Интернета, это было бы идеально.

В этом случае я рекомендую вам создать новую конечную точку на любом домене, который вам нравится. И развернуть программное обеспечение с открытым исходным кодом за ifconfig.co: https://github.com/mpolden/echoip

Я сам развернул это, и это доступно здесь: https://ip.alvesdi.as Анкет

Вот как я это сделал. Сначала я вытащил изображение Docker:

docker pull mpolden/echoip

Затем, чтобы активировать геолокацию, я зашел на веб -сайт Maxmind здесь: https://dev.maxmind.com/geoip/geoip2/geolite2/ Подписался на бесплатную учетную запись и загрузил базы данных Geolite 2 для ASN, городов и стран. Я также сделал скрипт для автоматизации обновления моих баз данных ежедневно, используя мой лицензионный ключ. Вот сценарий, который я использую:

#!/bin/bash
LICENSE_KEY= # Fill your key
wget "https://download.maxmind.com/app/geoip_download?edition_id=GeoLite2-ASN&license_key=${LICENSE_KEY}&suffix=tar.gz" -O ASN.tar.gz
wget "https://download.maxmind.com/app/geoip_download?edition_id=GeoLite2-City&license_key=${LICENSE_KEY}&suffix=tar.gz" -O City.tar.gz
wget "https://download.maxmind.com/app/geoip_download?edition_id=GeoLite2-Country&license_key=${LICENSE_KEY}&suffix=tar.gz" -O Country.tar.gz

for file in *.tar.gz; do tar xzvf "${file}" --strip-components 1 && rm "${file}"; done

А потом вот как я запускаю контейнер:

docker run --name ip -p 8080:8080 -d -v ./GeoLite2-ASN.mmdb:/GeoLite2-ASN.mmdb -v ./GeoLite2-City.mmdb:/GeoLite2-City.mmdb -v ./GeoLite2-Country.mmdb:/GeoLite2-Country.mmdb --restart=unless-stopped mpolden/echoip -H "X-Real-IP" -a /GeoLite2-ASN.mmdb -c /GeoLite2-City.mmdb -f /GeoLite2-Country.mmdb

Я использую -H "x-real-IP" Потому что я размещаю его позади Nginx. К вашему сведению, вот моя конфигурация Nginx:

server {
    server_name ip.alvesdi.as;

    location / {
        proxy_set_header   X-Real-IP $remote_addr;
        proxy_set_header   Host      $http_host;
        proxy_pass         http://127.0.0.1:8080;
    }

    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/ip.alvesdi.as/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/ip.alvesdi.as/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

}
server {
    if ($host = ip.alvesdi.as) {
        return 301 https://$host$request_uri;
    } # managed by Certbot

    server_name ip.alvesdi.as;
    listen 80;
    return 404; # managed by Certbot
}

Вуаля, если вы сделали то же самое, теперь у вас также есть собственный надежный IP -сервис. Не стесняйтесь повторно использовать его во всех своих сценариях и Ansible Playbook.

фото Тарифы на Неспособный

Оригинал: «https://dev.to/sonny_ad/getting-your-ip-from-anywhere-2djh»