Note
Depuis la version 2.3.0, l'application inclut une découverte DNS client optionnelle
Juste un autre service « quelle est mon adresse IP », comprenant la géolocalisation, la vérification des ports ouverts TCP et les informations sur les en-têtes. Écrit dans un souci de hautes performances, il utilise gin qui utilise httprouter, un multiplexeur HTTP léger et hautes performances.
Jetez un œil à ifconfig.es, un site en direct utilisant whatismyip
et la DNS discovery
activée.
Obtenez facilement votre IP publique depuis la ligne de commande :
curl ifconfig.es
127.0.0.1
curl -6 ifconfig.es
::1
Obtenez l'IP de votre fournisseur DNS :
curl -L dns.ifconfig.es
2a04:e4c0:47::67 (Spain / OPENDNS)
-tls-bind
), car HTTP/3 démarre comme une connexion TLS qui est ensuite mise à niveau vers UDP. Le port UDP est le même que celui utilisé pour le serveur TLS.X-Real-IP
) pour déterminer l'adresse IP source. Il prend également en charge un en-tête personnalisé pour résoudre le port client, si le proxy ne peut ajouter qu'un en-tête pour l'IP (par exemple un en-tête fixe provenant des CDN), le port client est affiché comme inconnu.hup
est honoré.curl -H "Accept: application/json" https://ifconfig.es/
) La découverte DNS fonctionne en forçant le client à faire une requête à <uuid>.dns.ifconfig.es
Cette requête DNS est gérée par un serveur microdns inclus dans le binaire whatismyip
. Afin d'exécuter le serveur de découverte, un fichier de configuration sous la forme suivante doit être créé :
---
domain : dns.example.com
redirect_port : " :8000 "
resource_records :
- " 1800 IN SOA xns.example.com. hostmaster.example.com. 1 10000 2400 604800 1800 "
- " 3600 IN NS xns.example.com. "
ipv4 :
- " 127.0.0.2 "
ipv6 :
- " aaa:aaa:aaa:aaaa::1 "
L'autorité DNS pour example.com a délégué la zone de sous-domaine dns.example.com
au serveur exécutant le service whatismyip
.
Le client peut demander l'URL dns.example.com
en suivant la redirection curl -L dns.example.com
.
Pour éviter la redirection, vous pouvez fournir une URL valide, par exemple, pour le vrai ifconfig.es :
curl $( uuidgen ) .dns.ifconfig.es
curl $( cat /proc/sys/kernel/random/uuid ) .dns.ifconfig.es
Golang >= 1,22 est requis.
make build
Usage of whatismyip:
-bind string
Listening address (see https://pkg.go.dev/net?#Listen) (default ":8080")
-enable-http3
Enable HTTP/3 protocol. HTTP/3 requires --tls-bind set, as HTTP/3 starts as a TLS connection that then gets upgraded to UDP. The UDP port is the same as the one used for the TLS server.
-enable-secure-headers
Add sane security-related headers to every response
-geoip2-asn string
Path to GeoIP2 ASN database
-geoip2-city string
Path to GeoIP2 city database
-resolver string
Path to the resolver configuration. It actually enables the resolver for DNS client discovery.
-template string
Path to template file
-tls-bind string
Listening address for TLS (see https://pkg.go.dev/net?#Listen)
-tls-crt string
When using TLS, path to certificate file
-tls-key string
When using TLS, path to private key file
-trusted-header string
Trusted request header for remote IP (e.g. X-Real-IP). When using this feature if -trusted-port-header is not set the client port is shown as 'unknown'
-trusted-port-header string
Trusted request header for remote client port (e.g. X-Real-Port). When this parameter is set -trusted-header becomes mandatory
-version
Output version information and exit
./whatismyip -geoip2-city ./test/GeoIP2-City-Test.mmdb -geoip2-asn ./test/GeoLite2-ASN-Test.mmdb
./whatismyip -geoip2-city ./test/GeoIP2-City-Test.mmdb -geoip2-asn ./test/GeoLite2-ASN-Test.mmdb
-bind " " -tls-bind :8081 -tls-crt ./test/server.pem -tls-key ./test/server.key
-resolver ./test/resolver.yml
./whatismyip -geoip2-city ./test/GeoIP2-City-Test.mmdb -geoip2-asn ./test/GeoLite2-ASN-Test.mmdb
-bind " " -tls-bind :8081 -tls-crt ./test/server.pem -tls-key ./test/server.key -enable-http3
./whatismyip -geoip2-city ./test/GeoIP2-City-Test.mmdb -geoip2-asn ./test/GeoLite2-ASN-Test.mmdb
-trusted-header X-Real-IP -trusted-port-header X-Real-Port -template mytemplate.tmpl
Téléchargez la dernière version depuis github
Une image ultra-légère (~4 Mo) est disponible sur Docker Hub. Depuis la version 2.1.2
, le binaire est compressé à l'aide d'upx.
make docker-run
docker run --tty --interactive --rm
-v $PWD / < path to city database > :/tmp/GeoIP2-City-Test.mmdb:ro
-v $PWD / < path to ASN database > :/tmp/GeoLite2-ASN-Test.mmdb:ro -p 8080:8080
dcarrillo/whatismyip:latest
-geoip2-city /tmp/GeoIP2-City-Test.mmdb
-geoip2-asn /tmp/GeoLite2-ASN-Test.mmdb