whatismyip
2.3.5
筆記
自版本 2.3.0 起,該應用程式包含可選的客戶端 DNS 發現
只是另一個「我的 IP 位址是什麼」服務,包括地理定位、TCP 開放埠檢查和標頭資訊。它是用 go 編寫的,考慮到高效能,它使用 gin,它使用 httprouter 一個輕量級高效能 HTTP 多路復用器。
看看 ifconfig.es,這是一個使用whatismyip
並啟用DNS discovery
即時網站。
從命令列輕鬆取得您的公共IP:
curl ifconfig.es
127.0.0.1
curl -6 ifconfig.es
::1
取得您的 DNS 提供者的 IP:
curl -L dns.ifconfig.es
2a04:e4c0:47::67 (Spain / OPENDNS)
-tls-bind
),因為 HTTP/3 會作為 TLS 連線啟動,然後升級為 UDP。 UDP 連接埠與 TLS 伺服器使用的連接埠相同。X-Real-IP
)在代理程式後面執行來找出來源 IP 位址。它還支援自訂標頭來解析客戶端端口,如果代理只能添加 IP 標頭(例如來自 CDN 的固定標頭),則客戶端端口將顯示為未知。hup
訊號受到尊重。curl -H "Accept: application/json" https://ifconfig.es/
相同)DNS 發現的工作原理是強制用戶端向<uuid>.dns.ifconfig.es
發出請求,此 DNS 請求由whatismyip
二進位檔案中包含的 microdns 伺服器處理。為了運行發現伺服器,必須建立以下形式的設定檔:
---
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 "
example.com 的 DNS 機構已將子網域區域dns.example.com
委託給執行whatismyip
服務的伺服器。
用戶端可以透過重定向curl -L dns.example.com
來請求URL dns.example.com
。
為了避免重定向,您可以提供一個有效的 URL,例如,對於真正的 ifconfig.es:
curl $( uuidgen ) .dns.ifconfig.es
curl $( cat /proc/sys/kernel/random/uuid ) .dns.ifconfig.es
需要 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
從github下載最新版本
docker hub 上提供了超輕量 (~4MB) 映像。從版本2.1.2
開始,二進位檔案使用 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