Catatan
Sejak versi 2.3.0, aplikasi menyertakan penemuan DNS klien opsional
Hanya layanan "apa alamat IP saya" lainnya, termasuk geolokasi, pemeriksaan port terbuka TCP, dan informasi header. Ditulis dengan mempertimbangkan kinerja tinggi, ia menggunakan gin yang menggunakan httprouter, multiplekser HTTP ringan berkinerja tinggi.
Lihatlah ifconfig.es situs langsung menggunakan whatismyip
dan DNS discovery
diaktifkan.
Dapatkan IP publik Anda dengan mudah dari baris perintah:
curl ifconfig.es
127.0.0.1
curl -6 ifconfig.es
::1
Dapatkan IP penyedia DNS Anda:
curl -L dns.ifconfig.es
2a04:e4c0:47::67 (Spain / OPENDNS)
-tls-bind
), karena HTTP/3 dimulai sebagai koneksi TLS yang kemudian ditingkatkan ke UDP. Port UDP sama dengan yang digunakan untuk server TLS.X-Real-IP
) untuk mengetahui alamat IP sumber. Ini juga mendukung header khusus untuk menyelesaikan port klien, jika proxy hanya dapat menambahkan header untuk IP (misalnya header tetap dari CDN), port klien ditampilkan sebagai tidak diketahui.hup
dihormati.curl -H "Accept: application/json" https://ifconfig.es/
) Penemuan DNS bekerja dengan memaksa klien untuk membuat permintaan ke <uuid>.dns.ifconfig.es
permintaan DNS ini ditangani oleh server mikrodns yang termasuk dalam biner whatismyip
. Untuk menjalankan server penemuan, file konfigurasi dalam bentuk berikut harus dibuat:
---
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 "
Otoritas DNS misalnya.com telah mendelegasikan zona subdomain dns.example.com
ke server yang menjalankan layanan whatismyip
.
Klien dapat meminta URL dns.example.com
dengan mengikuti pengalihan curl -L dns.example.com
.
Untuk menghindari pengalihan, Anda dapat memberikan URL yang valid, misalnya, untuk ifconfig.es yang sebenarnya:
curl $( uuidgen ) .dns.ifconfig.es
curl $( cat /proc/sys/kernel/random/uuid ) .dns.ifconfig.es
Golang >= 1,22 diperlukan.
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
Unduh versi terbaru dari github
Gambar ultra-ringan (~4MB) tersedia di hub buruh pelabuhan. Sejak versi 2.1.2
, biner dikompresi menggunakan 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