Есть несколько обстоятельств, когда вам нужно знать 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»