Nota
Desde la versión 2.3.0, la aplicación incluye un descubrimiento de DNS de cliente opcional.
Otro servicio más de "cuál es mi dirección IP", que incluye geolocalización, verificación de puertos TCP abiertos e información de encabezados. Escrito en go teniendo en cuenta el alto rendimiento, utiliza gin que utiliza httprouter, un multiplexor HTTP ligero de alto rendimiento.
Eche un vistazo a ifconfig.es, un sitio activo que utiliza whatismyip
y el DNS discovery
habilitado.
Obtén tu IP pública fácilmente desde la línea de comando:
curl ifconfig.es
127.0.0.1
curl -6 ifconfig.es
::1
Obtenga la IP de su proveedor de DNS:
curl -L dns.ifconfig.es
2a04:e4c0:47::67 (Spain / OPENDNS)
-tls-bind
), ya que HTTP/3 se inicia como una conexión TLS que luego se actualiza a UDP. El puerto UDP es el mismo que se utiliza para el servidor TLS.X-Real-IP
) para determinar la dirección IP de origen. También admite un encabezado personalizado para resolver el puerto del cliente; si el proxy solo puede agregar un encabezado para la IP (por ejemplo, un encabezado fijo de CDN), el puerto del cliente se muestra como desconocido.hup
.curl -H "Accept: application/json" https://ifconfig.es/
) El descubrimiento de DNS funciona obligando al cliente a realizar una solicitud a <uuid>.dns.ifconfig.es
Esta solicitud de DNS es manejada por un servidor microdns incluido en el binario whatismyip
. Para ejecutar el servidor de descubrimiento, se debe crear un archivo de configuración con el siguiente formato:
---
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 "
La autoridad DNS de ejemplo.com ha delegado la zona de subdominio dns.example.com
al servidor que ejecuta el servicio whatismyip
.
El cliente puede solicitar la URL dns.example.com
siguiendo la redirección curl -L dns.example.com
.
Para evitar la redirección, puedes proporcionar una URL válida, por ejemplo, para el ifconfig.es real:
curl $( uuidgen ) .dns.ifconfig.es
curl $( cat /proc/sys/kernel/random/uuid ) .dns.ifconfig.es
Se requiere Golang >= 1,22.
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
Descargue la última versión de github
Hay una imagen ultraligera (~4 MB) disponible en Docker Hub. Desde la versión 2.1.2
, el binario se comprime usando 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